Skip to content

Optional Chaining does not propagate receiver when parenthesized #35476

Closed
@jridgewell

Description

@jridgewell

TypeScript Version: typescript@3.8.0-dev.20191203

Search Terms:
optional chaining receiver call parentheses

Code

const foo = { bar() { return this } };

console.assert(foo === (foo?.bar)());

Expected behavior:

foo should be propagated as the receiver to the foo.bar method call.

Actual behavior:

No receiver is propagated (due to the ternary breaking the receiver).

Playground Link: https://www.typescriptlang.org/play/?ssl=1&ssc=1&pln=4&pc=1#code/MYewdgzgLgBAZiEMC8MDeMBGBDATgCgEp0ZcBTKAV1zBigAsBLCGAXzYG4AoL0SEADZkAdNggQyuKPgRJk8mDMQB+YTlyEihDkA

Related Issues:

Metadata

Metadata

Assignees

Labels

BugA bug in TypeScriptFix AvailableA PR has been opened for this issueRescheduledThis issue was previously scheduled to an earlier milestone

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions