fix(40632): skip emitting abstract members (#40699)

This commit is contained in:
Oleksandr T
2020-11-05 02:02:17 +02:00
committed by GitHub
parent 76cf8fd78b
commit 45b698b3f6
11 changed files with 240 additions and 13 deletions

View File

@@ -579,7 +579,7 @@ namespace ts {
}
function isPropertyDeclarationThatRequiresConstructorStatement(member: ClassElement): member is PropertyDeclaration {
if (!isPropertyDeclaration(member) || hasStaticModifier(member)) {
if (!isPropertyDeclaration(member) || hasStaticModifier(member) || hasSyntacticModifier(getOriginalNode(member), ModifierFlags.Abstract)) {
return false;
}
if (context.getCompilerOptions().useDefineForClassFields) {
@@ -779,6 +779,9 @@ namespace ts {
}
const propertyOriginalNode = getOriginalNode(property);
if (hasSyntacticModifier(propertyOriginalNode, ModifierFlags.Abstract)) {
return undefined;
}
const initializer = property.initializer || emitAssignment ? visitNode(property.initializer, visitor, isExpression) ?? factory.createVoidZero()
: isParameterPropertyDeclaration(propertyOriginalNode, propertyOriginalNode.parent) && isIdentifier(propertyName) ? propertyName
: factory.createVoidZero();

View File

@@ -1900,7 +1900,7 @@ namespace ts {
}
function visitPropertyDeclaration(node: PropertyDeclaration) {
if (node.flags & NodeFlags.Ambient) {
if (node.flags & NodeFlags.Ambient || hasSyntacticModifier(node, ModifierFlags.Abstract)) {
return undefined;
}
const updated = factory.updatePropertyDeclaration(