* 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
30 lines
368 B
JavaScript
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)
|
|
}
|