Skip to content

Commit c7f0618

Browse files
committed
fix(method-snippets): fix expanding method snippets in some edge-cases
1 parent 62f1cd5 commit c7f0618

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

typescript/src/completions/functionCompletions.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ export default (entries: ts.CompletionEntry[]) => {
77
const { languageService, c, sourceFile, position } = sharedCompletionContext
88

99
const methodSnippetInsertTextMode = c('methodSnippetsInsertText')
10-
const enableResolvingInsertText = c('enableMethodSnippets') && methodSnippetInsertTextMode !== 'disable'
10+
const nextChar = sourceFile.getFullText().slice(position, position + 1)
11+
const enableResolvingInsertText = !['(', '.', '`'].includes(nextChar) && c('enableMethodSnippets') && methodSnippetInsertTextMode !== 'disable'
1112
const changeKindToFunction = c('experiments.changeKindToFunction')
1213

1314
if (!enableResolvingInsertText && !changeKindToFunction) return

typescript/src/constructMethodSnippet.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ export default (
1919
if (!containerNode || isTypeNode(containerNode)) return
2020

2121
const checker = languageService.getProgram()!.getTypeChecker()!
22-
const type = symbol ? checker.getTypeOfSymbol(symbol) : checker.getTypeAtLocation(containerNode)
22+
let type = symbol ? checker.getTypeOfSymbol(symbol) : checker.getTypeAtLocation(containerNode)
23+
// give another chance
24+
if (symbol && type['intrinsicName'] === 'error') type = checker.getTypeOfSymbolAtLocation(symbol, containerNode)
2325

2426
if (ts.isIdentifier(containerNode)) containerNode = containerNode.parent
2527
if (ts.isPropertyAccessExpression(containerNode)) containerNode = containerNode.parent

0 commit comments

Comments
 (0)