Skip to content

Commit 6762914

Browse files
authored
Merge pull request #169 from nicolasstucki/fix-#163
Fix #163: Update to new given syntax
2 parents 870c12e + feb6301 commit 6762914

File tree

4 files changed

+101
-48
lines changed

4 files changed

+101
-48
lines changed

src/typescript/Scala.tmLanguage.ts

+2-9
Original file line numberDiff line numberDiff line change
@@ -713,17 +713,10 @@ export const scalaTmLanguage: TmLanguage = {
713713
name: 'meta.package.scala'
714714
},
715715
{
716-
match: `\\b(given)\\s+(?:(${idUpper})|(${backQuotedId}|${plainid}))?(?=\\s+as\\b|\\(|\\[[^;]+\\s(?:as|<:)\\s)`,
717-
captures: {
718-
'1': { name: 'keyword.declaration.scala' },
719-
'2': { name: 'entity.name.type.declaration' },
720-
'3': { name: 'entity.name.declaration' },
721-
}
722-
},
723-
{
724-
match: `\\b(given)\\b`,
716+
match: `\\b(given)(?:\\s+(${idLower}|${backQuotedId}))?`,
725717
captures: {
726718
'1': { name: 'keyword.declaration.scala' },
719+
'2': { name: 'entity.name.given.declaration' }
727720
}
728721
}
729722
]

tests/unit/#103.test.scala

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
// SYNTAX TEST "source.scala"
22

3+
// THIS FILE CONTAINS OUTDATED GIVEN SYNTAX
4+
35
given as Foo = ...
46
// ^^^^^ keyword.declaration.scala
57
// ^^ - keyword.declaration.scala
68

79
given foo as Foo = ...
810
// ^^^^^ keyword.declaration.scala
9-
// ^^^ entity.name.declaration
11+
// ^^^ entity.name.given.declaration
1012
// ^^ - keyword.declaration.scala
1113

1214
given (x: X) as Foo = ...
@@ -26,15 +28,15 @@
2628

2729
given foo(x: A) as Foo = ...
2830
// ^^^^^ keyword.declaration.scala
29-
// ^^^ entity.name.declaration
31+
// ^^^ entity.name.given.declaration
3032
// ^ variable.parameter.scala
3133
// ^ meta.colon.scala
3234
// ^ entity.name.class
3335
// ^^ - keyword.declaration.scala
3436

3537
given foo[X](x: X) as Foo = ...
3638
// ^^^^^ keyword.declaration.scala
37-
// ^^^ entity.name.declaration
39+
// ^^^ entity.name.given.declaration
3840
// ^ entity.name.class
3941
// ^ variable.parameter.scala
4042
// ^ meta.colon.scala
@@ -43,7 +45,7 @@
4345

4446
given foo[X <: Y { type A = 1; def f(using a: Int): 2 }](x: X = 2) as Foo = ...
4547
// ^^^^^ keyword.declaration.scala
46-
// ^^^ entity.name.declaration
48+
// ^^^ entity.name.given.declaration
4749
// ^^^^ keyword.declaration.scala
4850
// ^ constant.numeric.scala
4951
// ^^^ keyword.declaration.scala

tests/unit/#156.test.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
given tc: TC with {}
2626
// ^^^^^ keyword.declaration.scala
27-
// ^^ variable.parameter.scala
27+
// ^^ entity.name.given.declaration
2828
// ^^ entity.name.class
2929
// ^^^^ keyword.declaration.scala
3030

@@ -36,7 +36,7 @@
3636

3737
given listMonad: Monad[List] with
3838
// ^^^^^ keyword.declaration.scala
39-
// ^^^^^^^^^ variable.parameter.scala
39+
// ^^^^^^^^^ entity.name.given.declaration
4040
// ^^^^^ entity.name.class
4141
// ^^^^ entity.name.class
4242
// ^^^^ keyword.declaration.scala

tests/unit/given.test.scala

+91-33
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,109 @@
11
// SYNTAX TEST "source.scala"
22

33

4-
given Foo = ???
4+
given intOrd: Ordering[Int] with
5+
// ^^^^^ keyword.declaration.scala
6+
// ^^^^^^ entity.name.given.declaration
7+
// ^^^^^^^^ entity.name.class
8+
// ^^^^ keyword.declaration.scala
9+
10+
given foo: Foo with
11+
// ^^^^^ keyword.declaration.scala
12+
// ^^^ entity.name.given.declaration
13+
// ^^^ entity.name.class
14+
// ^^^^ keyword.declaration.scala
15+
16+
given listOrd[T: Ordering]: Ordering[List[T]] with
17+
// ^^^^^ keyword.declaration.scala
18+
// ^^^^^^^ entity.name.given.declaration
19+
// ^ entity.name.class
20+
// ^^^^^^^^ entity.name.class
21+
// ^^^^^^^^ entity.name.class
22+
// ^^^^ keyword.declaration.scala
23+
24+
given listOrd(using ev: Ev): Foo with
25+
// ^^^^^ keyword.declaration.scala
26+
// ^^^^^^^ entity.name.given.declaration
27+
// ^^^^^ keyword.declaration.scala
28+
// ^^ variable.parameter.scala
29+
// ^^ entity.name.class
30+
// ^^^ entity.name.class
31+
// ^^^^ keyword.declaration.scala
32+
33+
given Ordering[Int] with
34+
// ^^^^^ keyword.declaration.scala
35+
// ^^^^^^^^ entity.name.class
36+
// ^^^^ keyword.declaration.scala
37+
38+
given Foo with
539
// ^^^^^ keyword.declaration.scala
6-
// ^^^ - entity.name.type.declaration
740
// ^^^ entity.name.class
8-
9-
given foo = ???
41+
// ^^^^ keyword.declaration.scala
42+
43+
given [T: Ordering]: Ordering[List[T]] with
1044
// ^^^^^ keyword.declaration.scala
11-
// ^^^ - entity.name.declaration
12-
// ^^^ source.scala
13-
14-
given as Foo = ???
45+
// ^ entity.name.class
46+
// ^^^^^^^^ entity.name.class
47+
// ^^^^^^^^ entity.name.class
48+
// ^^^^ keyword.declaration.scala
49+
50+
given (using ev: Ev): Foo with
51+
// ^^^^^ keyword.declaration.scala
52+
// ^^^^^ keyword.declaration.scala
53+
// ^^ variable.parameter.scala
54+
// ^^ entity.name.class
55+
// ^^^ entity.name.class
56+
// ^^^^ keyword.declaration.scala
57+
58+
given intOrd: Ordering[Int] with
59+
// ^^^^^ keyword.declaration.scala
60+
// ^^^^^^ entity.name.given.declaration
61+
// ^^^^^^^^ entity.name.class
62+
// ^^^^ keyword.declaration.scala
63+
64+
given foo: Foo = ...
1565
// ^^^^^ keyword.declaration.scala
16-
// ^^ - keyword.declaration.scala
17-
// ^^^ entity.name.class
66+
// ^^^ entity.name.given.declaration
67+
// ^^^ entity.name.class
1868

19-
given as foo = ???
69+
given `foo`: Foo = ...
2070
// ^^^^^ keyword.declaration.scala
21-
// ^^ - keyword.declaration.scala
22-
// ^^^ source.scala
71+
// ^^^^^ entity.name.given.declaration
72+
// ^^^ entity.name.class
2373

24-
given bar as foo = ???
74+
75+
given listOrd[T: Ordering]: Ordering[List[T]] = ...
2576
// ^^^^^ keyword.declaration.scala
26-
// ^^^ entity.name.declaration
27-
// ^^ - keyword.declaration.scala
28-
// ^^^ source.scala
77+
// ^^^^^^^ entity.name.given.declaration
78+
// ^ entity.name.class
79+
// ^^^^^^^^ entity.name.class
80+
// ^^^^^^^^ entity.name.class
2981

30-
given Foo as foo = ???
82+
given listOrd(using ev: Ev): Foo = ...
3183
// ^^^^^ keyword.declaration.scala
32-
// ^^^ entity.name.type.declaration
33-
// ^^ - keyword.declaration.scala
34-
// ^^^ source.scala
84+
// ^^^^^^^ entity.name.given.declaration
85+
// ^^^^^ keyword.declaration.scala
86+
// ^^ variable.parameter.scala
87+
// ^^ entity.name.class
88+
// ^^^ entity.name.class
3589

36-
given foo = ???; given Bar as Baz
90+
given Ordering[Int] = ...
3791
// ^^^^^ keyword.declaration.scala
38-
// ^^^ - entity.name.type.declaration
39-
// ^^^^^ keyword.declaration.scala
40-
// ^^^ entity.name.type.declaration
41-
// ^^ - keyword.declaration.scala
42-
// ^^^ entity.name.class
92+
// ^^^^^^^^ entity.name.class
4393

44-
given Foo = ???; given Bar as Baz
94+
given Foo = ...
4595
// ^^^^^ keyword.declaration.scala
46-
// ^^^ - entity.name.type.declaration
4796
// ^^^ entity.name.class
48-
// ^^^^^ keyword.declaration.scala
49-
// ^^^ entity.name.type.declaration
50-
// ^^ - keyword.declaration.scala
51-
// ^^^ entity.name.class
97+
98+
given [T: Ordering]: Ordering[List[T]] = ...
99+
// ^^^^^ keyword.declaration.scala
100+
// ^ entity.name.class
101+
// ^^^^^^^^ entity.name.class
102+
// ^^^^^^^^ entity.name.class
103+
104+
given (using ev: Ev): Foo = ...
105+
// ^^^^^ keyword.declaration.scala
106+
// ^^^^^ keyword.declaration.scala
107+
// ^^ variable.parameter.scala
108+
// ^^ entity.name.class
109+
// ^^^ entity.name.class

0 commit comments

Comments
 (0)