Remove excess comment ranges from initialized and property parameter emit (#22152)

This commit is contained in:
Wesley Wigham 2018-02-26 12:43:31 -08:00 committed by GitHub
parent 95dfd271e2
commit 0dc5f18bdb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 76 additions and 22 deletions

View file

@ -1311,24 +1311,27 @@ namespace ts {
setTextRange(
createBlock([
createStatement(
setTextRange(
createAssignment(
setEmitFlags(getMutableClone(name), EmitFlags.NoSourceMap),
setEmitFlags(initializer, EmitFlags.NoSourceMap | getEmitFlags(initializer))
setEmitFlags(
setTextRange(
createAssignment(
setEmitFlags(getMutableClone(name), EmitFlags.NoSourceMap),
setEmitFlags(initializer, EmitFlags.NoSourceMap | getEmitFlags(initializer) | EmitFlags.NoComments)
),
parameter
),
parameter
EmitFlags.NoComments
)
)
]),
parameter
),
EmitFlags.SingleLine | EmitFlags.NoTrailingSourceMap | EmitFlags.NoTokenSourceMaps
EmitFlags.SingleLine | EmitFlags.NoTrailingSourceMap | EmitFlags.NoTokenSourceMaps | EmitFlags.NoComments
)
);
startOnNewLine(statement);
setTextRange(statement, parameter);
setEmitFlags(statement, EmitFlags.NoTokenSourceMaps | EmitFlags.NoTrailingSourceMap | EmitFlags.CustomPrologue);
setEmitFlags(statement, EmitFlags.NoTokenSourceMaps | EmitFlags.NoTrailingSourceMap | EmitFlags.CustomPrologue | EmitFlags.NoComments);
statements.push(statement);
}

View file

@ -1147,20 +1147,23 @@ namespace ts {
setEmitFlags(localName, EmitFlags.NoComments);
return startOnNewLine(
setTextRange(
createStatement(
createAssignment(
setTextRange(
createPropertyAccess(
createThis(),
propertyName
setEmitFlags(
setTextRange(
createStatement(
createAssignment(
setTextRange(
createPropertyAccess(
createThis(),
propertyName
),
node.name
),
node.name
),
localName
)
localName
)
),
moveRangePos(node, -1)
),
moveRangePos(node, -1)
EmitFlags.NoComments
)
);
}

View file

@ -0,0 +1,17 @@
//// [defaultParameterTrailingComments.ts]
class C {
constructor(defaultParam: boolean = false /* Emit only once*/) {}
}
function foo(defaultParam = 10 /*emit only once*/) {}
//// [defaultParameterTrailingComments.js]
var C = /** @class */ (function () {
function C(defaultParam /* Emit only once*/) {
if (defaultParam === void 0) { defaultParam = false; }
}
return C;
}());
function foo(defaultParam /*emit only once*/) {
if (defaultParam === void 0) { defaultParam = 10; }
}

View file

@ -0,0 +1,12 @@
=== tests/cases/compiler/defaultParameterTrailingComments.ts ===
class C {
>C : Symbol(C, Decl(defaultParameterTrailingComments.ts, 0, 0))
constructor(defaultParam: boolean = false /* Emit only once*/) {}
>defaultParam : Symbol(defaultParam, Decl(defaultParameterTrailingComments.ts, 1, 16))
}
function foo(defaultParam = 10 /*emit only once*/) {}
>foo : Symbol(foo, Decl(defaultParameterTrailingComments.ts, 2, 1))
>defaultParam : Symbol(defaultParam, Decl(defaultParameterTrailingComments.ts, 4, 13))

View file

@ -0,0 +1,14 @@
=== tests/cases/compiler/defaultParameterTrailingComments.ts ===
class C {
>C : C
constructor(defaultParam: boolean = false /* Emit only once*/) {}
>defaultParam : boolean
>false : false
}
function foo(defaultParam = 10 /*emit only once*/) {}
>foo : (defaultParam?: number) => void
>defaultParam : number
>10 : 10

View file

@ -19,8 +19,8 @@ function fn(y, set) {
var C = /** @class */ (function () {
function C(y, x // expected to work, but actually doesn't
) {
if (x === void 0) { x = fn(y, function (y, x) { return y.x = x; }); } // expected to work, but actually doesn't
this.x = x; // expected to work, but actually doesn't
if (x === void 0) { x = fn(y, function (y, x) { return y.x = x; }); }
this.x = x;
}
return C;
}());

View file

@ -0,0 +1,5 @@
class C {
constructor(defaultParam: boolean = false /* Emit only once*/) {}
}
function foo(defaultParam = 10 /*emit only once*/) {}

@ -1 +1 @@
Subproject commit ed149eb0c787b1195a95b44105822c64bb6eb636
Subproject commit 40bdb4eadabc9fbed7d83e3f26817a931c0763b6