Test to ensure correct handling of --> as a single line comment when at the beginning of a line or preceeded by a multi-line comment

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


PASS 'should be a syntax error' --> threw exception SyntaxError: Unexpected end of script.
PASS /**/ 1--> threw exception SyntaxError: Unexpected end of script.
PASS /**/ 1 --> threw exception SyntaxError: Unexpected end of script.
PASS 1 /**/--> threw exception SyntaxError: Unexpected end of script.
PASS 1 /**/ --> threw exception SyntaxError: Unexpected end of script.
PASS 1/*
*/--> is 1
PASS 1/*
*/
--> is 1
PASS 2/*
*/ --> is 2
PASS 2/*
*/
 --> is 2
PASS --> is undefined.
PASS  --> is undefined.
PASS /**/--> is undefined.
PASS /*
*/--> is undefined.
PASS successfullyParsed is true

TEST COMPLETE

