@@ -485,7 +485,7 @@ namespace ts.codefix {
485485 const checker = context . program . getTypeChecker ( ) ;
486486 const props = map ( info . properties , prop => {
487487 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 ) ;
489489 } ) ;
490490 const options = {
491491 leadingTriviaOption : textChanges . LeadingTriviaOption . Exclude ,
@@ -608,4 +608,14 @@ namespace ts.codefix {
608608 const declaration = findAncestor ( callExpression , n => isMethodDeclaration ( n ) || isConstructorDeclaration ( n ) ) ;
609609 return declaration && declaration . parent === node ? declaration : undefined ;
610610 }
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+ }
611621}
0 commit comments