@@ -617,7 +617,7 @@ namespace ts {
617
617
if ( ! noDeclare ) {
618
618
write ( "declare " ) ;
619
619
}
620
- write ( "var " ) ;
620
+ write ( "const " ) ;
621
621
write ( tempVarName ) ;
622
622
write ( ": " ) ;
623
623
writer . getSymbolAccessibilityDiagnostic = ( ) => diagnostic ;
@@ -1096,7 +1096,7 @@ namespace ts {
1096
1096
}
1097
1097
}
1098
1098
1099
- function emitHeritageClause ( className : Identifier , typeReferences : ExpressionWithTypeArguments [ ] , isImplementsList : boolean ) {
1099
+ function emitHeritageClause ( typeReferences : ExpressionWithTypeArguments [ ] , isImplementsList : boolean ) {
1100
1100
if ( typeReferences ) {
1101
1101
write ( isImplementsList ? " implements " : " extends " ) ;
1102
1102
emitCommaList ( typeReferences , emitTypeOfTypeReference ) ;
@@ -1109,16 +1109,6 @@ namespace ts {
1109
1109
else if ( ! isImplementsList && node . expression . kind === SyntaxKind . NullKeyword ) {
1110
1110
write ( "null" ) ;
1111
1111
}
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
- }
1122
1112
1123
1113
function getHeritageClauseVisibilityError ( ) : SymbolAccessibilityDiagnostic {
1124
1114
let diagnosticMessage : DiagnosticMessage ;
@@ -1158,12 +1148,14 @@ namespace ts {
1158
1148
enclosingDeclaration = node ;
1159
1149
const baseTypeNode = getClassExtendsHeritageClauseElement ( node ) ;
1160
1150
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
+ } ) ;
1167
1159
}
1168
1160
1169
1161
emitJsDocComments ( node ) ;
@@ -1175,7 +1167,7 @@ namespace ts {
1175
1167
writeTextOfNode ( currentText , node . name ) ;
1176
1168
emitTypeParameters ( node . typeParameters ) ;
1177
1169
if ( baseTypeNode ) {
1178
- if ( isNonNullExpression ( baseTypeNode ) ) {
1170
+ if ( ! isEntityNameExpression ( baseTypeNode . expression ) ) {
1179
1171
write ( " extends " ) ;
1180
1172
write ( tempVarName ) ;
1181
1173
if ( baseTypeNode . typeArguments ) {
@@ -1185,10 +1177,10 @@ namespace ts {
1185
1177
}
1186
1178
}
1187
1179
else {
1188
- emitHeritageClause ( node . name , [ baseTypeNode ] , /*isImplementsList*/ false ) ;
1180
+ emitHeritageClause ( [ baseTypeNode ] , /*isImplementsList*/ false ) ;
1189
1181
}
1190
1182
}
1191
- emitHeritageClause ( node . name , getClassImplementsHeritageClauseElements ( node ) , /*isImplementsList*/ true ) ;
1183
+ emitHeritageClause ( getClassImplementsHeritageClauseElements ( node ) , /*isImplementsList*/ true ) ;
1192
1184
write ( " {" ) ;
1193
1185
writeLine ( ) ;
1194
1186
increaseIndent ( ) ;
@@ -1210,7 +1202,7 @@ namespace ts {
1210
1202
emitTypeParameters ( node . typeParameters ) ;
1211
1203
const interfaceExtendsTypes = filter ( getInterfaceBaseTypeNodes ( node ) , base => isEntityNameExpression ( base . expression ) ) ;
1212
1204
if ( interfaceExtendsTypes && interfaceExtendsTypes . length ) {
1213
- emitHeritageClause ( node . name , interfaceExtendsTypes , /*isImplementsList*/ false ) ;
1205
+ emitHeritageClause ( interfaceExtendsTypes , /*isImplementsList*/ false ) ;
1214
1206
}
1215
1207
write ( " {" ) ;
1216
1208
writeLine ( ) ;
@@ -1222,10 +1214,6 @@ namespace ts {
1222
1214
enclosingDeclaration = prevEnclosingDeclaration ;
1223
1215
}
1224
1216
1225
- function isNonNullExpression ( node : ExpressionWithTypeArguments ) {
1226
- return node && ! isEntityNameExpression ( node . expression ) && node . expression . kind !== SyntaxKind . NullKeyword ;
1227
- }
1228
-
1229
1217
function emitPropertyDeclaration ( node : Declaration ) {
1230
1218
if ( hasDynamicName ( node ) ) {
1231
1219
return ;
0 commit comments