diff options
Diffstat (limited to 'js/src/tests/js1_5/Regress/regress-321874.js')
-rw-r--r-- | js/src/tests/js1_5/Regress/regress-321874.js | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/js/src/tests/js1_5/Regress/regress-321874.js b/js/src/tests/js1_5/Regress/regress-321874.js new file mode 100644 index 000000000..d6fbf77c2 --- /dev/null +++ b/js/src/tests/js1_5/Regress/regress-321874.js @@ -0,0 +1,207 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +//----------------------------------------------------------------------------- +var BUGNUMBER = 321874; +var summary = 'lhs must be a reference in (for lhs in rhs) ...'; +var actual = ''; +var expect = ''; +var section; + +printBugNumber(BUGNUMBER); +printStatus (summary); + +function a() {} +var b = {foo: 'bar'}; + +printStatus('for-in tests'); + +var v; +section = summary + ': for((v) in b);'; +expect = 'foo'; +printStatus(section); +try +{ + eval('for ((v) in b);'); + actual = v; +} +catch(ex) +{ + printStatus(ex+''); + actual = 'error'; +} +reportCompare(expect, actual, section); + +section = summary + ': function foo(){for((v) in b);};foo();'; +expect = 'foo'; +printStatus(section); +try +{ + eval('function foo(){ for ((v) in b);}; foo();'); + actual = v; +} +catch(ex) +{ + printStatus(ex+''); + actual = 'error'; +} +reportCompare(expect, actual, section); + +section = summary + ': for(a() in b);'; +expect = 'error'; +printStatus(section); +try +{ + eval('for (a() in b);'); + actual = 'no error'; +} +catch(ex) +{ + printStatus(ex+''); + actual = 'error'; +} +reportCompare(expect, actual, section); + +section = summary + ': function foo(){for(a() in b);};foo();'; +expect = 'error'; +printStatus(section); +try +{ + eval('function foo(){ for (a() in b);};foo();'); + actual = 'no error'; +} +catch(ex) +{ + printStatus(ex+''); + actual = 'error'; +} +reportCompare(expect, actual, section); + +section = ': for(new a() in b);'; +expect = 'error'; +printStatus(section); +try +{ + eval('for (new a() in b);'); + actual = 'no error'; +} +catch(ex) +{ + printStatus(ex+''); + actual = 'error'; +} +reportCompare(expect, actual, summary + section); + +section = ': function foo(){for(new a() in b);};foo();'; +expect = 'error'; +printStatus(section); +try +{ + eval('function foo(){ for (new a() in b);};foo();'); + actual = 'no error'; +} +catch(ex) +{ + printStatus(ex+''); + actual = 'error'; +} +reportCompare(expect, actual, summary + section); + +section = ': for(void in b);'; +expect = 'error'; +printStatus(section); +try +{ + eval('for (void in b);'); + actual = 'no error'; +} +catch(ex) +{ + printStatus(ex+''); + actual = 'error'; +} +reportCompare(expect, actual, summary + section); + +section = ': function foo(){for(void in b);};foo();'; +expect = 'error'; +printStatus(section); +try +{ + eval('function foo(){ for (void in b);};foo();'); + actual = 'no error'; +} +catch(ex) +{ + printStatus(ex+''); + actual = 'error'; +} +reportCompare(expect, actual, summary + section); + +var d = 1; +var e = 2; +expect = 'error'; +section = ': for((d*e) in b);'; +printStatus(section); +try +{ + eval('for ((d*e) in b);'); + actual = 'no error'; +} +catch(ex) +{ + printStatus(ex+''); + actual = 'error'; +} +reportCompare(expect, actual, summary + section); + +var d = 1; +var e = 2; +expect = 'error'; +section = ': function foo(){for((d*e) in b);};foo();'; +printStatus(section); +try +{ + eval('function foo(){ for ((d*e) in b);};foo();'); + actual = 'no error'; +} +catch(ex) +{ + printStatus(ex+''); + actual = 'error'; +} +reportCompare(expect, actual, summary + section); + +const c = 0; +expect = 'error'; +section = ': for(c in b);'; +printStatus(section); +try +{ + eval('for (c in b);'); + actual = c; + printStatus('typeof c: ' + (typeof c) + ', c: ' + c); +} +catch(ex) +{ + printStatus(ex+''); + actual = 'error'; +} +reportCompare(expect, actual, summary + section); + +expect = 'error'; +section = ': function foo(){for(c in b);};foo();'; +printStatus(section); +try +{ + eval('function foo(){ for (c in b);};foo();'); + actual = c; + printStatus('typeof c: ' + (typeof c) + ', c: ' + c); +} +catch(ex) +{ + printStatus(ex+''); + actual = 'error'; +} +reportCompare(expect, actual, summary + section); |