KDE JS Test

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS function test() { return;}; lab: 1 is 1
PASS function test() { while(0) break; } lab: 1 is 1
PASS function test() { while(0) continue; } lab: 1 is 1
PASS function test() { return lab;} lab: 1 is 1
PASS function test() { while(0) break lab; } lab: 1 threw exception SyntaxError: Cannot use the undeclared label 'lab'..
PASS function test() { while(0) continue lab; } lab: 1 threw exception SyntaxError: Cannot use the undeclared label 'lab'..
PASS function test() { return } lab: 1 is 1
PASS function test() { while(0) break } lab: 1 is 1
PASS function test() { while(0) continue } lab: 1 is 1
PASS function test() { return 0 } lab: 1 is 1
PASS function test() { while(0) break lab } lab: 1 threw exception SyntaxError: Cannot use the undeclared label 'lab'..
PASS function test() { while(0) continue lab } lab: 1 threw exception SyntaxError: Cannot use the undeclared label 'lab'..
PASS var éĀʯΈᢨ = 101; éĀʯΈᢨ; is 101
PASS var f÷; threw exception SyntaxError: Invalid character '\u00f7'.
PASS var \u0061 = 102; a is 102
PASS var f\u0030 = 103; f0 is 103
PASS var \u00E9\u0100\u02AF\u0388\u18A8 = 104; \u00E9\u0100\u02AF\u0388\u18A8; is 104
PASS var f\u00F7; threw exception SyntaxError: Invalid unicode escape in identifier: 'f\u00F7'.
PASS var \u0030; threw exception SyntaxError: Invalid unicode escape in identifier: '\u0030'.
PASS var test = { }; test.i= 0; test.i\u002b= 1; test.i; threw exception SyntaxError: Invalid unicode escape in identifier: 'i\u002b'.
PASS var test = { }; test.i= 0; test.i+= 1; test.i; is 1
PASS successfullyParsed is true

TEST COMPLETE

