Microsoft/TypeScript

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

Open

#50.209 geöffnet am 6. Aug. 2022

Auf GitHub ansehen
 (4 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)TypeScript (6.726 Forks)batch import
BugDomain: Comment EmitHelp Wanted

Repository-Metriken

Stars
 (48.455 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)

Beschreibung

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
    }
}

Contributor Guide