Skip to content

Commit 2e8b060

Browse files
Implement MarkerNames() in fourslash (#1450)
1 parent c72f1ea commit 2e8b060

10 files changed

+169
-9
lines changed

internal/core/core.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,18 @@ func MapNonNil[T any, U comparable](slice []T, f func(T) U) []U {
9595
return result
9696
}
9797

98+
func MapFiltered[T any, U any](slice []T, f func(T) (U, bool)) []U {
99+
var result []U
100+
for _, value := range slice {
101+
mapped, ok := f(value)
102+
if !ok {
103+
continue
104+
}
105+
result = append(result, mapped)
106+
}
107+
return result
108+
}
109+
98110
func FlatMap[T any, U comparable](slice []T, f func(T) []U) []U {
99111
var result []U
100112
for _, value := range slice {

internal/fourslash/_scripts/convertFourslash.mts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,9 @@ function parseBaselineFindAllReferencesArgs(args: readonly ts.Expression[]): Ver
660660
if (ts.isStringLiteral(arg)) {
661661
newArgs.push(getGoStringLiteral(arg.text));
662662
}
663+
else if (arg.getText() === "...test.markerNames()") {
664+
newArgs.push("f.MarkerNames()...");
665+
}
663666
else if (arg.getText() === "...test.ranges()") {
664667
return {
665668
kind: "verifyBaselineFindAllReferences",
@@ -681,6 +684,9 @@ function parseBaselineGoToDefinitionArgs(args: readonly ts.Expression[]): Verify
681684
if (ts.isStringLiteral(arg)) {
682685
newArgs.push(getGoStringLiteral(arg.text));
683686
}
687+
else if (arg.getText() === "...test.markerNames()") {
688+
newArgs.push("f.MarkerNames()...");
689+
}
684690
else if (arg.getText() === "...test.ranges()") {
685691
return {
686692
kind: "verifyBaselineGoToDefinition",

internal/fourslash/_scripts/failingTests.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,6 @@ TestGetJavaScriptCompletions8
202202
TestGetJavaScriptCompletions9
203203
TestGetJavaScriptGlobalCompletions1
204204
TestGetJavaScriptQuickInfo8
205-
TestGoToDefinitionBuiltInTypes
206-
TestGoToDefinitionBuiltInValues
207-
TestGoToDefinitionUndefinedSymbols
208205
TestImportCompletionsPackageJsonExportsSpecifierEndsInTs
209206
TestImportCompletionsPackageJsonExportsTrailingSlash1
210207
TestImportCompletionsPackageJsonImportsConditions1

internal/fourslash/fourslash.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,15 @@ func (f *FourslashTest) Markers() []*Marker {
414414
return f.testData.Markers
415415
}
416416

417+
func (f *FourslashTest) MarkerNames() []string {
418+
return core.MapFiltered(f.testData.Markers, func(marker *Marker) (string, bool) {
419+
if marker.Name == nil {
420+
return "", false
421+
}
422+
return *marker.Name, true
423+
})
424+
}
425+
417426
func (f *FourslashTest) Ranges() []*RangeMarker {
418427
return f.testData.Ranges
419428
}

internal/fourslash/tests/gen/goToDefinitionBuiltInTypes_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import (
99

1010
func TestGoToDefinitionBuiltInTypes(t *testing.T) {
1111
t.Parallel()
12-
t.Skip()
12+
1313
defer testutil.RecoverAndFail(t, "Panic on fourslash test")
1414
const content = `var n: /*number*/number;
1515
var s: /*string*/string;
1616
var b: /*boolean*/boolean;
1717
var v: /*void*/void;`
1818
f := fourslash.NewFourslash(t, nil /*capabilities*/, content)
19-
f.VerifyBaselineGoToDefinition(t)
19+
f.VerifyBaselineGoToDefinition(t, f.MarkerNames()...)
2020
}

internal/fourslash/tests/gen/goToDefinitionBuiltInValues_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ import (
99

1010
func TestGoToDefinitionBuiltInValues(t *testing.T) {
1111
t.Parallel()
12-
t.Skip()
12+
1313
defer testutil.RecoverAndFail(t, "Panic on fourslash test")
1414
const content = `var u = /*undefined*/undefined;
1515
var n = /*null*/null;
1616
var a = function() { return /*arguments*/arguments; };
1717
var t = /*true*/true;
1818
var f = /*false*/false;`
1919
f := fourslash.NewFourslash(t, nil /*capabilities*/, content)
20-
f.VerifyBaselineGoToDefinition(t)
20+
f.VerifyBaselineGoToDefinition(t, f.MarkerNames()...)
2121
}

internal/fourslash/tests/gen/goToDefinitionUndefinedSymbols_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import (
99

1010
func TestGoToDefinitionUndefinedSymbols(t *testing.T) {
1111
t.Parallel()
12-
t.Skip()
12+
1313
defer testutil.RecoverAndFail(t, "Panic on fourslash test")
1414
const content = `some/*undefinedValue*/Variable;
1515
var a: some/*undefinedType*/Type;
1616
var x = {}; x.some/*undefinedProperty*/Property;
1717
var a: any; a.some/*unkownProperty*/Property;`
1818
f := fourslash.NewFourslash(t, nil /*capabilities*/, content)
19-
f.VerifyBaselineGoToDefinition(t)
19+
f.VerifyBaselineGoToDefinition(t, f.MarkerNames()...)
2020
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// === goToDefinition ===
2+
// === /goToDefinitionBuiltInTypes.ts ===
3+
4+
// var n: /*GO TO DEFINITION*/number;
5+
// var s: string;
6+
// var b: boolean;
7+
// var v: void;
8+
9+
10+
11+
12+
// === goToDefinition ===
13+
// === /goToDefinitionBuiltInTypes.ts ===
14+
15+
// var n: number;
16+
// var s: /*GO TO DEFINITION*/string;
17+
// var b: boolean;
18+
// var v: void;
19+
20+
21+
22+
23+
// === goToDefinition ===
24+
// === /goToDefinitionBuiltInTypes.ts ===
25+
26+
// var n: number;
27+
// var s: string;
28+
// var b: /*GO TO DEFINITION*/boolean;
29+
// var v: void;
30+
31+
32+
33+
34+
// === goToDefinition ===
35+
// === /goToDefinitionBuiltInTypes.ts ===
36+
37+
// var n: number;
38+
// var s: string;
39+
// var b: boolean;
40+
// var v: /*GO TO DEFINITION*/void;
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// === goToDefinition ===
2+
// === /goToDefinitionBuiltInValues.ts ===
3+
4+
// var u = /*GO TO DEFINITION*/undefined;
5+
// var n = null;
6+
// var a = function() { return arguments; };
7+
// var t = true;
8+
// var f = false;
9+
10+
11+
12+
13+
// === goToDefinition ===
14+
// === /goToDefinitionBuiltInValues.ts ===
15+
16+
// var u = undefined;
17+
// var n = /*GO TO DEFINITION*/null;
18+
// var a = function() { return arguments; };
19+
// var t = true;
20+
// var f = false;
21+
22+
23+
24+
25+
// === goToDefinition ===
26+
// === /goToDefinitionBuiltInValues.ts ===
27+
28+
// var u = undefined;
29+
// var n = null;
30+
// var a = function() { return /*GO TO DEFINITION*/arguments; };
31+
// var t = true;
32+
// var f = false;
33+
34+
35+
36+
37+
// === goToDefinition ===
38+
// === /goToDefinitionBuiltInValues.ts ===
39+
40+
// var u = undefined;
41+
// var n = null;
42+
// var a = function() { return arguments; };
43+
// var t = /*GO TO DEFINITION*/true;
44+
// var f = false;
45+
46+
47+
48+
49+
// === goToDefinition ===
50+
// === /goToDefinitionBuiltInValues.ts ===
51+
52+
// var u = undefined;
53+
// var n = null;
54+
// var a = function() { return arguments; };
55+
// var t = true;
56+
// var f = /*GO TO DEFINITION*/false;
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// === goToDefinition ===
2+
// === /goToDefinitionUndefinedSymbols.ts ===
3+
4+
// some/*GO TO DEFINITION*/Variable;
5+
// var a: someType;
6+
// var x = {}; x.someProperty;
7+
// var a: any; a.someProperty;
8+
9+
10+
11+
12+
// === goToDefinition ===
13+
// === /goToDefinitionUndefinedSymbols.ts ===
14+
15+
// someVariable;
16+
// var a: some/*GO TO DEFINITION*/Type;
17+
// var x = {}; x.someProperty;
18+
// var a: any; a.someProperty;
19+
20+
21+
22+
23+
// === goToDefinition ===
24+
// === /goToDefinitionUndefinedSymbols.ts ===
25+
26+
// someVariable;
27+
// var a: someType;
28+
// var x = {}; x.some/*GO TO DEFINITION*/Property;
29+
// var a: any; a.someProperty;
30+
31+
32+
33+
34+
// === goToDefinition ===
35+
// === /goToDefinitionUndefinedSymbols.ts ===
36+
37+
// someVariable;
38+
// var a: someType;
39+
// var x = {}; x.someProperty;
40+
// var a: any; a.some/*GO TO DEFINITION*/Property;

0 commit comments

Comments
 (0)