From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- js/src/tests/non262/regress/regress-321874.js | 207 ++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 js/src/tests/non262/regress/regress-321874.js (limited to 'js/src/tests/non262/regress/regress-321874.js') diff --git a/js/src/tests/non262/regress/regress-321874.js b/js/src/tests/non262/regress/regress-321874.js new file mode 100644 index 0000000000..d6fbf77c29 --- /dev/null +++ b/js/src/tests/non262/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); -- cgit v1.2.3