Oliver Dunk 693a5df7a9
Memoize call expressions in optional chains in loose mode (#11261)
* Memoize in loose mode when callee is a CallExpression

* Handle more complex OptionalCallExpressions where memoization is needed

* Convert calls to Function#call when member needs memoization

* Only update call context for member expressions
2020-03-20 08:59:03 +01:00

30 lines
368 B
JavaScript

function test(foo) {
foo?.bar;
foo?.bar?.baz;
foo?.(foo);
foo?.bar()
foo.get(bar)?.()
foo.bar()?.()
foo[bar]()?.()
foo.bar().baz?.()
foo[bar]().baz?.()
foo.bar?.(foo.bar, false)
foo?.bar?.(foo.bar, true)
foo.bar?.baz(foo.bar, false)
foo?.bar?.baz(foo.bar, true)
foo.bar?.baz?.(foo.bar, false)
foo?.bar?.baz?.(foo.bar, true)
}