Tests for the Runtime.parse command.


== Running test suite: Runtime.parse
-- Running test case: SyntaxErrorType.None
PASS: Should be SyntaxErrorType None.
Source: 

PASS: Should be SyntaxErrorType None.
Source: ;

PASS: Should be SyntaxErrorType None.
Source: myVariable

PASS: Should be SyntaxErrorType None.
Source: var x = 1; x

PASS: Should be SyntaxErrorType None.
Source: [1,2,3]

PASS: Should be SyntaxErrorType None.
Source: ({})

PASS: Should be SyntaxErrorType None.
Source: ({prop:true}).x.x.x

PASS: Should be SyntaxErrorType None.
Source: if(1)1


-- Running test case: SyntaxErrorType.UnterminatedLiteral
PASS: Should be SyntaxErrorType UnterminatedLiteral.
Source: 0b
        ^
Error Message: No binary digits after '0b'
Range: {"startOffset":0,"endOffset":1}

PASS: Should be SyntaxErrorType UnterminatedLiteral.
Source: 0o
        ^
Error Message: No octal digits after '0o'
Range: {"startOffset":0,"endOffset":1}

PASS: Should be SyntaxErrorType UnterminatedLiteral.
Source: 0x
        ^
Error Message: No hexadecimal digits after '0x'
Range: {"startOffset":0,"endOffset":1}

PASS: Should be SyntaxErrorType UnterminatedLiteral.
Source: 1e
        ^~
Error Message: Non-number found after exponent indicator
Range: {"startOffset":0,"endOffset":2}

PASS: Should be SyntaxErrorType UnterminatedLiteral.
Source: '
        ^
Error Message: Unexpected EOF
Range: {"startOffset":0,"endOffset":1}

PASS: Should be SyntaxErrorType UnterminatedLiteral.
Source: "
        ^
Error Message: Unexpected EOF
Range: {"startOffset":0,"endOffset":1}

PASS: Should be SyntaxErrorType UnterminatedLiteral.
Source: var \u007
            ^~~~~
Error Message: Incomplete unicode escape in identifier: '\u007'
Range: {"startOffset":4,"endOffset":9}


