This test exercises the source expression offset information that is attached to exception objects for the inspector.

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



Testing 'undefined.a++'
PASS ex.message is "undefined is not an object (evaluating 'undefined.a')"

Testing '++undefined.a'
PASS ex.message is "undefined is not an object (evaluating 'undefined.a')"

Testing 'undefined[0]++'
PASS ex.message is "undefined is not an object (evaluating 'undefined[0]')"

Testing '++undefined[1]'
PASS ex.message is "undefined is not an object (evaluating 'undefined[1]')"

Testing 'undefined.b'
PASS ex.message is "undefined is not an object (evaluating 'undefined.b')"

Testing 'undefined[0]'
PASS ex.message is "undefined is not an object (evaluating 'undefined[0]')"

Testing 'undefined.b += 1'
PASS ex.message is "undefined is not an object (evaluating 'undefined.b')"

Testing 'undefined[0] += 1'
PASS ex.message is "undefined is not an object (evaluating 'undefined[0]')"

Testing 'undefined()'
PASS ex.message is "undefined is not a function. (In 'undefined()', 'undefined' is undefined)"

Testing 'new undefined()'
PASS ex.message is "undefined is not a constructor (evaluating 'new undefined()')"

Testing '({}).b()'
PASS ex.message is "({}).b is not a function. (In '({}).b()', '({}).b' is undefined)"

Testing 'new {}.b()'
PASS ex.message is "undefined is not a constructor (evaluating 'new {}.b()')"

Testing '1()'
PASS ex.message is "1 is not a function. (In '1()', '1' is 1)"

Testing 'new 1()'
PASS ex.message is "1 is not a constructor (evaluating 'new 1()')"

Testing 'throw { message : 'thrown object' }'
PASS ex.message is "thrown object"

Testing '1 in undefined'
PASS ex.message is "undefined is not an Object. (evaluating '1 in undefined')"

Testing '1 instanceof undefined'
PASS ex.message is "Right hand side of instanceof is not an object"

Testing 'for (undefined.b in [1]) {}'
PASS ex.message is "undefined is not an object (evaluating 'undefined.b')"

Testing 'for (undefined[0] in [1]) {}'
PASS ex.message is "undefined is not an object (evaluating 'undefined[0]')"

Testing 'undefined.a = 5'
PASS ex.message is "undefined is not an object (evaluating 'undefined.a = 5')"

Testing 'undefined[0] = 5'
PASS ex.message is "undefined is not an object (evaluating 'undefined[0] = 5')"

Testing '({b:undefined}).b.a = 5'
PASS ex.message is "undefined is not an object (evaluating '({b:undefined}).b.a = 5')"

Testing '({b:undefined}).b[0] = 5'
PASS ex.message is "undefined is not an object (evaluating '({b:undefined}).b[0] = 5')"

Testing 'undefined.a += 5'
PASS ex.message is "undefined is not an object (evaluating 'undefined.a')"

Testing 'undefined[0] += 5'
PASS ex.message is "undefined is not an object (evaluating 'undefined[0]')"

Testing '({b:undefined}).b.a += 5'
PASS ex.message is "undefined is not an object (evaluating '({b:undefined}).b.a')"

Testing '({b:undefined}).b[0] += 5'
PASS ex.message is "undefined is not an object (evaluating '({b:undefined}).b[0]')"

Testing '[].a.b.x'
PASS ex.message is "undefined is not an object (evaluating '[].a.b')"

Testing '[]['a']['b'].x'
PASS ex.message is "undefined is not an object (evaluating '[]['a']['b']')"

Testing '[].a['b'].x'
PASS ex.message is "undefined is not an object (evaluating '[].a['b']')"

Testing '[]['a'].b.x'
PASS ex.message is "undefined is not an object (evaluating '[]['a'].b')"

Testing 'func(undefined.x)'
PASS ex.message is "undefined is not an object (evaluating 'undefined.x')"

Testing 'func(null.x)'
PASS ex.message is "null is not an object (evaluating 'null.x')"

Testing 'func(undefined[0])'
PASS ex.message is "undefined is not an object (evaluating 'undefined[0]')"

Testing 'func(null[0])'
PASS ex.message is "null is not an object (evaluating 'null[0]')"
PASS successfullyParsed is true

TEST COMPLETE

