diff --git a/src/typescript/Scala.tmLanguage.ts b/src/typescript/Scala.tmLanguage.ts index f354a10..400708e 100644 --- a/src/typescript/Scala.tmLanguage.ts +++ b/src/typescript/Scala.tmLanguage.ts @@ -713,17 +713,10 @@ export const scalaTmLanguage: TmLanguage = { name: 'meta.package.scala' }, { - match: `\\b(given)\\s+(?:(${idUpper})|(${backQuotedId}|${plainid}))?(?=\\s+as\\b|\\(|\\[[^;]+\\s(?:as|<:)\\s)`, - captures: { - '1': { name: 'keyword.declaration.scala' }, - '2': { name: 'entity.name.type.declaration' }, - '3': { name: 'entity.name.declaration' }, - } - }, - { - match: `\\b(given)\\b`, + match: `\\b(given)(?:\\s+(${idLower}|${backQuotedId}))?`, captures: { '1': { name: 'keyword.declaration.scala' }, + '2': { name: 'entity.name.given.declaration' } } } ] diff --git a/tests/unit/#103.test.scala b/tests/unit/#103.test.scala index 2d0ffba..59b94ea 100644 --- a/tests/unit/#103.test.scala +++ b/tests/unit/#103.test.scala @@ -1,12 +1,14 @@ // SYNTAX TEST "source.scala" +// THIS FILE CONTAINS OUTDATED GIVEN SYNTAX + given as Foo = ... // ^^^^^ keyword.declaration.scala // ^^ - keyword.declaration.scala given foo as Foo = ... // ^^^^^ keyword.declaration.scala -// ^^^ entity.name.declaration +// ^^^ entity.name.given.declaration // ^^ - keyword.declaration.scala given (x: X) as Foo = ... @@ -26,7 +28,7 @@ given foo(x: A) as Foo = ... // ^^^^^ keyword.declaration.scala -// ^^^ entity.name.declaration +// ^^^ entity.name.given.declaration // ^ variable.parameter.scala // ^ meta.colon.scala // ^ entity.name.class @@ -34,7 +36,7 @@ given foo[X](x: X) as Foo = ... // ^^^^^ keyword.declaration.scala -// ^^^ entity.name.declaration +// ^^^ entity.name.given.declaration // ^ entity.name.class // ^ variable.parameter.scala // ^ meta.colon.scala @@ -43,7 +45,7 @@ given foo[X <: Y { type A = 1; def f(using a: Int): 2 }](x: X = 2) as Foo = ... // ^^^^^ keyword.declaration.scala -// ^^^ entity.name.declaration +// ^^^ entity.name.given.declaration // ^^^^ keyword.declaration.scala // ^ constant.numeric.scala // ^^^ keyword.declaration.scala diff --git a/tests/unit/#156.test.scala b/tests/unit/#156.test.scala index 541dfd4..8233e68 100644 --- a/tests/unit/#156.test.scala +++ b/tests/unit/#156.test.scala @@ -24,7 +24,7 @@ given tc: TC with {} // ^^^^^ keyword.declaration.scala -// ^^ variable.parameter.scala +// ^^ entity.name.given.declaration // ^^ entity.name.class // ^^^^ keyword.declaration.scala @@ -36,7 +36,7 @@ given listMonad: Monad[List] with // ^^^^^ keyword.declaration.scala -// ^^^^^^^^^ variable.parameter.scala +// ^^^^^^^^^ entity.name.given.declaration // ^^^^^ entity.name.class // ^^^^ entity.name.class // ^^^^ keyword.declaration.scala diff --git a/tests/unit/given.test.scala b/tests/unit/given.test.scala index a0e1518..24ccc26 100644 --- a/tests/unit/given.test.scala +++ b/tests/unit/given.test.scala @@ -1,51 +1,109 @@ // SYNTAX TEST "source.scala" - given Foo = ??? + given intOrd: Ordering[Int] with +// ^^^^^ keyword.declaration.scala +// ^^^^^^ entity.name.given.declaration +// ^^^^^^^^ entity.name.class +// ^^^^ keyword.declaration.scala + + given foo: Foo with +// ^^^^^ keyword.declaration.scala +// ^^^ entity.name.given.declaration +// ^^^ entity.name.class +// ^^^^ keyword.declaration.scala + + given listOrd[T: Ordering]: Ordering[List[T]] with +// ^^^^^ keyword.declaration.scala +// ^^^^^^^ entity.name.given.declaration +// ^ entity.name.class +// ^^^^^^^^ entity.name.class +// ^^^^^^^^ entity.name.class +// ^^^^ keyword.declaration.scala + + given listOrd(using ev: Ev): Foo with +// ^^^^^ keyword.declaration.scala +// ^^^^^^^ entity.name.given.declaration +// ^^^^^ keyword.declaration.scala +// ^^ variable.parameter.scala +// ^^ entity.name.class +// ^^^ entity.name.class +// ^^^^ keyword.declaration.scala + + given Ordering[Int] with +// ^^^^^ keyword.declaration.scala +// ^^^^^^^^ entity.name.class +// ^^^^ keyword.declaration.scala + + given Foo with // ^^^^^ keyword.declaration.scala -// ^^^ - entity.name.type.declaration // ^^^ entity.name.class - - given foo = ??? +// ^^^^ keyword.declaration.scala + + given [T: Ordering]: Ordering[List[T]] with // ^^^^^ keyword.declaration.scala -// ^^^ - entity.name.declaration -// ^^^ source.scala - - given as Foo = ??? +// ^ entity.name.class +// ^^^^^^^^ entity.name.class +// ^^^^^^^^ entity.name.class +// ^^^^ keyword.declaration.scala + + given (using ev: Ev): Foo with +// ^^^^^ keyword.declaration.scala +// ^^^^^ keyword.declaration.scala +// ^^ variable.parameter.scala +// ^^ entity.name.class +// ^^^ entity.name.class +// ^^^^ keyword.declaration.scala + + given intOrd: Ordering[Int] with +// ^^^^^ keyword.declaration.scala +// ^^^^^^ entity.name.given.declaration +// ^^^^^^^^ entity.name.class +// ^^^^ keyword.declaration.scala + + given foo: Foo = ... // ^^^^^ keyword.declaration.scala -// ^^ - keyword.declaration.scala -// ^^^ entity.name.class +// ^^^ entity.name.given.declaration +// ^^^ entity.name.class - given as foo = ??? + given `foo`: Foo = ... // ^^^^^ keyword.declaration.scala -// ^^ - keyword.declaration.scala -// ^^^ source.scala +// ^^^^^ entity.name.given.declaration +// ^^^ entity.name.class - given bar as foo = ??? + + given listOrd[T: Ordering]: Ordering[List[T]] = ... // ^^^^^ keyword.declaration.scala -// ^^^ entity.name.declaration -// ^^ - keyword.declaration.scala -// ^^^ source.scala +// ^^^^^^^ entity.name.given.declaration +// ^ entity.name.class +// ^^^^^^^^ entity.name.class +// ^^^^^^^^ entity.name.class - given Foo as foo = ??? + given listOrd(using ev: Ev): Foo = ... // ^^^^^ keyword.declaration.scala -// ^^^ entity.name.type.declaration -// ^^ - keyword.declaration.scala -// ^^^ source.scala +// ^^^^^^^ entity.name.given.declaration +// ^^^^^ keyword.declaration.scala +// ^^ variable.parameter.scala +// ^^ entity.name.class +// ^^^ entity.name.class - given foo = ???; given Bar as Baz + given Ordering[Int] = ... // ^^^^^ keyword.declaration.scala -// ^^^ - entity.name.type.declaration -// ^^^^^ keyword.declaration.scala -// ^^^ entity.name.type.declaration -// ^^ - keyword.declaration.scala -// ^^^ entity.name.class +// ^^^^^^^^ entity.name.class - given Foo = ???; given Bar as Baz + given Foo = ... // ^^^^^ keyword.declaration.scala -// ^^^ - entity.name.type.declaration // ^^^ entity.name.class -// ^^^^^ keyword.declaration.scala -// ^^^ entity.name.type.declaration -// ^^ - keyword.declaration.scala -// ^^^ entity.name.class + + given [T: Ordering]: Ordering[List[T]] = ... +// ^^^^^ keyword.declaration.scala +// ^ entity.name.class +// ^^^^^^^^ entity.name.class +// ^^^^^^^^ entity.name.class + + given (using ev: Ev): Foo = ... +// ^^^^^ keyword.declaration.scala +// ^^^^^ keyword.declaration.scala +// ^^ variable.parameter.scala +// ^^ entity.name.class +// ^^^ entity.name.class