diff --git a/src/typescript/Scala.tmLanguage.ts b/src/typescript/Scala.tmLanguage.ts index c50d305..c89a582 100644 --- a/src/typescript/Scala.tmLanguage.ts +++ b/src/typescript/Scala.tmLanguage.ts @@ -404,7 +404,7 @@ export const scalaTmLanguage: TmLanguage = { 'using': { patterns: [ { - match: `\\(\\s*(using)`, + match: `(?<=\\()\\s*(using)\\s+(?=[\\w\\d\\(\\.\\(\\{'"])`, captures: { '1': { name: 'keyword.declaration.scala' diff --git a/tests/unit/#119.test.scala b/tests/unit/#119.test.scala new file mode 100644 index 0000000..400a747 --- /dev/null +++ b/tests/unit/#119.test.scala @@ -0,0 +1,21 @@ +// SYNTAX TEST "source.scala" + + (using) +// ^ meta.bracket.scala +// ^^^^^ source.scala +// ^ meta.bracket.scala + + (using ) +// ^ meta.bracket.scala +// ^^^^^^^ source.scala +// ^ meta.bracket.scala + + (using , ) +// ^ meta.bracket.scala +// ^^^^^^^^ source.scala +// ^ meta.bracket.scala + + (usingSomething) +// ^ meta.bracket.scala +// ^^^^^^^^^^^^^^ source.scala +// ^ meta.bracket.scala diff --git a/tests/unit/using.test.scala b/tests/unit/using.test.scala index 546cc4d..15ec77b 100644 --- a/tests/unit/using.test.scala +++ b/tests/unit/using.test.scala @@ -7,6 +7,10 @@ def f(using x: Int): Unit = () // ^^^^^ keyword.declaration.scala // ^ constant.numeric.scala + f(using .2) +// ^^^^^ keyword.declaration.scala +// ^ constant.numeric.scala + class A(using x: Int) // ^^^^^ keyword.declaration.scala @@ -21,3 +25,20 @@ given [T](using x: Ord[T], using: Int) as Ord[List[T]] given [T](using Ord[T]) as Ord[List[T]] // ^^^^^ keyword.declaration.scala + + f(using ()) +// ^^^^^ keyword.declaration.scala +// ^^ meta.parentheses.scala meta.bracket.scala + + f(using {}) +// ^^^^^ keyword.declaration.scala +// ^ punctuation.section.block.begin.scala +// ^ punctuation.section.block.end.scala + + f(using ' ') +// ^^^^^ keyword.declaration.scala +// ^^^ constant.character.literal.scala + + f(using "") +// ^^^^^ keyword.declaration.scala +// ^^ string.quoted.double.scala \ No newline at end of file