App-Mxpress-PDF
view release on metacpan or search on metacpan
public/javascripts/ace/worker-javascript.js view on Meta::CPAN
stmt("debugger", function() {
if (!state.option.debug) {
warning("W087", this);
}
return this;
}).exps = true;
(function() {
var x = stmt("do", function() {
state.funct["(breakage)"] += 1;
state.funct["(loopage)"] += 1;
increaseComplexityCount();
this.first = block(true, true);
advance("while");
var t = state.tokens.next;
advance("(");
checkCondAssignment(expression(0));
advance(")", t);
state.funct["(breakage)"] -= 1;
state.funct["(loopage)"] -= 1;
return this;
});
x.labelled = true;
x.exps = true;
}());
blockstmt("for", function() {
var s, t = state.tokens.next;
var letscope = false;
var foreachtok = null;
if (t.value === "each") {
foreachtok = t;
advance("each");
if (!state.inMoz()) {
warning("W118", state.tokens.curr, "for each");
}
}
increaseComplexityCount();
advance("(");
var nextop; // contains the token of the "in" or "of" operator
var i = 0;
var inof = ["in", "of"];
var level = 0; // BindingPattern "level" --- level 0 === no BindingPattern
var comma; // First comma punctuator at level 0
var initializer; // First initializer at level 0
if (checkPunctuators(state.tokens.next, ["{", "["])) ++level;
do {
nextop = peek(i);
++i;
if (checkPunctuators(nextop, ["{", "["])) ++level;
else if (checkPunctuators(nextop, ["}", "]"])) --level;
if (level < 0) break;
if (level === 0) {
if (!comma && checkPunctuator(nextop, ",")) comma = nextop;
else if (!initializer && checkPunctuator(nextop, "=")) initializer = nextop;
}
} while (level > 0 || !_.contains(inof, nextop.value) && nextop.value !== ";" &&
nextop.type !== "(end)"); // Is this a JSCS bug? This looks really weird.
if (_.contains(inof, nextop.value)) {
if (!state.inES6() && nextop.value === "of") {
warning("W104", nextop, "for of", "6");
}
var ok = !(initializer || comma);
if (initializer) {
error("W133", comma, nextop.value, "initializer is forbidden");
}
if (comma) {
error("W133", comma, nextop.value, "more than one ForBinding");
}
if (state.tokens.next.id === "var") {
advance("var");
state.tokens.curr.fud({ prefix: true });
} else if (state.tokens.next.id === "let" || state.tokens.next.id === "const") {
advance(state.tokens.next.id);
letscope = true;
state.funct["(scope)"].stack();
state.tokens.curr.fud({ prefix: true });
} else {
Object.create(varstatement).fud({ prefix: true, implied: "for", ignore: !ok });
}
advance(nextop.value);
expression(20);
advance(")", t);
if (nextop.value === "in" && state.option.forin) {
state.forinifcheckneeded = true;
if (state.forinifchecks === undefined) {
state.forinifchecks = [];
}
state.forinifchecks.push({
type: "(none)"
});
}
state.funct["(breakage)"] += 1;
state.funct["(loopage)"] += 1;
s = block(true, true);
if (nextop.value === "in" && state.option.forin) {
if (state.forinifchecks && state.forinifchecks.length > 0) {
var check = state.forinifchecks.pop();
if (// No if statement or not the first statement in loop body
s && s.length > 0 && (typeof s[0] !== "object" || s[0].value !== "if") ||
check.type === "(positive)" && s.length > 1 ||
check.type === "(negative)") {
warning("W089", this);
}
}
state.forinifcheckneeded = false;
}
state.funct["(breakage)"] -= 1;
( run in 0.699 second using v1.01-cache-2.11-cpan-39bf76dae61 )