-- Running test case: SyntaxErrorType.Recoverable
PASS: Should be SyntaxErrorType Recoverable.
Source: (
        ^
Error Message: Unexpected end of script
Error Range: {"startOffset":0,"endOffset":1}

PASS: Should be SyntaxErrorType Recoverable.
Source: {
        ^
Error Message: Unexpected end of script
Error Range: {"startOffset":0,"endOffset":1}

PASS: Should be SyntaxErrorType Recoverable.
Source: !
        ^
Error Message: Unexpected end of script
Error Range: {"startOffset":0,"endOffset":1}

PASS: Should be SyntaxErrorType Recoverable.
Source: -
        ^
Error Message: Unexpected end of script
Error Range: {"startOffset":0,"endOffset":1}

PASS: Should be SyntaxErrorType Recoverable.
Source: +
        ^
Error Message: Unexpected end of script
Error Range: {"startOffset":0,"endOffset":1}

PASS: Should be SyntaxErrorType Recoverable.
Source: ~
        ^
Error Message: Unexpected end of script
Error Range: {"startOffset":0,"endOffset":1}

PASS: Should be SyntaxErrorType Recoverable.
Source: 1,
         ^
Error Message: Unexpected end of script
Error Range: {"startOffset":1,"endOffset":2}

PASS: Should be SyntaxErrorType Recoverable.
Source: var
        ^~~
Error Message: Unexpected end of script
Error Range: {"startOffset":0,"endOffset":3}

PASS: Should be SyntaxErrorType Recoverable.
Source: 'use strict'; let
                      ^~~
Error Message: Unexpected end of script
Error Range: {"startOffset":14,"endOffset":17}

PASS: Should be SyntaxErrorType Recoverable.
Source: const
        ^~~~~
Error Message: Unexpected end of script
Error Range: {"startOffset":0,"endOffset":5}

PASS: Should be SyntaxErrorType Recoverable.
Source: var {x
             ^
Error Message: Unexpected end of script
Error Range: {"startOffset":5,"endOffset":6}

PASS: Should be SyntaxErrorType Recoverable.
Source: var [x
             ^
Error Message: Unexpected end of script
Error Range: {"startOffset":5,"endOffset":6}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x,
             ^
Error Message: Unexpected end of script
Error Range: {"startOffset":5,"endOffset":6}

PASS: Should be SyntaxErrorType Recoverable.
Source: if(1)
            ^
Error Message: Unexpected end of script
Error Range: {"startOffset":4,"endOffset":5}

PASS: Should be SyntaxErrorType Recoverable.
Source: if(1){
             ^
Error Message: Unexpected end of script
Error Range: {"startOffset":5,"endOffset":6}

PASS: Should be SyntaxErrorType Recoverable.
Source: if(1){}else
               ^~~~
Error Message: Unexpected end of script
Error Range: {"startOffset":7,"endOffset":11}

PASS: Should be SyntaxErrorType Recoverable.
Source: if(1){}else{
                   ^
Error Message: Unexpected end of script
Error Range: {"startOffset":11,"endOffset":12}

PASS: Should be SyntaxErrorType Recoverable.
Source: while(1)
               ^
Error Message: Unexpected end of script
Error Range: {"startOffset":7,"endOffset":8}

PASS: Should be SyntaxErrorType Recoverable.
Source: while(1){
                ^
Error Message: Unexpected end of script
Error Range: {"startOffset":8,"endOffset":9}

PASS: Should be SyntaxErrorType Recoverable.
Source: for(;;)
              ^
Error Message: Unexpected end of script
Error Range: {"startOffset":6,"endOffset":7}

PASS: Should be SyntaxErrorType Recoverable.
Source: for(;;){
               ^
Error Message: Unexpected end of script
Error Range: {"startOffset":7,"endOffset":8}

PASS: Should be SyntaxErrorType Recoverable.
Source: ()=>
          ^~
Error Message: Unexpected end of script
Error Range: {"startOffset":2,"endOffset":4}

PASS: Should be SyntaxErrorType Recoverable.
Source: ()=>{
            ^
Error Message: Unexpected end of script
Error Range: {"startOffset":4,"endOffset":5}

PASS: Should be SyntaxErrorType Recoverable.
Source: /*
        ^~
Error Message: Multiline comment was not closed properly
Error Range: {"startOffset":0,"endOffset":2}

PASS: Should be SyntaxErrorType Recoverable.
Source: `
        ^
Error Message: Unexpected EOF
Error Range: {"startOffset":0,"endOffset":1}

PASS: Should be SyntaxErrorType Recoverable.
Source: `${1}
            ^
Error Message: Unexpected EOF
Error Range: {"startOffset":4,"endOffset":5}

PASS: Should be SyntaxErrorType Recoverable.
Source: `${
        ^~~
Error Message: Unexpected end of script
Error Range: {"startOffset":0,"endOffset":3}

PASS: Should be SyntaxErrorType Recoverable.
Source: function
        ^~~~~~~~
Error Message: Unexpected end of script
Error Range: {"startOffset":0,"endOffset":8}

PASS: Should be SyntaxErrorType Recoverable.
Source: function foo
                 ^~~
Error Message: Unexpected end of script
Error Range: {"startOffset":9,"endOffset":12}

PASS: Should be SyntaxErrorType Recoverable.
Source: function foo(
                    ^
Error Message: Unexpected end of script
Error Range: {"startOffset":12,"endOffset":13}

PASS: Should be SyntaxErrorType Recoverable.
Source: function foo(){
                      ^
Error Message: Unexpected end of script
Error Range: {"startOffset":14,"endOffset":15}

PASS: Should be SyntaxErrorType Recoverable.
Source: (function() {
                    ^
Error Message: Unexpected end of script
Error Range: {"startOffset":12,"endOffset":13}

PASS: Should be SyntaxErrorType Recoverable.
Source: (function() {}
                     ^
Error Message: Unexpected end of script
Error Range: {"startOffset":13,"endOffset":14}

PASS: Should be SyntaxErrorType Recoverable.
Source: (function() {})(
                       ^
Error Message: Unexpected end of script
Error Range: {"startOffset":15,"endOffset":16}

PASS: Should be SyntaxErrorType Recoverable.
Source: switch(x)
                ^
Error Message: Unexpected end of script
Error Range: {"startOffset":8,"endOffset":9}

PASS: Should be SyntaxErrorType Recoverable.
Source: switch(x){
                 ^
Error Message: Unexpected end of script
Error Range: {"startOffset":9,"endOffset":10}

PASS: Should be SyntaxErrorType Recoverable.
Source: switch(x){case
                  ^~~~
Error Message: Unexpected end of script
Error Range: {"startOffset":10,"endOffset":14}

PASS: Should be SyntaxErrorType Recoverable.
Source: switch(x){case 1
                       ^
Error Message: Unexpected end of script
Error Range: {"startOffset":15,"endOffset":16}

PASS: Should be SyntaxErrorType Recoverable.
Source: switch(x){case 1:
                        ^
Error Message: Unexpected end of script
Error Range: {"startOffset":16,"endOffset":17}

PASS: Should be SyntaxErrorType Recoverable.
Source: class
        ^~~~~
Error Message: Unexpected end of script
Error Range: {"startOffset":0,"endOffset":5}

PASS: Should be SyntaxErrorType Recoverable.
Source: class Klass
              ^~~~~
Error Message: Unexpected end of script
Error Range: {"startOffset":6,"endOffset":11}

PASS: Should be SyntaxErrorType Recoverable.
Source: class Klass {
                    ^
Error Message: Unexpected end of script
Error Range: {"startOffset":12,"endOffset":13}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = {
                ^
Error Message: Unexpected end of script
Error Range: {"startOffset":8,"endOffset":9}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = {prop
                 ^~~~
Error Message: Unexpected end of script
Error Range: {"startOffset":9,"endOffset":13}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = {prop:
                     ^
Error Message: Unexpected end of script
Error Range: {"startOffset":13,"endOffset":14}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = {prop:123
                      ^~~
Error Message: Unexpected end of script
Error Range: {"startOffset":14,"endOffset":17}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = {prop:123 
                      ^~~
Error Message: Unexpected end of script
Error Range: {"startOffset":14,"endOffset":17}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = {prop:123,
                         ^
Error Message: Unexpected end of script
Error Range: {"startOffset":17,"endOffset":18}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = {prop:123, 
                         ^
Error Message: Unexpected end of script
Error Range: {"startOffset":17,"endOffset":18}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = {prop:123, 'prop2'
                           ^~~~~~~
Error Message: Unexpected end of script
Error Range: {"startOffset":19,"endOffset":26}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = {prop:123, [12
                            ^~
Error Message: Unexpected end of script
Error Range: {"startOffset":20,"endOffset":22}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = {prop:123, [12]
                              ^
Error Message: Unexpected end of script
Error Range: {"startOffset":22,"endOffset":23}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = {prop:123, [12]:
                               ^
Error Message: Unexpected end of script
Error Range: {"startOffset":23,"endOffset":24}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = {prop:123, [12]:567
                                ^~~
Error Message: Unexpected end of script
Error Range: {"startOffset":24,"endOffset":27}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = [
                ^
Error Message: Unexpected end of script
Error Range: {"startOffset":8,"endOffset":9}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = [1
                 ^
Error Message: Unexpected end of script
Error Range: {"startOffset":9,"endOffset":10}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = [1,
                  ^
Error Message: Unexpected end of script
Error Range: {"startOffset":10,"endOffset":11}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = [1,[]
                    ^
Error Message: Unexpected end of script
Error Range: {"startOffset":12,"endOffset":13}

PASS: Should be SyntaxErrorType Recoverable.
Source: var x = [1,{}
                    ^
Error Message: Unexpected end of script
Error Range: {"startOffset":12,"endOffset":13}


-- Running test case: SyntaxErrorType.Irrecoverable
PASS: Should be SyntaxErrorType Irrecoverable.
Source: 1$
        ^
Error Message: No identifiers allowed directly after numeric literal
Error Range: {"startOffset":0,"endOffset":1}

PASS: Should be SyntaxErrorType Irrecoverable.
Source: var x = {}}
                  ^
Error Message: Parser error
Error Range: {"startOffset":10,"endOffset":11}

PASS: Should be SyntaxErrorType Irrecoverable.
Source: ({}))
            ^
Error Message: Unexpected token ')'. Parse error.
Error Range: {"startOffset":4,"endOffset":5}

PASS: Should be SyntaxErrorType Irrecoverable.
Source: var x = =
                ^
Error Message: Unexpected token '='
Error Range: {"startOffset":8,"endOffset":9}

PASS: Should be SyntaxErrorType Irrecoverable.
Source: const x;
               ^
Error Message: Unexpected token ';'. const declared variable 'x' must have an initializer.
Error Range: {"startOffset":7,"endOffset":8}

PASS: Should be SyntaxErrorType Irrecoverable.
Source: let x = 1; let x = 2;
                         ^
Error Message: Cannot declare a let variable twice: 'x'.
Error Range: {"startOffset":17,"endOffset":18}

PASS: Should be SyntaxErrorType Irrecoverable.
Source: if x(1)
           ^
Error Message: Unexpected identifier 'x'. Expected '(' to start an 'if' condition.
Error Range: {"startOffset":3,"endOffset":4}


