@@ -1021,7 +1021,8 @@ namespace ts.Completions {
1021
1021
const scopeNode = getScopeNode ( contextToken , adjustedPosition , sourceFile ) || sourceFile ;
1022
1022
isInSnippetScope = isSnippetScope ( scopeNode ) ;
1023
1023
1024
- const symbolMeanings = SymbolFlags . Type | SymbolFlags . Value | SymbolFlags . Namespace | SymbolFlags . Alias ;
1024
+ const isTypeOnly = isTypeOnlyCompletion ( ) ;
1025
+ const symbolMeanings = ( isTypeOnly ? SymbolFlags . None : SymbolFlags . Value ) | SymbolFlags . Type | SymbolFlags . Namespace | SymbolFlags . Alias ;
1025
1026
1026
1027
symbols = Debug . assertEachDefined ( typeChecker . getSymbolsInScope ( scopeNode , symbolMeanings ) , "getSymbolsInScope() should all be defined" ) ;
1027
1028
@@ -1070,9 +1071,9 @@ namespace ts.Completions {
1070
1071
}
1071
1072
1072
1073
function filterGlobalCompletion ( symbols : Symbol [ ] ) : void {
1073
- const isTypeOnlyCompletion = insideJsDocTagTypeExpression || ! isContextTokenValueLocation ( contextToken ) && ( isPartOfTypeNode ( location ) || isContextTokenTypeLocation ( contextToken ) ) ;
1074
- const allowTypes = isTypeOnlyCompletion || ! isContextTokenValueLocation ( contextToken ) && isPossiblyTypeArgumentPosition ( contextToken , sourceFile , typeChecker ) ;
1075
- if ( isTypeOnlyCompletion ) keywordFilters = KeywordCompletionFilters . TypeKeywords ;
1074
+ const isTypeOnly = isTypeOnlyCompletion ( ) ;
1075
+ const allowTypes = isTypeOnly || ! isContextTokenValueLocation ( contextToken ) && isPossiblyTypeArgumentPosition ( contextToken , sourceFile , typeChecker ) ;
1076
+ if ( isTypeOnly ) keywordFilters = KeywordCompletionFilters . TypeKeywords ;
1076
1077
1077
1078
filterMutate ( symbols , symbol => {
1078
1079
if ( ! isSourceFile ( location ) ) {
@@ -1091,7 +1092,7 @@ namespace ts.Completions {
1091
1092
if ( allowTypes ) {
1092
1093
// Its a type, but you can reach it by namespace.type as well
1093
1094
const symbolAllowedAsType = symbolCanBeReferencedAtTypeLocation ( symbol ) ;
1094
- if ( symbolAllowedAsType || isTypeOnlyCompletion ) {
1095
+ if ( symbolAllowedAsType || isTypeOnly ) {
1095
1096
return symbolAllowedAsType ;
1096
1097
}
1097
1098
}
@@ -1102,6 +1103,10 @@ namespace ts.Completions {
1102
1103
} ) ;
1103
1104
}
1104
1105
1106
+ function isTypeOnlyCompletion ( ) : boolean {
1107
+ return insideJsDocTagTypeExpression || ! isContextTokenValueLocation ( contextToken ) && ( isPartOfTypeNode ( location ) || isContextTokenTypeLocation ( contextToken ) ) ;
1108
+ }
1109
+
1105
1110
function isContextTokenValueLocation ( contextToken : Node ) {
1106
1111
return contextToken &&
1107
1112
contextToken . kind === SyntaxKind . TypeOfKeyword &&
0 commit comments