Skip to content

Commit 2d32992

Browse files
committed
Support extension on
``` extension on ... extension <ident> on ... extension { ... extension <ident> { ... ```
1 parent 0690707 commit 2d32992

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

src/typescript/Scala.tmLanguage.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -864,13 +864,26 @@ export const scalaTmLanguage: TmLanguage = {
864864
},
865865
extension: {
866866
patterns: [
867+
{
868+
match: `(extension)\\s+(?:(${plainid})\\s)?\\s*(on|(?=\\{))`,
869+
captures: {
870+
'1': {
871+
name: 'keyword.declaration.scala'
872+
},
873+
'2': {
874+
name: 'entity.name.class'
875+
},
876+
'3': {
877+
name: 'keyword.declaration.scala'
878+
}
879+
}
880+
},
867881
{
868882
match: `(extension)\\s+(?=[\\[\\(])`,
869883
captures: {
870884
'1': {
871885
name: 'keyword.declaration.scala'
872886
},
873-
874887
}
875888
}
876889
]

tests/unit/extension-on.test.scala

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// SYNTAX TEST "source.scala"
2+
3+
extension on (x: Rational):
4+
// ^^^^^^^^^ keyword.declaration.scala
5+
// ^^ keyword.declaration.scala
6+
// ^ variable.parameter.scala
7+
// ^^^^^^^^ entity.name.class
8+
def > (y: Rational): Boolean = y < x
9+
10+
extension Ops on (x: Rational):
11+
// ^^^^^^^^^ keyword.declaration.scala
12+
// ^^^ entity.name.class
13+
// ^^ keyword.declaration.scala
14+
// ^ variable.parameter.scala
15+
// ^^^^^^^^ entity.name.class
16+
def > (y: Rational): Boolean = y < x
17+
18+
extension stringOps { }
19+
// ^^^^^^^^^ keyword.declaration.scala
20+
// ^^^^^^^^^ entity.name.class
21+
22+
extension { }
23+
// ^^^^^^^^^ keyword.declaration.scala

0 commit comments

Comments
 (0)