1fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// Copyright 2013 the V8 project authors. All rights reserved. 2fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 3fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// 4fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// Redistribution and use in source and binary forms, with or without 5fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// modification, are permitted provided that the following conditions 6fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// are met: 7fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// 1. Redistributions of source code must retain the above copyright 8fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// notice, this list of conditions and the following disclaimer. 9fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// 2. Redistributions in binary form must reproduce the above copyright 10fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// notice, this list of conditions and the following disclaimer in the 11fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// documentation and/or other materials provided with the distribution. 12fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// 13fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY 14fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 15fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 16fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY 17fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 18fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 19fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 20fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 22fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 24fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgdescription( 25fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org"This test checks that the following expressions or statements are valid ECMASCRIPT code or should throw parse error" 26fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org); 27fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 28fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgfunction runTest(_a, errorType) 29fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org{ 30fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org var success; 31fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org if (typeof _a != "string") 32fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org testFailed("runTest expects string argument: " + _a); 33fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org try { 34fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org eval(_a); 35fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org success = true; 36fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org } catch (e) { 37fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org success = !(e instanceof SyntaxError); 38fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org } 39fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org if ((!!errorType) == !success) { 40fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org if (errorType) 41fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org testPassed('Invalid: "' + _a + '"'); 42fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org else 43fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org testPassed('Valid: "' + _a + '"'); 44fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org } else { 45fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org if (errorType) 46fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org testFailed('Invalid: "' + _a + '" should throw ' + errorType.name); 47fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org else 48fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org testFailed('Valid: "' + _a + '" should NOT throw '); 49fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org } 50fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org} 51fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 52fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgfunction valid(_a) 53fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org{ 54fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org // Test both the grammar and the syntax checker 55fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org runTest(_a, false); 56fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org runTest("function f() { " + _a + " }", false); 57fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org} 58fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 59fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgfunction invalid(_a, _type) 60fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org{ 61fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org _type = _type || SyntaxError; 62fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org // Test both the grammar and the syntax checker 63fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org runTest(_a, true); 64fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org runTest("function f() { " + _a + " }", true); 65fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org} 66fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 67fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// known issue: 68fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// some statements requires statement as argument, and 69fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// it seems the End-Of-File terminator is converted to semicolon 70fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// "a:[EOF]" is not parse error, while "{ a: }" is parse error 71fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// "if (a)[EOF]" is not parse error, while "{ if (a) }" is parse error 72fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// known issues of bison parser: 73fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// accepts: 'function f() { return 6 + }' (only inside a function declaration) 74fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// some comma expressions: see reparsing-semicolon-insertion.js 75fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 76fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgdebug ("Unary operators and member access"); 77fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 78fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid (""); 79fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("(a"); 80fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a[5"); 81fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a[5 + 6"); 82fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a."); 83fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("()"); 84fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a.'l'"); 85fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("a: +~!new a"); 86fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("new -a"); 87fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("new (-1)") 88fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("a: b: c: new f(x++)++") 89fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("(a)++"); 90fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("(1--).x"); 91fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a-- ++"); 92fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("(a:) --b"); 93fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("++ -- ++ a"); 94fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("++ new new a ++"); 95fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("delete void 0"); 96fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("delete the void"); 97fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("(a++"); 98fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("++a--"); 99fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("++((a))--"); 100fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("(a.x++)++"); 101fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("1: null"); 102fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("+-!~"); 103fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("+-!~(("); 104fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a)"); 105fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a]"); 106fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid(".l"); 107fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("1.l"); 108fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("1 .l"); 109fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 110fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgdebug ("Binary and conditional operators"); 111fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 112fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("a + + typeof this"); 113fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a + * b"); 114fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a ? b"); 115fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a ? b :"); 116fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("%a"); 117fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a-"); 118fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("a = b ? b = c : d = e"); 119fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("s: a[1].l ? b.l['s'] ? c++ : d : true"); 120fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("a ? b + 1 ? c + 3 * d.l : d[5][6] : e"); 121fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("a in b instanceof delete -c"); 122fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a in instanceof b.l"); 123fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("- - true % 5"); 124fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("- false = 3"); 125fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("a: b: c: (1 + null) = 3"); 126fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("a[2] = b.l += c /= 4 * 7 ^ !6"); 127fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a + typeof b += c in d"); 128fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("typeof a &= typeof b"); 129fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("a: ((typeof (a))) >>>= a || b.l && c"); 130fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("a: b: c[a /= f[a %= b]].l[c[x] = 7] -= a ? b <<= f : g"); 131fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("-void+x['y'].l == x.l != 5 - f[7]"); 132fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 133fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgdebug ("Function calls (and new with arguments)"); 134fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 135fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("a()()()"); 136fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("s: l: a[2](4 == 6, 5 = 6)(f[4], 6)"); 137fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("s: eval(a.apply(), b.call(c[5] - f[7]))"); 138fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a("); 139fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a(5"); 140fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a(5,"); 141fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a(5,)"); 142fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a(5,6"); 143fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("a(b[7], c <d> e.l, new a() > b)"); 144fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a(b[5)"); 145fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a(b.)"); 146fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("~new new a(1)(i++)(c[l])"); 147fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a(*a)"); 148fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("((((a))((b)()).l))()"); 149fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("(a)[b + (c) / (d())].l--"); 150fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("new (5)"); 151fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("new a(5"); 152fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("new (f + 5)(6, (g)() - 'l'() - true(false))"); 153fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a(.length)"); 154fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 155fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgdebug ("function declaration and expression"); 156fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 157fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("function f() {}"); 158fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("function f(a,b) {}"); 159fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("function () {}"); 160fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("function f(a b) {}"); 161fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("function f(a,) {}"); 162fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("function f(a,"); 163fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("function f(a, 1) {}"); 164fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("function g(arguments, eval) {}"); 165fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("function f() {} + function g() {}"); 166fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("(function a{})"); 167fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("(function this(){})"); 168fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("(delete new function f(){} + function(a,b){}(5)(6))"); 169fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("6 - function (m) { function g() {} }"); 170fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("function l() {"); 171fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("function l++(){}"); 172fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 173fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgdebug ("Array and object literal, comma operator"); 174fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 175fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// Note these are tested elsewhere, no need to repeat those tests here 176fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("[] in [5,6] * [,5,] / [,,5,,] || [a,] && new [,b] % [,,]"); 177fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("[5,"); 178fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("[,"); 179fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("(a,)"); 180fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("1 + {get get(){}, set set(a){}, get1:4, set1:get-set, }"); 181fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("1 + {a"); 182fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("1 + {a:"); 183fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("1 + {get l("); 184fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid(",a"); 185fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("(4,(5,a(3,4))),f[4,a-6]"); 186fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("(,f)"); 187fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a,,b"); 188fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("a ? b, c : d"); 189fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 190fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgdebug ("simple statements"); 191fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 192fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("{ }"); 193fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("{ { }"); 194fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("{ ; ; ; }"); 195fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("a: { ; }"); 196fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("{ a: }"); 197fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("{} f; { 6 + f() }"); 198fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("{ a[5],6; {} ++b-new (-5)() } c().l++"); 199fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("{ l1: l2: l3: { this } a = 32 ; { i++ ; { { { } } ++i } } }"); 200fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("if (a) ;"); 201fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("{ if (a) }"); 202fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("if a {}"); 203fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("if (a"); 204fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("if (a { }"); 205fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("x: s: if (a) ; else b"); 206fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("else {}"); 207fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("if (a) if (b) y; else {} else ;"); 208fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("if (a) {} else x; else"); 209fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("if (a) { else }"); 210fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("if (a.l + new b()) 4 + 5 - f()"); 211fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("if (a) with (x) ; else with (y) ;"); 212fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("with a.b { }"); 213fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("while (a() - new b) ;"); 214fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("while a {}"); 215fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("do ; while(0) i++"); // Is this REALLY valid? (Firefox also accepts this) 216fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("do if (a) x; else y; while(z)"); 217fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("do g; while 4"); 218fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("do g; while ((4)"); 219fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("{ { do do do ; while(0) while(0) while(0) } }"); 220fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("do while (0) if (a) {} else y; while(0)"); 221fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("if (a) while (b) if (c) with(d) {} else e; else f"); 222fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("break ; break your_limits ; continue ; continue living ; debugger"); 223fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("debugger X"); 224fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("break 0.2"); 225fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("continue a++"); 226fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("continue (my_friend)"); 227fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("while (1) break"); 228fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("do if (a) with (b) continue; else debugger; while (false)"); 229fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("do if (a) while (false) else debugger"); 230fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("while if (a) ;"); 231fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("if (a) function f() {} else function g() {}"); 232fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("if (a()) while(0) function f() {} else function g() {}"); 233fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("if (a()) function f() { else function g() }"); 234fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("if (a) if (b) ; else function f {}"); 235fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("if (a) if (b) ; else function (){}"); 236fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("throw a"); 237fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("throw a + b in void c"); 238fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("throw"); 239fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 240fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgdebug ("var and const statements"); 241fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 242fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("var a, b = null"); 243fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("const a = 5, b, c"); 244fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var"); 245fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var = 7"); 246fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var c (6)"); 247fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("if (a) var a,b; else const b, c"); 248fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var 5 = 6"); 249fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("while (0) var a, b, c=6, d, e, f=5*6, g=f*h, h"); 250fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var a = if (b) { c }"); 251fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var a = var b"); 252fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("const a = b += c, a, a, a = (b - f())"); 253fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var a %= b | 5"); 254fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var (a) = 5"); 255fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var a = (4, b = 6"); 256fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("const 'l' = 3"); 257fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var var = 3"); 258fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("var varr = 3 in 1"); 259fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("const a, a, a = void 7 - typeof 8, a = 8"); 260fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("const x_x = 6 /= 7 ? e : f"); 261fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var a = ?"); 262fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("const a = *7"); 263fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var a = :)"); 264fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("var a = a in b in c instanceof d"); 265fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var a = b ? c, b"); 266fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("const a = b : c"); 267fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 268fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgdebug ("for statement"); 269fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 270fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for ( ; ; ) { break }"); 271fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for ( a ; ; ) { break }"); 272fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for ( ; a ; ) { break }"); 273fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for ( ; ; a ) { break }"); 274fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for ( a ; a ; ) break"); 275fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for ( a ; ; a ) break"); 276fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for ( ; a ; a ) break"); 277fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for () { }"); 278fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for ( a ) { }"); 279fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for ( ; ) ;"); 280fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for a ; b ; c { }"); 281fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (a ; { }"); 282fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for ( a ; ) ;"); 283fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for ( ; a ) break"); 284fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for (var a, b ; ; ) { break } "); 285fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for (var a = b, b = a ; ; ) break"); 286fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for (var a = b, c, d, b = a ; x in b ; ) { break }"); 287fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for (var a = b, c, d ; ; 1 in a()) break"); 288fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for ( ; var a ; ) break"); 289fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (const a; ; ) break"); 290fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for ( %a ; ; ) { }"); 291fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for (a in b) break"); 292fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for (a() in b) break"); 293fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for (a().l[4] in b) break"); 294fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for (new a in b in c in d) break"); 295fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for (new new new a in b) break"); 296fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (delete new a() in b) break"); 297fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (a * a in b) break"); 298fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for ((a * a) in b) break"); 299fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (a++ in b) break"); 300fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for ((a++) in b) break"); 301fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (++a in b) break"); 302fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for ((++a) in b) break"); 303fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (a, b in c) break"); 304fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (a,b in c ;;) break"); 305fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for (a,(b in c) ;;) break"); 306fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for ((a, b) in c) break"); 307fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (a ? b : c in c) break"); 308fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for ((a ? b : c) in c) break"); 309fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for (var a in b in c) break"); 310fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for (var a = 5 += 6 in b) break"); 311fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (var a += 5 in b) break"); 312fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (var a = in b) break"); 313fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (var a, b in b) break"); 314fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (var a = -6, b in b) break"); 315fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (var a, b = 8 in b) break"); 316fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for (var a = (b in c) in d) break"); 317fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (var a = (b in c in d) break"); 318fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for (var (a) in b) { }"); 319fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("for (var a = 7, b = c < d >= d ; f()[6]++ ; --i()[1]++ ) {}"); 320fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 321fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgdebug ("try statement"); 322fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 323fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("try { break } catch(e) {}"); 324fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("try {} finally { c++ }"); 325fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("try { with (x) { } } catch(e) {} finally { if (a) ; }"); 326fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("try {}"); 327fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("catch(e) {}"); 328fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("finally {}"); 329fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("try a; catch(e) {}"); 330fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("try {} catch(e) a()"); 331fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("try {} finally a()"); 332fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("try {} catch(e)"); 333fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("try {} finally"); 334fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("try {} finally {} catch(e) {}"); 335fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("try {} catch (...) {}"); 336fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("try {} catch {}"); 337fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("if (a) try {} finally {} else b;"); 338fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("if (--a()) do with(1) try {} catch(ke) { f() ; g() } while (a in b) else {}"); 339fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("if (a) try {} else b; catch (e) { }"); 340fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("try { finally {}"); 341fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 342fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgdebug ("switch statement"); 343fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 344fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("switch (a) {}"); 345fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("switch () {}"); 346fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("case 5:"); 347fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("default:"); 348fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("switch (a) b;"); 349fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("switch (a) case 3: b;"); 350fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("switch (f()) { case 5 * f(): default: case '6' - 9: ++i }"); 351fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("switch (true) { default: case 6: default: }"); 352fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("switch (l) { f(); }"); 353fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("switch (l) { case 1: ; a: case 5: }"); 354fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("switch (g() - h[5].l) { case 1 + 6: a: b: c: ++f }"); 355fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("switch (g) { case 1: a: }"); 356fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("switch (g) { case 1: a: default: }"); 357fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("switch g { case 1: l() }"); 358fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("switch (g) { case 1:"); 359fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("switch (l) { case a = b ? c : d : }"); 360fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("switch (sw) { case a ? b - 7[1] ? [c,,] : d = 6 : { } : }"); 361fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("switch (l) { case b ? c : }"); 362fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid ("switch (l) { case 1: a: with(g) switch (g) { case 2: default: } default: }"); 363fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("switch (4 - ) { }"); 364fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("switch (l) { default case: 5; }"); 365fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 366fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("L: L: ;"); 367fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("L: L1: L: ;"); 368fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("L: L1: L2: L3: L4: L: ;"); 369fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 370fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for(var a,b 'this shouldn\'t be allowed' false ; ) ;"); 371fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("for(var a,b '"); 372fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 373fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("function __proto__(){}") 374fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("(function __proto__(){})") 375fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("'use strict'; function __proto__(){}") 376fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("'use strict'; (function __proto__(){})") 377fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 378fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("if (0) $foo; ") 379fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("if (0) _foo; ") 380fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("if (0) foo$; ") 381fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("if (0) foo_; ") 382fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("if (0) obj.$foo; ") 383fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("if (0) obj._foo; ") 384fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("if (0) obj.foo$; ") 385fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("if (0) obj.foo_; ") 386fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("if (0) obj.foo\\u03bb; ") 387fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("if (0) new a(b+c).d = 5"); 388fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("if (0) new a(b+c) = 5"); 389fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("([1 || 1].a = 1)"); 390fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgvalid("({a: 1 || 1}.a = 1)"); 391fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 392fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var a.b = c"); 393fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orginvalid("var a.b;"); 394fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 395fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgtry { eval("a.b.c = {};"); } catch(e1) { e=e1; shouldBe("e.line", "1") } 396fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgfoo = 'FAIL'; 397fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgbar = 'PASS'; 398fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgtry { 399fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org eval("foo = 'PASS'; a.b.c = {}; bar = 'FAIL';"); 400fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org} catch(e) { 401fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org shouldBe("foo", "'PASS'"); 402fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org shouldBe("bar", "'PASS'"); 403fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org} 404