Skip to content

Commit a18431e

Browse files
Test optional-call in eval
1 parent 3b5d8d5 commit a18431e

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

test/es12/optional-calls.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,51 @@ const tests = [
109109
assert.areEqual(42, (specialObj.b)?.().c);
110110
assert.areEqual(42, (specialObj?.b)?.().c);
111111
}
112+
},
113+
{
114+
name: "Optional call in eval (function)",
115+
body() {
116+
function fn() {
117+
return 42;
118+
}
119+
assert.areEqual(42, eval("fn?.()"));
120+
},
121+
},
122+
{
123+
name: "Optional call in eval (lambda)",
124+
body() {
125+
const fn = () => 42;
126+
assert.areEqual(42, eval("fn?.()"));
127+
},
128+
},
129+
{
130+
name: "Optional call in eval (object)",
131+
body() {
132+
const obj = {
133+
fn: () => 42,
134+
};
135+
assert.areEqual(42, eval("obj?.fn?.()"));
136+
},
137+
},
138+
{
139+
name: "Optional call in eval (undefined)",
140+
body() {
141+
assert.areEqual(undefined, eval("doesNotExist?.()"));
142+
},
143+
},
144+
{
145+
name: "Optional call in eval respects scope",
146+
body() {
147+
function fn() {
148+
return 42;
149+
}
150+
assert.areEqual(24, eval(`
151+
function fn(){
152+
return 24;
153+
}
154+
fn?.()
155+
`));
156+
},
112157
}
113158
];
114159

0 commit comments

Comments
 (0)