Skip to content

Commit 7c0366e

Browse files
committed
Refactor for better readability
1 parent 0a10a54 commit 7c0366e

File tree

1 file changed

+45
-52
lines changed

1 file changed

+45
-52
lines changed

src/services/completions.ts

Lines changed: 45 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,9 @@ namespace ts.Completions {
153153
return stringCompletions;
154154
}
155155

156-
const typeLiteralCompletions = getTypeLiteralInTypeArgumentCompletions(sourceFile, position, contextToken, typeChecker, compilerOptions, log, preferences);
157-
if (typeLiteralCompletions) {
158-
return typeLiteralCompletions;
156+
const objectTypeLiteralCompletions = getObjectTypeLiteralInTypeArgumentCompletions(sourceFile, position, contextToken, typeChecker, compilerOptions, log, preferences);
157+
if (objectTypeLiteralCompletions) {
158+
return objectTypeLiteralCompletions;
159159
}
160160

161161
if (contextToken && isBreakOrContinueStatement(contextToken.parent)
@@ -988,56 +988,51 @@ namespace ts.Completions {
988988
return !!symbol.declarations?.some(d => d.kind === SyntaxKind.SourceFile);
989989
}
990990

991-
function getTypeLiteralInTypeArgumentCompletions(sourceFile: SourceFile, position: number, contextToken: Node | undefined, checker: TypeChecker, options: CompilerOptions, log: Log, preferences: UserPreferences): CompletionInfo | undefined{
991+
function getObjectTypeLiteralInTypeArgumentCompletions(sourceFile: SourceFile, position: number, contextToken: Node | undefined, checker: TypeChecker, options: CompilerOptions, log: Log, preferences: UserPreferences): CompletionInfo | undefined{
992992
if (!contextToken) return undefined;
993993

994994
const typeLiteralNode = tryGetTypeLiteralNode(contextToken);
995+
if (!typeLiteralNode) return undefined;
995996

996-
if (typeLiteralNode) {
997-
const intersectionTypeNode = isIntersectionTypeNode(typeLiteralNode.parent) ? typeLiteralNode.parent : undefined;
998-
const containerTypeNode = intersectionTypeNode || typeLiteralNode;
997+
const intersectionTypeNode = isIntersectionTypeNode(typeLiteralNode.parent) ? typeLiteralNode.parent : undefined;
998+
const containerTypeNode = intersectionTypeNode || typeLiteralNode;
999999

1000-
const containerExpectedType = tryGetTypeArgumentSubType(containerTypeNode, checker);
1001-
if (!containerExpectedType) {
1002-
return undefined;
1003-
}
1000+
const containerExpectedType = tryGetTypeArgumentSubType(containerTypeNode, checker);
1001+
if (!containerExpectedType) return undefined;
10041002

1005-
const containerActualType = checker.getTypeFromTypeNode(containerTypeNode);
1003+
const containerActualType = checker.getTypeFromTypeNode(containerTypeNode);
10061004

1007-
const members = getPropertiesForCompletion(containerExpectedType, checker);
1008-
const existingMembers = getPropertiesForCompletion(containerActualType, checker);
1005+
const members = getPropertiesForCompletion(containerExpectedType, checker);
1006+
const existingMembers = getPropertiesForCompletion(containerActualType, checker);
10091007

1010-
const existingMemberEscapedNames: Set<__String> = new Set();
1011-
forEach(existingMembers, s => existingMemberEscapedNames.add(s.escapedName));
1008+
const existingMemberEscapedNames: Set<__String> = new Set();
1009+
forEach(existingMembers, s => existingMemberEscapedNames.add(s.escapedName));
10121010

1013-
const missingMembers = filter(members, s => !existingMemberEscapedNames.has(s.escapedName));
1011+
const missingMembers = filter(members, s => !existingMemberEscapedNames.has(s.escapedName));
10141012

1015-
const location = getTouchingToken(sourceFile, position);
1013+
const location = getTouchingToken(sourceFile, position);
10161014

1017-
const entries: CompletionEntry[] = [];
1018-
getCompletionEntriesFromSymbols(
1019-
missingMembers,
1020-
entries,
1021-
/* contextToken */ undefined,
1022-
location,
1023-
sourceFile,
1024-
checker,
1025-
options.target!,
1026-
log,
1027-
CompletionKind.MemberLike,
1028-
preferences,
1029-
options
1030-
);
1031-
1032-
return {
1033-
isGlobalCompletion: false,
1034-
isMemberCompletion: true,
1035-
isNewIdentifierLocation: false,
1036-
entries
1037-
};
1038-
}
1015+
const entries: CompletionEntry[] = [];
1016+
getCompletionEntriesFromSymbols(
1017+
missingMembers,
1018+
entries,
1019+
/* contextToken */ undefined,
1020+
location,
1021+
sourceFile,
1022+
checker,
1023+
options.target!,
1024+
log,
1025+
CompletionKind.MemberLike,
1026+
preferences,
1027+
options
1028+
);
10391029

1040-
return undefined;
1030+
return {
1031+
isGlobalCompletion: false,
1032+
isMemberCompletion: true,
1033+
isNewIdentifierLocation: false,
1034+
entries
1035+
};
10411036
}
10421037

10431038
function getCompletionData(
@@ -2943,18 +2938,16 @@ namespace ts.Completions {
29432938
}
29442939

29452940
const t = tryGetTypeArgumentSubType(node.parent, checker);
2946-
if (t) {
2947-
switch (node.kind) {
2948-
case SyntaxKind.PropertySignature:
2949-
return checker.getTypeOfPropertyOfContextualType(t, node.symbol.escapedName);
2950-
case SyntaxKind.IntersectionType:
2951-
case SyntaxKind.TypeLiteral:
2952-
case SyntaxKind.UnionType:
2953-
return t;
2954-
}
2955-
}
2941+
if (!t) return undefined;
29562942

2957-
return undefined;
2943+
switch (node.kind) {
2944+
case SyntaxKind.PropertySignature:
2945+
return checker.getTypeOfPropertyOfContextualType(t, node.symbol.escapedName);
2946+
case SyntaxKind.IntersectionType:
2947+
case SyntaxKind.TypeLiteral:
2948+
case SyntaxKind.UnionType:
2949+
return t;
2950+
}
29582951
}
29592952

29602953
// TODO: GH#19856 Would like to return `node is Node & { parent: (ClassElement | TypeElement) & { parent: ObjectTypeDeclaration } }` but then compilation takes > 10 minutes

0 commit comments

Comments
 (0)