Skip to content

Commit 94f8590

Browse files
ajafffsandersn
authored andcommitted
strip QuestionToken from MethodDeclaration and PropertyDeclaration emit (#34954)
* strip QuestionToken from MethodDeclartion emit Fixes: #34953 * test property emit
1 parent 5c95163 commit 94f8590

File tree

5 files changed

+34
-2
lines changed

5 files changed

+34
-2
lines changed

src/compiler/binder.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3595,7 +3595,8 @@ namespace ts {
35953595
|| hasModifier(node, ModifierFlags.TypeScriptModifier)
35963596
|| node.typeParameters
35973597
|| node.type
3598-
|| !node.body) {
3598+
|| !node.body
3599+
|| node.questionToken) {
35993600
transformFlags |= TransformFlags.AssertTypeScript;
36003601
}
36013602

@@ -3642,7 +3643,7 @@ namespace ts {
36423643
let transformFlags = subtreeFlags | TransformFlags.ContainsClassFields;
36433644

36443645
// Decorators, TypeScript-specific modifiers, and type annotations are TypeScript syntax.
3645-
if (some(node.decorators) || hasModifier(node, ModifierFlags.TypeScriptModifier) || node.type) {
3646+
if (some(node.decorators) || hasModifier(node, ModifierFlags.TypeScriptModifier) || node.type || node.questionToken) {
36463647
transformFlags |= TransformFlags.AssertTypeScript;
36473648
}
36483649

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//// [optionalMethod.ts]
2+
class Base {
3+
method?() { }
4+
}
5+
6+
7+
//// [optionalMethod.js]
8+
class Base {
9+
method() { }
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//// [optionalProperty.ts]
2+
class C {
3+
prop?;
4+
}
5+
6+
7+
//// [optionalProperty.js]
8+
class C {
9+
prop;
10+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// @target: esnext
2+
// @noTypesAndSymbols: true
3+
class Base {
4+
method?() { }
5+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// @target: esnext
2+
// @useDefineForClassFields: true
3+
// @noTypesAndSymbols: true
4+
class C {
5+
prop?;
6+
}

0 commit comments

Comments
 (0)