Skip to content

Commit 3a38ffa

Browse files
Merge pull request #101 from nicolasstucki/fix-#93
Support `extension` clause
2 parents 81980d2 + 2d32992 commit 3a38ffa

File tree

3 files changed

+71
-0
lines changed

3 files changed

+71
-0
lines changed

src/typescript/Scala.tmLanguage.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,9 @@ export const scalaTmLanguage: TmLanguage = {
150150
{
151151
include: '#inheritance'
152152
},
153+
{
154+
include: '#extension'
155+
},
153156
{
154157
include: '#imports'
155158
},
@@ -859,6 +862,32 @@ export const scalaTmLanguage: TmLanguage = {
859862
}
860863
]
861864
},
865+
extension: {
866+
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+
},
881+
{
882+
match: `(extension)\\s+(?=[\\[\\(])`,
883+
captures: {
884+
'1': {
885+
name: 'keyword.declaration.scala'
886+
},
887+
}
888+
}
889+
]
890+
},
862891
'parameter-list': {
863892
patterns: [
864893
{

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

tests/unit/extension.test.scala

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// SYNTAX TEST "source.scala"
2+
3+
extension (x: T) def combine (y: T): T
4+
// ^^^^^^^^^ keyword.declaration.scala
5+
// ^ variable.parameter.scala
6+
// ^ meta.colon.scala
7+
// ^ entity.name.class
8+
// ^^^ keyword.declaration.scala
9+
// ^^^^^^^ entity.name.function.declaration
10+
11+
12+
extension [T](x: T) def combine (y: T): T
13+
// ^^^^^^^^^ keyword.declaration.scala
14+
// ^ entity.name.class
15+
// ^ variable.parameter.scala
16+
// ^ meta.colon.scala
17+
// ^ entity.name.class
18+
// ^^^ keyword.declaration.scala
19+
// ^^^^^^^ entity.name.function.declaration

0 commit comments

Comments
 (0)