Skip to content

Commit 660a184

Browse files
gabrittoCopilot
authored andcommitted
Fix unknown extension crash in completions (#2679)
1 parent 1ab31ba commit 660a184

2 files changed

Lines changed: 56 additions & 3 deletions

File tree

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package fourslash_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/microsoft/typescript-go/internal/fourslash"
7+
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
8+
"github.com/microsoft/typescript-go/internal/testutil"
9+
)
10+
11+
func TestCompletionsPathUnknownExtension(t *testing.T) {
12+
t.Parallel()
13+
defer testutil.RecoverAndFail(t, "Panic on fourslash test")
14+
15+
const content = `// @filename: src/some-file.ruhroh
16+
/* This is just a test file that needs to exist. */
17+
18+
// @filename: package.json
19+
{
20+
"imports": {
21+
"#/*": "./src/*"
22+
}
23+
}
24+
25+
// @filename: src/globals.d.ts
26+
declare module "*.ruhroh";
27+
28+
// @filename: src/a.mts
29+
import "#//*$*/"
30+
31+
// @filename: tsconfig.json
32+
{
33+
"compilerOptions": {
34+
"module": "preserve",
35+
"moduleResolution": "bundler",
36+
"rootDir": "src"
37+
},
38+
"include": ["src"]
39+
}`
40+
41+
f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content)
42+
defer done()
43+
f.VerifyCompletions(t, "$", &fourslash.CompletionsExpectedList{
44+
IsIncomplete: false,
45+
ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{
46+
CommitCharacters: &[]string{},
47+
EditRange: Ignored,
48+
},
49+
Items: &fourslash.CompletionsExpectedItems{
50+
Includes: []fourslash.CompletionsExpectedItem{
51+
"some-file.ruhroh",
52+
},
53+
},
54+
})
55+
}

internal/ls/string_completions.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1939,10 +1939,8 @@ func kindModifiersFromExtension(extension string) lsutil.ScriptElementKindModifi
19391939
return lsutil.ScriptElementKindModifierCts
19401940
case tspath.ExtensionTsBuildInfo:
19411941
panic(fmt.Sprintf("Extension %v is unsupported.", tspath.ExtensionTsBuildInfo))
1942-
case "":
1943-
return lsutil.ScriptElementKindModifierNone
19441942
default:
1945-
panic(fmt.Sprintf("Unexpected extension: %v", extension))
1943+
return lsutil.ScriptElementKindModifierNone
19461944
}
19471945
}
19481946

0 commit comments

Comments
 (0)