Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit efe502e

Browse filesBrowse files
committed
Address PR comments
1 parent bdb90de commit efe502e
Copy full SHA for efe502e

3 files changed

+14-38Lines changed: 14 additions & 38 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎src/compiler/checker.ts‎

Copy file name to clipboardExpand all lines: src/compiler/checker.ts
-11Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22641,16 +22641,6 @@ namespace ts {
2264122641
getSymbolDisplayBuilder().buildTypeDisplay(type, writer, enclosingDeclaration, flags);
2264222642
}
2264322643

22644-
function writeBaseConstructorTypeOfClass(node: ClassLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) {
22645-
const classType = <InterfaceType>getDeclaredTypeOfSymbol(getSymbolOfNode(node));
22646-
resolveBaseTypesOfClass(classType);
22647-
const baseType = classType.resolvedBaseTypes.length ? classType.resolvedBaseTypes[0] : unknownType;
22648-
if (!baseType.symbol && !(baseType.flags & TypeFlags.Intersection)) {
22649-
writer.reportIllegalExtends();
22650-
}
22651-
getSymbolDisplayBuilder().buildTypeDisplay(baseType, writer, enclosingDeclaration, flags);
22652-
}
22653-
2265422644
function hasGlobalName(name: string): boolean {
2265522645
return globals.has(name);
2265622646
}
@@ -22744,7 +22734,6 @@ namespace ts {
2274422734
writeTypeOfDeclaration,
2274522735
writeReturnTypeOfSignatureDeclaration,
2274622736
writeTypeOfExpression,
22747-
writeBaseConstructorTypeOfClass,
2274822737
isSymbolAccessible,
2274922738
isEntityNameVisible,
2275022739
getConstantValue: node => {
Collapse file

‎src/compiler/declarationEmitter.ts‎

Copy file name to clipboardExpand all lines: src/compiler/declarationEmitter.ts
+14-26Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -617,7 +617,7 @@ namespace ts {
617617
if (!noDeclare) {
618618
write("declare ");
619619
}
620-
write("var ");
620+
write("const ");
621621
write(tempVarName);
622622
write(": ");
623623
writer.getSymbolAccessibilityDiagnostic = () => diagnostic;
@@ -1096,7 +1096,7 @@ namespace ts {
10961096
}
10971097
}
10981098

1099-
function emitHeritageClause(className: Identifier, typeReferences: ExpressionWithTypeArguments[], isImplementsList: boolean) {
1099+
function emitHeritageClause(typeReferences: ExpressionWithTypeArguments[], isImplementsList: boolean) {
11001100
if (typeReferences) {
11011101
write(isImplementsList ? " implements " : " extends ");
11021102
emitCommaList(typeReferences, emitTypeOfTypeReference);
@@ -1109,16 +1109,6 @@ namespace ts {
11091109
else if (!isImplementsList && node.expression.kind === SyntaxKind.NullKeyword) {
11101110
write("null");
11111111
}
1112-
else {
1113-
writer.getSymbolAccessibilityDiagnostic = getHeritageClauseVisibilityError;
1114-
errorNameNode = className;
1115-
resolver.writeBaseConstructorTypeOfClass(
1116-
enclosingDeclaration as ClassLikeDeclaration,
1117-
enclosingDeclaration,
1118-
TypeFormatFlags.UseTypeOfFunction | TypeFormatFlags.UseTypeAliasValue,
1119-
writer);
1120-
errorNameNode = undefined;
1121-
}
11221112

11231113
function getHeritageClauseVisibilityError(): SymbolAccessibilityDiagnostic {
11241114
let diagnosticMessage: DiagnosticMessage;
@@ -1158,12 +1148,14 @@ namespace ts {
11581148
enclosingDeclaration = node;
11591149
const baseTypeNode = getClassExtendsHeritageClauseElement(node);
11601150
let tempVarName: string;
1161-
if (isNonNullExpression(baseTypeNode)) {
1162-
tempVarName = emitTempVariableDeclaration(baseTypeNode.expression, `_${node.name.text}_intersection_base`, {
1163-
diagnosticMessage: Diagnostics.extends_clause_of_exported_class_0_has_or_is_using_private_name_1,
1164-
errorNode: baseTypeNode,
1165-
typeName: node.name
1166-
});
1151+
if (baseTypeNode && !isEntityNameExpression(baseTypeNode.expression)) {
1152+
tempVarName = baseTypeNode.expression.kind === SyntaxKind.NullKeyword ?
1153+
"null" :
1154+
emitTempVariableDeclaration(baseTypeNode.expression, `${node.name.text}_base`, {
1155+
diagnosticMessage: Diagnostics.extends_clause_of_exported_class_0_has_or_is_using_private_name_1,
1156+
errorNode: baseTypeNode,
1157+
typeName: node.name
1158+
});
11671159
}
11681160

11691161
emitJsDocComments(node);
@@ -1175,7 +1167,7 @@ namespace ts {
11751167
writeTextOfNode(currentText, node.name);
11761168
emitTypeParameters(node.typeParameters);
11771169
if (baseTypeNode) {
1178-
if (isNonNullExpression(baseTypeNode)) {
1170+
if (!isEntityNameExpression(baseTypeNode.expression)) {
11791171
write(" extends ");
11801172
write(tempVarName);
11811173
if (baseTypeNode.typeArguments) {
@@ -1185,10 +1177,10 @@ namespace ts {
11851177
}
11861178
}
11871179
else {
1188-
emitHeritageClause(node.name, [baseTypeNode], /*isImplementsList*/ false);
1180+
emitHeritageClause([baseTypeNode], /*isImplementsList*/ false);
11891181
}
11901182
}
1191-
emitHeritageClause(node.name, getClassImplementsHeritageClauseElements(node), /*isImplementsList*/ true);
1183+
emitHeritageClause(getClassImplementsHeritageClauseElements(node), /*isImplementsList*/ true);
11921184
write(" {");
11931185
writeLine();
11941186
increaseIndent();
@@ -1210,7 +1202,7 @@ namespace ts {
12101202
emitTypeParameters(node.typeParameters);
12111203
const interfaceExtendsTypes = filter(getInterfaceBaseTypeNodes(node), base => isEntityNameExpression(base.expression));
12121204
if (interfaceExtendsTypes && interfaceExtendsTypes.length) {
1213-
emitHeritageClause(node.name, interfaceExtendsTypes, /*isImplementsList*/ false);
1205+
emitHeritageClause(interfaceExtendsTypes, /*isImplementsList*/ false);
12141206
}
12151207
write(" {");
12161208
writeLine();
@@ -1222,10 +1214,6 @@ namespace ts {
12221214
enclosingDeclaration = prevEnclosingDeclaration;
12231215
}
12241216

1225-
function isNonNullExpression(node: ExpressionWithTypeArguments) {
1226-
return node && !isEntityNameExpression(node.expression) && node.expression.kind !== SyntaxKind.NullKeyword;
1227-
}
1228-
12291217
function emitPropertyDeclaration(node: Declaration) {
12301218
if (hasDynamicName(node)) {
12311219
return;
Collapse file

‎src/compiler/types.ts‎

Copy file name to clipboardExpand all lines: src/compiler/types.ts
-1Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2727,7 +2727,6 @@ namespace ts {
27272727
writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void;
27282728
writeReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void;
27292729
writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void;
2730-
writeBaseConstructorTypeOfClass(node: ClassLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void;
27312730
isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags, shouldComputeAliasToMarkVisible: boolean): SymbolAccessibilityResult;
27322731
isEntityNameVisible(entityName: EntityNameOrEntityNameExpression, enclosingDeclaration: Node): SymbolVisibilityResult;
27332732
// Returns the constant value this property access resolves to, or 'undefined' for a non-constant

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.