@@ -153,9 +153,9 @@ namespace ts.Completions {
153
153
return stringCompletions ;
154
154
}
155
155
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 ;
159
159
}
160
160
161
161
if ( contextToken && isBreakOrContinueStatement ( contextToken . parent )
@@ -988,56 +988,51 @@ namespace ts.Completions {
988
988
return ! ! symbol . declarations ?. some ( d => d . kind === SyntaxKind . SourceFile ) ;
989
989
}
990
990
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 {
992
992
if ( ! contextToken ) return undefined ;
993
993
994
994
const typeLiteralNode = tryGetTypeLiteralNode ( contextToken ) ;
995
+ if ( ! typeLiteralNode ) return undefined ;
995
996
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 ;
999
999
1000
- const containerExpectedType = tryGetTypeArgumentSubType ( containerTypeNode , checker ) ;
1001
- if ( ! containerExpectedType ) {
1002
- return undefined ;
1003
- }
1000
+ const containerExpectedType = tryGetTypeArgumentSubType ( containerTypeNode , checker ) ;
1001
+ if ( ! containerExpectedType ) return undefined ;
1004
1002
1005
- const containerActualType = checker . getTypeFromTypeNode ( containerTypeNode ) ;
1003
+ const containerActualType = checker . getTypeFromTypeNode ( containerTypeNode ) ;
1006
1004
1007
- const members = getPropertiesForCompletion ( containerExpectedType , checker ) ;
1008
- const existingMembers = getPropertiesForCompletion ( containerActualType , checker ) ;
1005
+ const members = getPropertiesForCompletion ( containerExpectedType , checker ) ;
1006
+ const existingMembers = getPropertiesForCompletion ( containerActualType , checker ) ;
1009
1007
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 ) ) ;
1012
1010
1013
- const missingMembers = filter ( members , s => ! existingMemberEscapedNames . has ( s . escapedName ) ) ;
1011
+ const missingMembers = filter ( members , s => ! existingMemberEscapedNames . has ( s . escapedName ) ) ;
1014
1012
1015
- const location = getTouchingToken ( sourceFile , position ) ;
1013
+ const location = getTouchingToken ( sourceFile , position ) ;
1016
1014
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
+ ) ;
1039
1029
1040
- return undefined ;
1030
+ return {
1031
+ isGlobalCompletion : false ,
1032
+ isMemberCompletion : true ,
1033
+ isNewIdentifierLocation : false ,
1034
+ entries
1035
+ } ;
1041
1036
}
1042
1037
1043
1038
function getCompletionData (
@@ -2943,18 +2938,16 @@ namespace ts.Completions {
2943
2938
}
2944
2939
2945
2940
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 ;
2956
2942
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
+ }
2958
2951
}
2959
2952
2960
2953
// TODO: GH#19856 Would like to return `node is Node & { parent: (ClassElement | TypeElement) & { parent: ObjectTypeDeclaration } }` but then compilation takes > 10 minutes
0 commit comments