Have definite assignment assertions on property signatures mark them as typescript (#35270)

This commit is contained in:
Wesley Wigham 2019-11-21 13:13:46 -08:00 committed by GitHub
parent 9b78599c63
commit cfa367d7f9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 38 additions and 1 deletions

View file

@ -3643,7 +3643,7 @@ namespace ts {
let transformFlags = subtreeFlags | TransformFlags.ContainsClassFields;
// Decorators, TypeScript-specific modifiers, and type annotations are TypeScript syntax.
if (some(node.decorators) || hasModifier(node, ModifierFlags.TypeScriptModifier) || node.type || node.questionToken) {
if (some(node.decorators) || hasModifier(node, ModifierFlags.TypeScriptModifier) || node.type || node.questionToken || node.exclamationToken) {
transformFlags |= TransformFlags.AssertTypeScript;
}

View file

@ -0,0 +1,9 @@
tests/cases/compiler/definiteAssignmentWithErrorStillStripped.ts(2,6): error TS1255: A definite assignment assertion '!' is not permitted in this context.
==== tests/cases/compiler/definiteAssignmentWithErrorStillStripped.ts (1 errors) ====
class C {
p!;
~
!!! error TS1255: A definite assignment assertion '!' is not permitted in this context.
}

View file

@ -0,0 +1,9 @@
//// [definiteAssignmentWithErrorStillStripped.ts]
class C {
p!;
}
//// [definiteAssignmentWithErrorStillStripped.js]
class C {
p;
}

View file

@ -0,0 +1,7 @@
=== tests/cases/compiler/definiteAssignmentWithErrorStillStripped.ts ===
class C {
>C : Symbol(C, Decl(definiteAssignmentWithErrorStillStripped.ts, 0, 0))
p!;
>p : Symbol(C.p, Decl(definiteAssignmentWithErrorStillStripped.ts, 0, 9))
}

View file

@ -0,0 +1,7 @@
=== tests/cases/compiler/definiteAssignmentWithErrorStillStripped.ts ===
class C {
>C : C
p!;
>p : any
}

View file

@ -0,0 +1,5 @@
// @target: esnext
// @useDefineForClassFields: true
class C {
p!;
}