Skip to content

Commit 63b00de

Browse files
authored
Refine LSP with our own types, generate more stuff (#2141)
1 parent 4b4977a commit 63b00de

File tree

119 files changed

+5281
-2765
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+5281
-2765
lines changed

internal/fourslash/_scripts/convertFourslash.mts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ function parseVerifyApplyCodeActionArgs(arg: ts.Expression): string | undefined
506506
return undefined;
507507
}
508508
}
509-
props.push(`AutoImportData: &ls.AutoImportData{\n${dataProps.join("\n")}\n},`);
509+
props.push(`AutoImportData: &lsproto.AutoImportData{\n${dataProps.join("\n")}\n},`);
510510
break;
511511
case "description":
512512
descInit = getStringLiteralLike(init);
@@ -944,16 +944,16 @@ function parseExpectedCompletionItem(expr: ts.Expression, codeActionArgs?: Verif
944944
if (sourceInit = getStringLiteralLike(init)) {
945945
if (propName === "source" && sourceInit.text.endsWith("/")) {
946946
// source: "ClassMemberSnippet/"
947-
itemProps.push(`Data: PtrTo(any(&ls.CompletionItemData{
947+
itemProps.push(`Data: &lsproto.CompletionItemData{
948948
Source: ${getGoStringLiteral(sourceInit.text)},
949-
})),`);
949+
},`);
950950
break;
951951
}
952-
itemProps.push(`Data: PtrTo(any(&ls.CompletionItemData{
953-
AutoImport: &ls.AutoImportData{
952+
itemProps.push(`Data: &lsproto.CompletionItemData{
953+
AutoImport: &lsproto.AutoImportData{
954954
ModuleSpecifier: ${getGoStringLiteral(sourceInit.text)},
955955
},
956-
})),`);
956+
},`);
957957
}
958958
else {
959959
console.error(`Expected string literal for source/sourceDisplay, got ${init.getText()}`);

internal/fourslash/fourslash.go

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -252,14 +252,13 @@ func (f *FourslashTest) nextID() int32 {
252252
}
253253

254254
func (f *FourslashTest) initialize(t *testing.T, capabilities *lsproto.ClientCapabilities) {
255-
initOptions := map[string]any{
256-
// Hack: disable push diagnostics entirely, since the fourslash runner does not
257-
// yet gracefully handle non-request messages.
258-
"disablePushDiagnostics": true,
259-
}
260255
params := &lsproto.InitializeParams{
261-
Locale: ptrTo("en-US"),
262-
InitializationOptions: ptrTo[any](initOptions),
256+
Locale: ptrTo("en-US"),
257+
InitializationOptions: &lsproto.InitializationOptions{
258+
// Hack: disable push diagnostics entirely, since the fourslash runner does not
259+
// yet gracefully handle non-request messages.
260+
DisablePushDiagnostics: ptrTo(true),
261+
},
263262
}
264263
params.Capabilities = getCapabilitiesWithDefaults(capabilities)
265264
// !!! check for errors?
@@ -717,8 +716,8 @@ func (f *FourslashTest) VerifyCompletions(t *testing.T, markerInput MarkerInput,
717716
if item.Label != expectedAction.Name || item.Data == nil {
718717
return false
719718
}
720-
data, ok := (*item.Data).(*ls.CompletionItemData)
721-
if !ok || data.AutoImport == nil {
719+
data := item.Data
720+
if data.AutoImport == nil {
722721
return false
723722
}
724723
return data.AutoImport.ModuleSpecifier == expectedAction.Source
@@ -956,16 +955,12 @@ var (
956955
)
957956

958957
func (f *FourslashTest) verifyCompletionItem(t *testing.T, prefix string, actual *lsproto.CompletionItem, expected *lsproto.CompletionItem) {
959-
var actualAutoImportData, expectedAutoImportData *ls.AutoImportData
958+
var actualAutoImportData, expectedAutoImportData *lsproto.AutoImportData
960959
if actual.Data != nil {
961-
if data, ok := (*actual.Data).(*ls.CompletionItemData); ok {
962-
actualAutoImportData = data.AutoImport
963-
}
960+
actualAutoImportData = actual.Data.AutoImport
964961
}
965962
if expected.Data != nil {
966-
if data, ok := (*expected.Data).(*ls.CompletionItemData); ok {
967-
expectedAutoImportData = data.AutoImport
968-
}
963+
expectedAutoImportData = expected.Data.AutoImport
969964
}
970965
if (actualAutoImportData == nil) != (expectedAutoImportData == nil) {
971966
t.Fatal(prefix + "Mismatch in auto-import data presence")
@@ -1034,7 +1029,7 @@ func assertDeepEqual(t *testing.T, actual any, expected any, prefix string, opts
10341029
type ApplyCodeActionFromCompletionOptions struct {
10351030
Name string
10361031
Source string
1037-
AutoImportData *ls.AutoImportData
1032+
AutoImportData *lsproto.AutoImportData
10381033
Description string
10391034
NewFileContent *string
10401035
NewRangeContent *string
@@ -1058,16 +1053,13 @@ func (f *FourslashTest) VerifyApplyCodeActionFromCompletion(t *testing.T, marker
10581053
if item.Label != options.Name || item.Data == nil {
10591054
return false
10601055
}
1061-
data, ok := (*item.Data).(*ls.CompletionItemData)
1062-
if !ok {
1063-
return false
1064-
}
1056+
data := item.Data
10651057
if options.AutoImportData != nil {
10661058
return data.AutoImport != nil && ((data.AutoImport.FileName == options.AutoImportData.FileName) &&
10671059
(options.AutoImportData.ModuleSpecifier == "" || data.AutoImport.ModuleSpecifier == options.AutoImportData.ModuleSpecifier) &&
10681060
(options.AutoImportData.ExportName == "" || data.AutoImport.ExportName == options.AutoImportData.ExportName) &&
1069-
(options.AutoImportData.AmbientModuleName == nil || data.AutoImport.AmbientModuleName == options.AutoImportData.AmbientModuleName) &&
1070-
(options.AutoImportData.IsPackageJsonImport == core.TSUnknown || data.AutoImport.IsPackageJsonImport == options.AutoImportData.IsPackageJsonImport))
1061+
(options.AutoImportData.AmbientModuleName == "" || data.AutoImport.AmbientModuleName == options.AutoImportData.AmbientModuleName) &&
1062+
data.AutoImport.IsPackageJsonImport == options.AutoImportData.IsPackageJsonImport)
10711063
}
10721064
if data.AutoImport == nil && data.Source != "" && data.Source == options.Source {
10731065
return true

internal/fourslash/tests/gen/autoImportCompletionAmbientMergedModule1_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
77
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
8-
"github.com/microsoft/typescript-go/internal/ls"
98
"github.com/microsoft/typescript-go/internal/lsp/lsproto"
109
"github.com/microsoft/typescript-go/internal/testutil"
1110
)
@@ -57,9 +56,9 @@ export class MoveInsideNextQuote extends MoveQuoteMatch {/*1*/
5756
InsertText: PtrTo("public execActionWithCount(position: Position): Promise<void> {\n}"),
5857
FilterText: PtrTo("execActionWithCount"),
5958
AdditionalTextEdits: fourslash.AnyTextEdits,
60-
Data: PtrTo(any(&ls.CompletionItemData{
59+
Data: &lsproto.CompletionItemData{
6160
Source: "ClassMemberSnippet/",
62-
})),
61+
},
6362
},
6463
},
6564
},

internal/fourslash/tests/gen/autoImportCompletionExportEqualsWithDefault1_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
77
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
8-
"github.com/microsoft/typescript-go/internal/ls"
98
"github.com/microsoft/typescript-go/internal/lsp/lsproto"
109
"github.com/microsoft/typescript-go/internal/testutil"
1110
)
@@ -75,9 +74,9 @@ export = Container;`
7574
InsertText: PtrTo("parent: Container_ | Document_ | undefined;"),
7675
FilterText: PtrTo("parent"),
7776
AdditionalTextEdits: fourslash.AnyTextEdits,
78-
Data: PtrTo(any(&ls.CompletionItemData{
77+
Data: &lsproto.CompletionItemData{
7978
Source: "ClassMemberSnippet/",
80-
})),
79+
},
8180
},
8281
},
8382
},

internal/fourslash/tests/gen/autoImportCompletionExportListAugmentation1_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
77
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
8-
"github.com/microsoft/typescript-go/internal/ls"
98
"github.com/microsoft/typescript-go/internal/lsp/lsproto"
109
"github.com/microsoft/typescript-go/internal/testutil"
1110
)
@@ -51,9 +50,9 @@ class FullPiece extends Piece {
5150
InsertText: PtrTo("container: Container;"),
5251
FilterText: PtrTo("container"),
5352
AdditionalTextEdits: fourslash.AnyTextEdits,
54-
Data: PtrTo(any(&ls.CompletionItemData{
53+
Data: &lsproto.CompletionItemData{
5554
Source: "ClassMemberSnippet/",
56-
})),
55+
},
5756
},
5857
},
5958
},

internal/fourslash/tests/gen/autoImportCompletionExportListAugmentation2_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
77
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
8-
"github.com/microsoft/typescript-go/internal/ls"
98
"github.com/microsoft/typescript-go/internal/lsp/lsproto"
109
"github.com/microsoft/typescript-go/internal/testutil"
1110
)
@@ -59,9 +58,9 @@ class PingCommand extends Command {
5958
InsertText: PtrTo("get container(): Container {\n}"),
6059
FilterText: PtrTo("container"),
6160
AdditionalTextEdits: fourslash.AnyTextEdits,
62-
Data: PtrTo(any(&ls.CompletionItemData{
61+
Data: &lsproto.CompletionItemData{
6362
Source: "ClassMemberSnippet/",
64-
})),
63+
},
6564
},
6665
},
6766
},

internal/fourslash/tests/gen/autoImportCompletionExportListAugmentation3_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
77
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
8-
"github.com/microsoft/typescript-go/internal/ls"
98
"github.com/microsoft/typescript-go/internal/lsp/lsproto"
109
"github.com/microsoft/typescript-go/internal/testutil"
1110
)
@@ -50,9 +49,9 @@ class FullPiece extends Piece {
5049
InsertText: PtrTo("container: Container;"),
5150
FilterText: PtrTo("container"),
5251
AdditionalTextEdits: fourslash.AnyTextEdits,
53-
Data: PtrTo(any(&ls.CompletionItemData{
52+
Data: &lsproto.CompletionItemData{
5453
Source: "ClassMemberSnippet/",
55-
})),
54+
},
5655
},
5756
},
5857
},

internal/fourslash/tests/gen/autoImportCompletionExportListAugmentation4_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
77
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
8-
"github.com/microsoft/typescript-go/internal/ls"
98
"github.com/microsoft/typescript-go/internal/lsp/lsproto"
109
"github.com/microsoft/typescript-go/internal/testutil"
1110
)
@@ -57,9 +56,9 @@ class PingCommand extends CommandAlias {
5756
InsertText: PtrTo("get container(): Container {\n}"),
5857
FilterText: PtrTo("container"),
5958
AdditionalTextEdits: fourslash.AnyTextEdits,
60-
Data: PtrTo(any(&ls.CompletionItemData{
59+
Data: &lsproto.CompletionItemData{
6160
Source: "ClassMemberSnippet/",
62-
})),
61+
},
6362
},
6463
},
6564
},

internal/fourslash/tests/gen/autoImportFileExcludePatterns3_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,21 +37,21 @@ declare module "foo" {
3737
[]fourslash.CompletionsExpectedItem{
3838
&lsproto.CompletionItem{
3939
Label: "x",
40-
Data: PtrTo(any(&ls.CompletionItemData{
41-
AutoImport: &ls.AutoImportData{
40+
Data: &lsproto.CompletionItemData{
41+
AutoImport: &lsproto.AutoImportData{
4242
ModuleSpecifier: "foo",
4343
},
44-
})),
44+
},
4545
AdditionalTextEdits: fourslash.AnyTextEdits,
4646
SortText: PtrTo(string(ls.SortTextAutoImportSuggestions)),
4747
},
4848
&lsproto.CompletionItem{
4949
Label: "y",
50-
Data: PtrTo(any(&ls.CompletionItemData{
51-
AutoImport: &ls.AutoImportData{
50+
Data: &lsproto.CompletionItemData{
51+
AutoImport: &lsproto.AutoImportData{
5252
ModuleSpecifier: "foo",
5353
},
54-
})),
54+
},
5555
AdditionalTextEdits: fourslash.AnyTextEdits,
5656
SortText: PtrTo(string(ls.SortTextAutoImportSuggestions)),
5757
},

internal/fourslash/tests/gen/autoImportModuleNone2_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ export const x: number;
3232
Includes: []fourslash.CompletionsExpectedItem{
3333
&lsproto.CompletionItem{
3434
Label: "x",
35-
Data: PtrTo(any(&ls.CompletionItemData{
36-
AutoImport: &ls.AutoImportData{
35+
Data: &lsproto.CompletionItemData{
36+
AutoImport: &lsproto.AutoImportData{
3737
ModuleSpecifier: "dep",
3838
},
39-
})),
39+
},
4040
AdditionalTextEdits: fourslash.AnyTextEdits,
4141
SortText: PtrTo(string(ls.SortTextAutoImportSuggestions)),
4242
},

0 commit comments

Comments
 (0)