Skip to content

Syntax error in emit when using nullish coalescing and optional chaining in for-of operand #33856

@RyanCavanaugh

Description

@RyanCavanaugh

TypeScript Version: 3.7.0-dev.20191006

Search Terms: syntax error nullish coalescing optional chaining

Code

const obj: { arr: any[] } = { arr: [] };
for (const i of obj?.arr ?? []) { }

Expected behavior: Emit is valid JS

Actual behavior:

"use strict";
var _a, _b;
const obj = { arr: [] };
for (const i of _b = (_a = obj) === null || _a === void 0 ? void 0 : _a.arr, (_b !== null && _b !== void 0 ? _b : [])) { }
//                                                                 Invalid ^

Playground Link: http://www.typescriptlang.org/play/?ts=3.7-Beta&ssl=1&ssc=1&pln=2&pc=36#code/MYewdgzgLgBCBGArAXDA3jAhgJ26zYAngNoC6MAvjALzpa6pmUDcAsAFABmI2MAFKEiwAlnE5wkAfgB0OXpMkwyASjoUgA

Related Issues: nope

Metadata

Metadata

Assignees

Labels

BugA bug in TypeScript

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions