Skip to content

Commit 857a792

Browse files
Merge pull request #108 from nicolasstucki/fix-#104
Fix #104: Distinguish open declaration `:`
2 parents f3fea07 + 5404b87 commit 857a792

File tree

2 files changed

+52
-2
lines changed

2 files changed

+52
-2
lines changed

src/typescript/Scala.tmLanguage.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -557,7 +557,7 @@ export const scalaTmLanguage: TmLanguage = {
557557
}
558558
},
559559
{
560-
match: '\\b(trait)\\s+([^\\s\\{\\(\\[]+)',
560+
match: `\\b(trait)\\s+([^\\s\\{\\(\\[;]+)(?<![^${opchar}]:)`,
561561
captures: {
562562
'1': {
563563
name: 'keyword.declaration.scala'
@@ -568,7 +568,7 @@ export const scalaTmLanguage: TmLanguage = {
568568
}
569569
},
570570
{
571-
match: '\\b(?:(case|open)\\s+)?(class|object)\\s+([^\\s\\{\\(\\[;]+)',
571+
match: `\\b(?:(case|open)\\s+)?(class|object)\\s+([^\\s\\{\\(\\[;]+)(?<![^${opchar}]:)`,
572572
captures: {
573573
'1': {
574574
name: 'keyword.declaration.scala'

tests/unit/#104.test.scala

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// SYNTAX TEST "source.scala"
2+
3+
4+
class Foo: // shares colour of stable identifier
5+
// ^^^ entity.name.class.declaration
6+
// ^ keyword.operator.scala
7+
8+
class Bar : // has same colour as declarations
9+
// ^^^ entity.name.class.declaration
10+
// ^ keyword.operator.scala
11+
12+
trait Foo:
13+
// ^^^ entity.name.class.declaration
14+
// ^ keyword.operator.scala
15+
16+
trait Bar :
17+
// ^^^ entity.name.class.declaration
18+
// ^ keyword.operator.scala
19+
20+
object Foo:
21+
// ^^^ entity.name.class.declaration
22+
// ^ keyword.operator.scala
23+
24+
object Bar :
25+
// ^^^ entity.name.class.declaration
26+
// ^ keyword.operator.scala
27+
28+
trait *:
29+
// ^^ entity.name.class.declaration
30+
31+
trait *: :
32+
// ^^ entity.name.class.declaration
33+
// ^ keyword.operator.scala
34+
35+
trait :: :
36+
// ^^ entity.name.class.declaration
37+
// ^ keyword.operator.scala
38+
39+
class ::
40+
// ^^ entity.name.class.declaration
41+
42+
class :: :
43+
// ^^ entity.name.class.declaration
44+
// ^ keyword.operator.scala
45+
46+
1 :: Nil
47+
// ^^ keyword.operator.scala
48+
49+
1 ::
50+
// ^^ keyword.operator.scala

0 commit comments

Comments
 (0)