@@ -485,7 +485,7 @@ namespace ts.codefix {
485
485
const checker = context . program . getTypeChecker ( ) ;
486
486
const props = map ( info . properties , prop => {
487
487
const initializer = tryGetValueFromType ( context , checker , importAdder , quotePreference , checker . getTypeOfSymbol ( prop ) , info . parentDeclaration ) ;
488
- return factory . createPropertyAssignment ( createPropertyNameNodeForIdentifierOrLiteral ( prop . name , target , quotePreference === QuotePreference . Single ) , initializer ) ;
488
+ return factory . createPropertyAssignment ( createPropertyNameFromSymbol ( prop , target , quotePreference , checker ) , initializer ) ;
489
489
} ) ;
490
490
const options = {
491
491
leadingTriviaOption : textChanges . LeadingTriviaOption . Exclude ,
@@ -608,4 +608,14 @@ namespace ts.codefix {
608
608
const declaration = findAncestor ( callExpression , n => isMethodDeclaration ( n ) || isConstructorDeclaration ( n ) ) ;
609
609
return declaration && declaration . parent === node ? declaration : undefined ;
610
610
}
611
+
612
+ function createPropertyNameFromSymbol ( symbol : Symbol , target : ScriptTarget , quotePreference : QuotePreference , checker : TypeChecker ) {
613
+ if ( isTransientSymbol ( symbol ) && symbol . nameType && symbol . nameType . flags & TypeFlags . UniqueESSymbol ) {
614
+ const expression = checker . symbolToExpression ( ( symbol . nameType as UniqueESSymbolType ) . symbol , SymbolFlags . Value , symbol . valueDeclaration , NodeBuilderFlags . AllowUniqueESSymbolType ) ;
615
+ if ( expression ) {
616
+ return factory . createComputedPropertyName ( expression ) ;
617
+ }
618
+ }
619
+ return createPropertyNameNodeForIdentifierOrLiteral ( symbol . name , target , quotePreference === QuotePreference . Single ) ;
620
+ }
611
621
}
0 commit comments