Skip to content

Commit 0820f69

Browse files
author
Arthur Ozga
committed
respond to comments
1 parent b2176c1 commit 0820f69

File tree

6 files changed

+40
-43
lines changed

6 files changed

+40
-43
lines changed

src/compiler/checker.ts

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2279,7 +2279,7 @@ namespace ts {
22792279
}
22802280

22812281
function typeToString(type: Type, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string {
2282-
const typeNode = nodeBuilder.typeToTypeNode(type, enclosingDeclaration, toNodeBuilderFlags(flags) | NodeBuilderFlags.ignoreErrors | NodeBuilderFlags.WriteTypeParametersInQualifiedName);
2282+
const typeNode = nodeBuilder.typeToTypeNode(type, enclosingDeclaration, toNodeBuilderFlags(flags) | NodeBuilderFlags.IgnoreErrors | NodeBuilderFlags.WriteTypeParametersInQualifiedName);
22832283
Debug.assert(typeNode !== undefined, "should always get typenode?");
22842284
const options = { removeComments: true };
22852285
const writer = createTextWriter("");
@@ -2361,7 +2361,7 @@ namespace ts {
23612361

23622362
function typeToTypeNodeHelper(type: Type, context: NodeBuilderContext): TypeNode {
23632363
const inTypeAlias = context.flags & NodeBuilderFlags.InTypeAlias;
2364-
context.flags &= ~(NodeBuilderFlags.InTypeAlias);
2364+
context.flags &= ~NodeBuilderFlags.InTypeAlias;
23652365

23662366
if (!type) {
23672367
context.encounteredError = true;
@@ -2419,7 +2419,7 @@ namespace ts {
24192419
return createKeywordTypeNode(SyntaxKind.ObjectKeyword);
24202420
}
24212421
if (type.flags & TypeFlags.TypeParameter && (type as TypeParameter).isThisType) {
2422-
if (context.flags & NodeBuilderFlags.inObjectTypeLiteral) {
2422+
if (context.flags & NodeBuilderFlags.InObjectTypeLiteral) {
24232423
if (!context.encounteredError && !(context.flags & NodeBuilderFlags.AllowThisInObjectLiteral)) {
24242424
context.encounteredError = true;
24252425
}
@@ -2441,12 +2441,12 @@ namespace ts {
24412441
if (!inTypeAlias && type.aliasSymbol &&
24422442
isSymbolAccessible(type.aliasSymbol, context.enclosingDeclaration, SymbolFlags.Type, /*shouldComputeAliasesToMakeVisible*/ false).accessibility === SymbolAccessibility.Accessible) {
24432443
const name = symbolToTypeReferenceName(type.aliasSymbol);
2444-
const typeArgumentNodes = type.aliasTypeArguments && mapToTypeNodeArray(type.aliasTypeArguments, context);
2444+
const typeArgumentNodes = mapToTypeNodes(type.aliasTypeArguments, context);
24452445
return createTypeReferenceNode(name, typeArgumentNodes);
24462446
}
24472447
if (type.flags & (TypeFlags.Union | TypeFlags.Intersection)) {
24482448
const types = type.flags & TypeFlags.Union ? formatUnionTypes((<UnionType>type).types) : (<IntersectionType>type).types;
2449-
const typeNodes = types && mapToTypeNodeArray(types, context);
2449+
const typeNodes = mapToTypeNodes(types, context);
24502450
if (typeNodes && typeNodes.length > 0) {
24512451
const unionOrIntersectionTypeNode = createUnionOrIntersectionTypeNode(type.flags & TypeFlags.Union ? SyntaxKind.UnionType : SyntaxKind.IntersectionType, typeNodes);
24522452
return unionOrIntersectionTypeNode;
@@ -2567,7 +2567,7 @@ namespace ts {
25672567
}
25682568

25692569
const savedFlags = context.flags;
2570-
context.flags |= NodeBuilderFlags.inObjectTypeLiteral;
2570+
context.flags |= NodeBuilderFlags.InObjectTypeLiteral;
25712571
const members = createTypeNodesFromResolvedType(resolved);
25722572
context.flags = savedFlags;
25732573
const typeLiteralNode = createTypeLiteralNode(members);
@@ -2598,8 +2598,7 @@ namespace ts {
25982598
}
25992599
else if (type.target.objectFlags & ObjectFlags.Tuple) {
26002600
if (typeArguments.length > 0) {
2601-
const slice = typeArguments.slice(0, getTypeReferenceArity(type));
2602-
const tupleConstituentNodes = slice && mapToTypeNodeArray(slice, context);
2601+
const tupleConstituentNodes = mapToTypeNodes(typeArguments.slice(0, getTypeReferenceArity(type)), context);
26032602
if (tupleConstituentNodes && tupleConstituentNodes.length > 0) {
26042603
return createTupleTypeNode(tupleConstituentNodes);
26052604
}
@@ -2625,8 +2624,8 @@ namespace ts {
26252624
// When type parameters are their own type arguments for the whole group (i.e. we have
26262625
// the default outer type arguments), we don't show the group.
26272626
if (!rangeEquals(outerTypeParameters, typeArguments, start, i)) {
2628-
const slice = typeArguments.slice(start, i);
2629-
const typeArgumentNodes = slice && createNodeArray(mapToTypeNodeArray(slice, context));
2627+
const typeArgumentSlice = mapToTypeNodes(typeArguments.slice(start, i), context);
2628+
const typeArgumentNodes = typeArgumentSlice && createNodeArray(typeArgumentSlice);
26302629
const namePart = symbolToTypeReferenceName(parent);
26312630
(namePart.kind === SyntaxKind.Identifier ? <Identifier>namePart : namePart.right).typeArguments = typeArgumentNodes;
26322631

@@ -2654,10 +2653,9 @@ namespace ts {
26542653
}
26552654

26562655
let typeArgumentNodes: TypeNode[] | undefined;
2657-
if (some(typeArguments)) {
2656+
if (typeArguments.length > 0) {
26582657
const typeParameterCount = (type.target.typeParameters || emptyArray).length;
2659-
const slice = typeArguments && typeArguments.slice(i, typeParameterCount);
2660-
typeArgumentNodes = slice && mapToTypeNodeArray(slice, context);
2658+
typeArgumentNodes = mapToTypeNodes(typeArguments.slice(i, typeParameterCount), context);
26612659
}
26622660

26632661
if (typeArgumentNodes) {
@@ -2740,17 +2738,19 @@ namespace ts {
27402738
}
27412739
}
27422740

2743-
function mapToTypeNodeArray(types: Type[], context: NodeBuilderContext): TypeNode[] {
2744-
const result = [];
2745-
for (let i = 0; i < types.length; ++i) {
2746-
const type = types[i];
2747-
const typeNode = typeToTypeNodeHelper(type, context);
2748-
if (typeNode) {
2749-
result.push(typeNode);
2741+
function mapToTypeNodes(types: Type[], context: NodeBuilderContext): TypeNode[] {
2742+
if (some(types)) {
2743+
const result = [];
2744+
for (let i = 0; i < types.length; ++i) {
2745+
const type = types[i];
2746+
const typeNode = typeToTypeNodeHelper(type, context);
2747+
if (typeNode) {
2748+
result.push(typeNode);
2749+
}
27502750
}
2751-
}
27522751

2753-
return result;
2752+
return result;
2753+
}
27542754
}
27552755

27562756
function indexInfoToIndexSignatureDeclarationHelper(indexInfo: IndexInfo, kind: IndexKind, context: NodeBuilderContext): IndexSignatureDeclaration {
@@ -2890,9 +2890,7 @@ namespace ts {
28902890
}
28912891
}
28922892

2893-
if (typeParameters && typeParameters.length > 0) {
2894-
typeParameterNodes = mapToTypeNodeArray(typeParameters, context);
2895-
}
2893+
typeParameterNodes = mapToTypeNodes(typeParameters, context);
28962894
}
28972895

28982896
const symbolName = getNameOfSymbol(symbol, context);

src/compiler/emitter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2655,7 +2655,7 @@ namespace ts {
26552655
if (isIdentifier(textSourceNode)) {
26562656
return getEmitFlags(node) & EmitFlags.NoAsciiEscaping ?
26572657
`"${escapeString(getTextOfNode(textSourceNode))}"` :
2658-
`"${escapeNonAsciiCharacters(escapeString(getTextOfNode(textSourceNode)))}"`;
2658+
`"${escapeNonAsciiString(getTextOfNode(textSourceNode))}"`;
26592659
}
26602660
else {
26612661
return getLiteralTextOfNode(textSourceNode);

src/compiler/factory.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3607,16 +3607,17 @@ namespace ts {
36073607
}
36083608

36093609
export function parenthesizeElementTypeMembers(members: TypeNode[]) {
3610-
// TODO: does this lose `originalNode` ptr?
3611-
return createNodeArray(members.map(parenthesizeElementTypeMember));
3610+
return createNodeArray(sameMap(members, parenthesizeElementTypeMember));
36123611
}
36133612

36143613
export function parenthesizeTypeParameters(typeParameters: TypeNode[]) {
3615-
if (typeParameters && typeParameters.length > 0) {
3616-
const nodeArray = createNodeArray(typeParameters);
3617-
const firstEntry = nodeArray[0];
3618-
if (isFunctionOrConstructor(firstEntry) && firstEntry.typeParameters) {
3619-
nodeArray[0] = createParenthesizedType(firstEntry);
3614+
if (some(typeParameters)) {
3615+
const nodeArray = createNodeArray() as NodeArray<TypeNode>;
3616+
for (let i = 0; i < typeParameters.length; ++i) {
3617+
const entry = typeParameters[i];
3618+
nodeArray.push(i === 0 && isFunctionOrConstructorTypeNode(entry) && entry.typeParameters ?
3619+
createParenthesizedType(entry) :
3620+
entry);
36203621
}
36213622

36223623
return nodeArray;

src/compiler/types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,7 @@ namespace ts {
580580
/*@internal*/ autoGenerateKind?: GeneratedIdentifierKind; // Specifies whether to auto-generate the text for an identifier.
581581
/*@internal*/ autoGenerateId?: number; // Ensures unique generated identifiers get unique names, but clones get the same name.
582582
isInJSDocNamespace?: boolean; // if the node is a member in a JSDoc namespace
583-
/*@internal*/ typeArguments?: NodeArray<TypeNode>; // Only defined on synthesized nodes.Though not syntactically valid, used in emitting diagnostics.
583+
/*@internal*/ typeArguments?: NodeArray<TypeNode>; // Only defined on synthesized nodes. Though not syntactically valid, used in emitting diagnostics.
584584
}
585585

586586
// Transient identifier node (marked by id === -1)
@@ -2599,10 +2599,10 @@ namespace ts {
25992599
AllowEmptyUnionOrIntersection = 1 << 14,
26002600
AllowEmptyTuple = 1 << 15,
26012601

2602-
ignoreErrors = AllowThisInObjectLiteral | AllowQualifedNameInPlaceOfIdentifier | AllowAnonymousIdentifier | AllowEmptyUnionOrIntersection | AllowEmptyTuple,
2602+
IgnoreErrors = AllowThisInObjectLiteral | AllowQualifedNameInPlaceOfIdentifier | AllowAnonymousIdentifier | AllowEmptyUnionOrIntersection | AllowEmptyTuple,
26032603

26042604
// State
2605-
inObjectTypeLiteral = 1 << 20,
2605+
InObjectTypeLiteral = 1 << 20,
26062606
InTypeAlias = 1 << 23, // Writing type in type alias declaration
26072607
}
26082608

src/compiler/utilities.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -328,9 +328,8 @@ namespace ts {
328328
return getSourceTextOfNodeFromSourceFile(sourceFile, node);
329329
}
330330

331-
const escapeText = getEmitFlags(node) & EmitFlags.NoAsciiEscaping ?
332-
(text: string) => escapeString(text) :
333-
(text: string) => escapeNonAsciiCharacters(escapeString(text));
331+
const escapeText = getEmitFlags(node) & EmitFlags.NoAsciiEscaping ? escapeString : escapeNonAsciiString;
332+
334333
// If we can't reach the original source text, use the canonical form if it's a number,
335334
// or a (possibly escaped) quoted form of the original text if it's string-like.
336335
switch (node.kind) {
@@ -880,7 +879,7 @@ namespace ts {
880879
return false;
881880
}
882881

883-
export function isFunctionOrConstructor(node: Node): node is FunctionTypeNode | ConstructorTypeNode {
882+
export function isFunctionOrConstructorTypeNode(node: Node): node is FunctionTypeNode | ConstructorTypeNode {
884883
switch (node.kind) {
885884
case SyntaxKind.FunctionType:
886885
case SyntaxKind.ConstructorType:
@@ -2468,7 +2467,8 @@ namespace ts {
24682467
}
24692468

24702469
const nonAsciiCharacters = /[^\u0000-\u007F]/g;
2471-
export function escapeNonAsciiCharacters(s: string): string {
2470+
export function escapeNonAsciiString(s: string): string {
2471+
s = escapeString(s);
24722472
// Replace non-ASCII characters with '\uNNNN' escapes if any exist.
24732473
// Otherwise just return the original string.
24742474
return nonAsciiCharacters.test(s) ?

src/compiler/visitor.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -988,8 +988,6 @@ namespace ts {
988988
result = reduceNode((<PropertyDeclaration>node).initializer, cbNode, result);
989989
break;
990990

991-
case SyntaxKind.PropertySignature:
992-
993991
case SyntaxKind.MethodDeclaration:
994992
result = reduceNodes((<MethodDeclaration>node).decorators, cbNodes, result);
995993
result = reduceNodes((<MethodDeclaration>node).modifiers, cbNodes, result);

0 commit comments

Comments
 (0)