Commit 5c47f4a2 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

jscript: Added labelled statements tests.

parent 4aec6b10
......@@ -1980,6 +1980,8 @@ var exception_array = {
E_DISABLED_CC: { type: "SyntaxError", number: -2146827258 },
E_INVALID_BREAK: { type: "SyntaxError", number: -2146827269 },
E_INVALID_CONTINUE: { type: "SyntaxError", number: -2146827268 },
E_LABEL_NOT_FOUND: { type: "SyntaxError", number: -2146827262 },
E_LABEL_REDEFINED: { type: "SyntaxError", number: -2146827263 },
E_ILLEGAL_ASSIGN: { type: "ReferenceError", number: -2146823280 },
......@@ -2088,6 +2090,11 @@ testSyntaxError("@a", "E_DISABLED_CC");
testSyntaxError("/* @cc_on @*/ @_jscript_version", "E_DISABLED_CC");
testSyntaxError("ok(false, 'unexpected execution'); break;", "E_INVALID_BREAK");
testSyntaxError("ok(false, 'unexpected execution'); continue;", "E_INVALID_CONTINUE");
testSyntaxError("ok(false, 'unexpected execution'); while(true) break unknown_label;", "E_LABEL_NOT_FOUND");
testSyntaxError("ok(false, 'unexpected execution'); some_label: continue some_label;", "E_INVALID_CONTINUE");
testSyntaxError("ok(false, 'unexpected execution'); while(true) continue some_label;", "E_LABEL_NOT_FOUND");
testSyntaxError("ok(false, 'unexpected execution'); some_label: { while(true) continue some_label; }", "E_INVALID_CONTINUE");
testSyntaxError("ok(false, 'unexpected execution'); some_label: { some_label: while(true); }", "E_LABEL_REDEFINED");
// ReferenceError tests
testException(function() {test = function() {}}, "E_ILLEGAL_ASSIGN");
......
......@@ -920,6 +920,61 @@ for(var iter in [1,2,3]) {
}
ok(tmp, "tmp = " + tmp);
loop_label:
while(true) {
while(true)
break loop_label;
}
loop_label: {
tmp = 0;
while(true) {
while(true)
break loop_label;
}
ok(false, "unexpected evaluation 1");
}
while(true) {
some_label: break;
ok(false, "unexpected evaluation 2");
}
just_label: tmp = 1;
ok(tmp === 1, "tmp != 1");
some_label: break some_label;
other_label: {
break other_label;
ok(false, "unexpected evaluation 3");
}
loop_label:
do {
while(true)
continue loop_label;
}while(false);
loop_label:
for(i = 0; i < 3; i++) {
while(true)
continue loop_label;
}
loop_label:
other_label:
for(i = 0; i < 3; i++) {
while(true)
continue loop_label;
}
loop_label:
for(tmp in {prop: false}) {
while(true)
continue loop_label;
}
ok((void 1) === undefined, "(void 1) !== undefined");
var inobj = new Object();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment