Skip to content

Commit 1eb53a5

Browse files
committed
fix(array-methods): completions crash after [].
1 parent a32ebd5 commit 1eb53a5

File tree

4 files changed

+26
-10
lines changed

4 files changed

+26
-10
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,4 +205,4 @@
205205
"runTest": false
206206
}
207207
}
208-
}
208+
}

typescript/src/completions/arrayMethods.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ export default (entries: ts.CompletionEntry[], position: number, sourceFile: ts.
3737
return c('arrayMethodsSnippets.defaultItemName')
3838
},
3939
}
40-
const cleanSourceText = lowerCaseFirst(getItemNameFromNode(nodeBeforeDot)?.replace(/^(?:all)?(.+?)(?:List)?$/, '$1') ?? '') || defaultItemName.value
40+
const _cleanSourceText = getItemNameFromNode(nodeBeforeDot)?.replace(/^(?:all)?(.+?)(?:List)?$/, '$1')
41+
const cleanSourceText = _cleanSourceText ? lowerCaseFirst(_cleanSourceText) : defaultItemName.value
4142
if (!cleanSourceText) return
4243
let inferredName = pluralize.singular(cleanSourceText)
4344
// both can be undefined

typescript/test/completions.spec.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -365,15 +365,22 @@ test('Emmet completion', () => {
365365
})
366366

367367
test('Array Method Snippets', () => {
368-
const positions = newFileContents(/*ts*/ `
368+
const { completion } = fourslashLikeTester(/*ts*/ `
369369
const users = []
370-
users./*|*/
371-
;users.filter(Boolean).flatMap/*|*/
370+
users./*0*/
371+
;users.filter(Boolean).flatMap/*1*/
372+
;[]./*2*/
372373
`)
373-
for (const [i, pos] of positions.entries()) {
374-
const { entries } = getCompletionsAtPosition(pos) ?? {}
375-
expect(entries?.find(({ name }) => name === 'flatMap')?.insertText, i.toString()).toBe('flatMap((${2:user}) => $3)')
376-
}
374+
completion([0, 1], {
375+
includes: {
376+
insertTexts: ['flatMap((${2:user}) => $3)'],
377+
},
378+
})
379+
completion(2, {
380+
includes: {
381+
insertTexts: ['flatMap((${2:item}) => $3)'],
382+
},
383+
})
377384
})
378385

379386
test('String template type completions', () => {

typescript/test/testing.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,20 @@ export const fourslashLikeTester = (contents: string, fileName = entrypoint) =>
109109
}
110110
}
111111
if (includes) {
112-
const { names, all } = includes
112+
const { names, all, insertTexts } = includes
113113
if (names) {
114114
for (const name of names) {
115115
expect(result?.entryNames, message).toContain(name)
116116
}
117117
}
118+
if (insertTexts) {
119+
for (const insertText of insertTexts) {
120+
expect(
121+
result.entries.map(entry => entry.insertText),
122+
message,
123+
).toContain(insertText)
124+
}
125+
}
118126
if (all) {
119127
for (const entry of result.entries.filter(e => names?.includes(e.name))) {
120128
expect(entry, entry.name + message).toContain(all)

0 commit comments

Comments
 (0)