[jsinterp] Stringify bracket notation keys in object access (#15989)
Authored by: bashonly
This commit is contained in:
parent
62574f5763
commit
c9c8651975
2 changed files with 2 additions and 1 deletions
|
|
@ -330,6 +330,7 @@ class TestJSInterpreter(unittest.TestCase):
|
||||||
self._test('function f() { let a = {m1: 42, m2: 0 }; return [a["m1"], a.m2]; }', [42, 0])
|
self._test('function f() { let a = {m1: 42, m2: 0 }; return [a["m1"], a.m2]; }', [42, 0])
|
||||||
self._test('function f() { let a; return a?.qq; }', JS_Undefined)
|
self._test('function f() { let a; return a?.qq; }', JS_Undefined)
|
||||||
self._test('function f() { let a = {m1: 42, m2: 0 }; return a?.qq; }', JS_Undefined)
|
self._test('function f() { let a = {m1: 42, m2: 0 }; return a?.qq; }', JS_Undefined)
|
||||||
|
self._test('function f() { let a = {"1": 123}; return a[1]; }', 123)
|
||||||
|
|
||||||
def test_regex(self):
|
def test_regex(self):
|
||||||
self._test('function f() { let a=/,,[/,913,/](,)}/; }', None)
|
self._test('function f() { let a=/,,[/,913,/](,)}/; }', None)
|
||||||
|
|
|
||||||
|
|
@ -385,7 +385,7 @@ class JSInterpreter:
|
||||||
if idx == 'length':
|
if idx == 'length':
|
||||||
return len(obj)
|
return len(obj)
|
||||||
try:
|
try:
|
||||||
return obj[int(idx)] if isinstance(obj, list) else obj[idx]
|
return obj[int(idx)] if isinstance(obj, list) else obj[str(idx)]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if allow_undefined:
|
if allow_undefined:
|
||||||
return JS_Undefined
|
return JS_Undefined
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue