Microsoft/TypeScript

Repeated single line comment after variable declaration in if/for block when targeting ES5

Open

#50,209 opened on 2022幎8月6日

GitHub で芋る
 (4 comments) (0 reactions) (0 assignees)TypeScript (6,726 forks)batch import
BugDomain: Comment EmitHelp Wanted

Repository metrics

Stars
 (48,455 stars)
PR merge metrics
 (平均マヌゞ 6d 17h) (30d で 9 merged PRs)

説明

Bug Report

🔎 Search Terms

comment

🕗 Version & Regression Information

  • This changed between versions 4.6.4 and 4.7.4

⏯ Playground Link

Playground link with relevant code

💻 Code

let x: number
// #if MEMORY64
x = 8
// #else
x = 4
// #endif

function f (b: boolean) {
  if (b) {
    let y: number
    // #if MEMORY64
    y = 8
    // #else
    y = 4
    // #endif
  }

  for (let i = 0; i < 10; ++i) {
    let z: number
    // #if MEMORY64
    z = 8
    // #else
    z = 4
    // #endif
  }
}

🙁 Actual behavior

Output JavaScript using typescript 4.7.4

"use strict";
var x;
// #if MEMORY64
x = 8;
// #else
x = 4;
// #endif
function f(b) {
    if (b) {
        var y 
        // #if MEMORY64               // <----- ???
        = void 0;
        // #if MEMORY64
        y = 8;
        // #else
        y = 4;
        // #endif
    }
    for (var i = 0; i < 10; ++i) {
        var z 
        // #if MEMORY64               // <----- ???
        = void 0;
        // #if MEMORY64
        z = 8;
        // #else
        z = 4;
        // #endif
    }
}

🙂 Expected behavior

Output JavaScript using typescript 4.6.4

"use strict";
var x;
// #if MEMORY64
x = 8;
// #else
x = 4;
// #endif
function f(b) {
    if (b) {
        var y = void 0;
        // #if MEMORY64
        y = 8;
        // #else
        y = 4;
        // #endif
    }
    for (var i = 0; i < 10; ++i) {
        var z = void 0;
        // #if MEMORY64
        z = 8;
        // #else
        z = 4;
        // #endif
    }
}

コントリビュヌタヌガむド