Skip to content

Commit

Permalink
rename AllowComputedPropertyEnum -> WriteComputedProps
Browse files Browse the repository at this point in the history
  • Loading branch information
a-tarasyuk committed Aug 24, 2022
1 parent 9086542 commit 41d2849
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 23 deletions.
19 changes: 12 additions & 7 deletions src/compiler/checker.ts
Expand Up @@ -464,6 +464,7 @@ namespace ts {
signatureToSignatureDeclaration: nodeBuilder.signatureToSignatureDeclaration,
symbolToEntityName: nodeBuilder.symbolToEntityName,
symbolToExpression: nodeBuilder.symbolToExpression,
symbolToNode: nodeBuilder.symbolToNode,
symbolToTypeParameterDeclarations: nodeBuilder.symbolToTypeParameterDeclarations,
symbolToParameterDeclaration: nodeBuilder.symbolToParameterDeclaration,
typeParameterToDeclaration: nodeBuilder.typeParameterToDeclaration,
Expand Down Expand Up @@ -4822,8 +4823,8 @@ namespace ts {
if (flags & SymbolFormatFlags.DoNotIncludeSymbolChain) {
nodeFlags |= NodeBuilderFlags.DoNotIncludeSymbolChain;
}
if (flags & SymbolFormatFlags.AllowComputedPropertyEnums) {
nodeFlags |= NodeBuilderFlags.AllowComputedPropertyEnums;
if (flags & SymbolFormatFlags.WriteComputedProps) {
nodeFlags |= NodeBuilderFlags.WriteComputedProps;
}
const builder = flags & SymbolFormatFlags.AllowAnyNodeKind ? nodeBuilder.symbolToNode : nodeBuilder.symbolToEntityName;
return writer ? symbolToStringWorker(writer).getText() : usingSingleLineStringWriter(symbolToStringWorker);
Expand Down Expand Up @@ -4927,11 +4928,15 @@ namespace ts {
};

function symbolToNode(symbol: Symbol, context: NodeBuilderContext, meaning: SymbolFlags) {
if (context.flags & NodeBuilderFlags.AllowComputedPropertyEnums) {
if (context.flags & NodeBuilderFlags.WriteComputedProps) {
if (symbol.valueDeclaration) {
const name = getNameOfDeclaration(symbol.valueDeclaration);
if (name && isComputedPropertyName(name)) return name;
}
const nameType = getSymbolLinks(symbol).nameType;
if (nameType && nameType.flags & TypeFlags.EnumLiteral) {
context.enclosingDeclaration = nameType.symbol.valueDeclaration;
return factory.createComputedPropertyName(symbolToExpression(nameType.symbol, context, meaning));
if (nameType && nameType.flags & (TypeFlags.EnumLiteral | TypeFlags.UniqueESSymbol)) {
context.enclosingDeclaration = nameType.symbol.valueDeclaration;
return factory.createComputedPropertyName(symbolToExpression(nameType.symbol, context, meaning));
}
}
return symbolToExpression(symbol, context, meaning);
Expand Down Expand Up @@ -20326,7 +20331,7 @@ namespace ts {
shouldSkipElaboration = true; // Retain top-level error for interface implementing issues, otherwise omit it
}
if (props.length === 1) {
const propName = symbolToString(unmatchedProperty, /*enclosingDeclaration*/ undefined, SymbolFlags.None, SymbolFormatFlags.AllowAnyNodeKind | SymbolFormatFlags.AllowComputedPropertyEnums);
const propName = symbolToString(unmatchedProperty, /*enclosingDeclaration*/ undefined, SymbolFlags.None, SymbolFormatFlags.AllowAnyNodeKind | SymbolFormatFlags.WriteComputedProps);
reportError(Diagnostics.Property_0_is_missing_in_type_1_but_required_in_type_2, propName, ...getTypeNamesForErrorDisplay(source, target));
if (length(unmatchedProperty.declarations)) {
associateRelatedInfo(createDiagnosticForNode(unmatchedProperty.declarations![0], Diagnostics._0_is_declared_here, propName));
Expand Down
10 changes: 6 additions & 4 deletions src/compiler/types.ts
Expand Up @@ -4545,6 +4545,8 @@ namespace ts {
/** Note that the resulting nodes cannot be checked. */
symbolToExpression(symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): Expression | undefined;
/** Note that the resulting nodes cannot be checked. */
symbolToNode(symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): Node | undefined;
/** Note that the resulting nodes cannot be checked. */
symbolToTypeParameterDeclarations(symbol: Symbol, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): NodeArray<TypeParameterDeclaration> | undefined;
/** Note that the resulting nodes cannot be checked. */
symbolToParameterDeclaration(symbol: Symbol, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): ParameterDeclaration | undefined;
Expand Down Expand Up @@ -4822,7 +4824,7 @@ namespace ts {
AllowEmptyTuple = 1 << 19,
AllowUniqueESSymbolType = 1 << 20,
AllowEmptyIndexInfoType = 1 << 21,
AllowComputedPropertyEnums = 1 << 30,
WriteComputedProps = 1 << 30, // { [E.A]: 1 }

// Errors (cont.)
AllowNodeModulesRelativePaths = 1 << 26,
Expand Down Expand Up @@ -4872,14 +4874,14 @@ namespace ts {
InFirstTypeArgument = 1 << 22, // Writing first type argument of the instantiated type
InTypeAlias = 1 << 23, // Writing type in type alias declaration

AllowComputedPropertyEnums = 1 << 30,
WriteComputedProps = 1 << 30,

/** @deprecated */ WriteOwnNameForAnyLike = 0, // Does nothing

NodeBuilderFlagsMask = NoTruncation | WriteArrayAsGenericType | UseStructuralFallback | WriteTypeArgumentsOfSignature |
UseFullyQualifiedType | SuppressAnyReturnType | MultilineObjectLiterals | WriteClassExpressionAsTypeLiteral |
UseTypeOfFunction | OmitParameterModifiers | UseAliasDefinedOutsideCurrentScope | AllowUniqueESSymbolType | InTypeAlias |
UseSingleQuotesForStringLiteralType | NoTypeReduction | OmitThisParameter | AllowComputedPropertyEnums
UseSingleQuotesForStringLiteralType | NoTypeReduction | OmitThisParameter | WriteComputedProps
}

export const enum SymbolFormatFlags {
Expand All @@ -4903,7 +4905,7 @@ namespace ts {
UseAliasDefinedOutsideCurrentScope = 1 << 3,

// { [E.A]: 1 }
AllowComputedPropertyEnums = 1 << 4,
WriteComputedProps = 1 << 4,

// Skip building an accessible symbol chain
/* @internal */ DoNotIncludeSymbolChain = 1 << 5,
Expand Down
9 changes: 3 additions & 6 deletions src/services/codefixes/fixAddMissingMember.ts
Expand Up @@ -642,12 +642,9 @@ namespace ts.codefix {
}

function createPropertyNameFromSymbol(symbol: Symbol, target: ScriptTarget, quotePreference: QuotePreference, checker: TypeChecker) {
if (isTransientSymbol(symbol) && symbol.nameType && symbol.nameType.flags & (TypeFlags.UniqueESSymbol | TypeFlags.EnumLiteral)) {
const nameTypeSymbol = symbol.nameType.symbol;
const expression = checker.symbolToExpression(nameTypeSymbol, SymbolFlags.Value, nameTypeSymbol.valueDeclaration, NodeBuilderFlags.AllowUniqueESSymbolType);
if (expression) {
return factory.createComputedPropertyName(expression);
}
if (isTransientSymbol(symbol)) {
const prop = checker.symbolToNode(symbol, SymbolFlags.Value, /*enclosingDeclaration*/ undefined, NodeBuilderFlags.WriteComputedProps);
if (prop && isComputedPropertyName(prop)) return prop;
}
return createPropertyNameNodeForIdentifierOrLiteral(symbol.name, target, quotePreference === QuotePreference.Single);
}
Expand Down
8 changes: 5 additions & 3 deletions tests/baselines/reference/api/tsserverlibrary.d.ts
Expand Up @@ -2338,6 +2338,8 @@ declare namespace ts {
/** Note that the resulting nodes cannot be checked. */
symbolToExpression(symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): Expression | undefined;
/** Note that the resulting nodes cannot be checked. */
symbolToNode(symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): Node | undefined;
/** Note that the resulting nodes cannot be checked. */
symbolToTypeParameterDeclarations(symbol: Symbol, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): NodeArray<TypeParameterDeclaration> | undefined;
/** Note that the resulting nodes cannot be checked. */
symbolToParameterDeclaration(symbol: Symbol, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): ParameterDeclaration | undefined;
Expand Down Expand Up @@ -2436,7 +2438,7 @@ declare namespace ts {
AllowEmptyTuple = 524288,
AllowUniqueESSymbolType = 1048576,
AllowEmptyIndexInfoType = 2097152,
AllowComputedPropertyEnums = 1073741824,
WriteComputedProps = 1073741824,
AllowNodeModulesRelativePaths = 67108864,
IgnoreErrors = 70221824,
InObjectTypeLiteral = 4194304,
Expand Down Expand Up @@ -2466,7 +2468,7 @@ declare namespace ts {
InElementType = 2097152,
InFirstTypeArgument = 4194304,
InTypeAlias = 8388608,
AllowComputedPropertyEnums = 1073741824,
WriteComputedProps = 1073741824,
/** @deprecated */ WriteOwnNameForAnyLike = 0,
NodeBuilderFlagsMask = 1922071915
}
Expand All @@ -2476,7 +2478,7 @@ declare namespace ts {
UseOnlyExternalAliasing = 2,
AllowAnyNodeKind = 4,
UseAliasDefinedOutsideCurrentScope = 8,
AllowComputedPropertyEnums = 16,
WriteComputedProps = 16,
}
export enum TypePredicateKind {
This = 0,
Expand Down
8 changes: 5 additions & 3 deletions tests/baselines/reference/api/typescript.d.ts
Expand Up @@ -2338,6 +2338,8 @@ declare namespace ts {
/** Note that the resulting nodes cannot be checked. */
symbolToExpression(symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): Expression | undefined;
/** Note that the resulting nodes cannot be checked. */
symbolToNode(symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): Node | undefined;
/** Note that the resulting nodes cannot be checked. */
symbolToTypeParameterDeclarations(symbol: Symbol, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): NodeArray<TypeParameterDeclaration> | undefined;
/** Note that the resulting nodes cannot be checked. */
symbolToParameterDeclaration(symbol: Symbol, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): ParameterDeclaration | undefined;
Expand Down Expand Up @@ -2436,7 +2438,7 @@ declare namespace ts {
AllowEmptyTuple = 524288,
AllowUniqueESSymbolType = 1048576,
AllowEmptyIndexInfoType = 2097152,
AllowComputedPropertyEnums = 1073741824,
WriteComputedProps = 1073741824,
AllowNodeModulesRelativePaths = 67108864,
IgnoreErrors = 70221824,
InObjectTypeLiteral = 4194304,
Expand Down Expand Up @@ -2466,7 +2468,7 @@ declare namespace ts {
InElementType = 2097152,
InFirstTypeArgument = 4194304,
InTypeAlias = 8388608,
AllowComputedPropertyEnums = 1073741824,
WriteComputedProps = 1073741824,
/** @deprecated */ WriteOwnNameForAnyLike = 0,
NodeBuilderFlagsMask = 1922071915
}
Expand All @@ -2476,7 +2478,7 @@ declare namespace ts {
UseOnlyExternalAliasing = 2,
AllowAnyNodeKind = 4,
UseAliasDefinedOutsideCurrentScope = 8,
AllowComputedPropertyEnums = 16,
WriteComputedProps = 16,
}
export enum TypePredicateKind {
This = 0,
Expand Down

0 comments on commit 41d2849

Please sign in to comment.