Skip to content

Incorrect compile result of arrow function using implicit return (starts with optional chaining) and with line comments in between #41814

Closed
@QuincyHe

Description

@QuincyHe

TypeScript Version: Since v3.8.3

Search Terms:
Arrow function, implicit return, line comments, optional chaining
Code

// Target: ES5
// arrow function, implicit return on 2nd line that starts with optional chaining, and has a line comment in between the lines.
const test = (names: string[]) => 
    // testing 1 two
    names?.filter(x => x);

console.log(test(["a"]));

Expected behavior:
Something like:

"use strict";
var test = function (names) { // testing 1 two
return names === null || 
names === void 0 ? void 0 : 
names.filter(function (x) { return x; }); };
console.log(test(["a"]));

Actual behavior:

  1. the comment is being copied 3 times.
  2. the first line comment terminates the return, making this function always return undefined.
"use strict";
var test = function (names) { return 
// testing 1 two
names === null || 
// testing 1 two
names === void 0 ? void 0 : 
// testing 1 two
names.filter(function (x) { return x; }); };
console.log(test(["a"]));

Playground Link:
https://www.typescriptlang.org/play?target=1&ts=3.8.3#code/MYewdgzgLgBFCm0YF4YAowEMC2iBcM0ATgJZgDmA2gLoCUKAfDAFAxswD0HciUZ5MAIxwA7iFbssuCAH4AdADMSAGwRE0AD0YwNtANzNmoSCGXw5ykOTQJoaSgCJMDuvqA
Related Issues:

Activity

added this to the TypeScript 4.2.0 milestone on Dec 4, 2020
RyanCavanaugh

RyanCavanaugh commented on Dec 4, 2020

@RyanCavanaugh
Member

@rbuckton correctness-affecting emit bug here

rbuckton

rbuckton commented on Dec 18, 2020

@rbuckton
Contributor
// @showEmit
// @target: es5
const test = (names: string[]) => 
    // single-line comment
    names?.filter(x => x);

Workbench Repro

added
Has ReproThis issue has compiler-backed repros: https://aka.ms/ts-repros
on Dec 18, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

BugA bug in TypeScriptFix AvailableA PR has been opened for this issueHas ReproThis issue has compiler-backed repros: https://aka.ms/ts-reprosHigh Priority

Type

No type

Projects

No projects

Relationships

None yet

    Development

    Participants

    @rbuckton@RyanCavanaugh@QuincyHe@typescript-bot

    Issue actions

      Incorrect compile result of arrow function using implicit return (starts with optional chaining) and with line comments in between · Issue #41814 · microsoft/TypeScript