diff --git a/src/typescript/Scala.tmLanguage.ts b/src/typescript/Scala.tmLanguage.ts index ea5338f..a297f40 100644 --- a/src/typescript/Scala.tmLanguage.ts +++ b/src/typescript/Scala.tmLanguage.ts @@ -708,12 +708,17 @@ export const scalaTmLanguage: TmLanguage = { name: 'meta.package.scala' }, { - match: `\\b(given)\\b\\s*(?:\\b(as)\\b|(${idUpper})|(${backQuotedId}|(?!//|/\\*)${plainid})?)`, + 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`, captures: { '1': { name: 'keyword.declaration.scala' }, - '2': { name: 'keyword.declaration.scala' }, - '3': { name: 'entity.name.type.declaration' }, - '4': { name: 'entity.name.declaration' }, } } ] diff --git a/tests/unit/#140.test.scala b/tests/unit/#140.test.scala new file mode 100644 index 0000000..3074224 --- /dev/null +++ b/tests/unit/#140.test.scala @@ -0,0 +1,11 @@ +// SYNTAX TEST "source.scala" + + given foo.Foo +// ^^^^^ keyword.declaration.scala +// ^^^ - entity.name.declaration +// ^^^ entity.name.class + + given Foo[a] +// ^^^^^ keyword.declaration.scala +// ^^^ - entity.name.type.declaration +// ^^^ entity.name.class diff --git a/tests/unit/given.test.scala b/tests/unit/given.test.scala index e5a4502..e3d5956 100644 --- a/tests/unit/given.test.scala +++ b/tests/unit/given.test.scala @@ -3,11 +3,13 @@ given Foo = ??? // ^^^^^ keyword.declaration.scala -// ^^^ entity.name.type.declaration +// ^^^ - entity.name.type.declaration +// ^^^ entity.name.class given foo = ??? // ^^^^^ keyword.declaration.scala -// ^^^ entity.name.declaration +// ^^^ - entity.name.declaration +// ^^^ source.scala given as Foo = ??? // ^^^^^ keyword.declaration.scala @@ -30,3 +32,20 @@ // ^^^ entity.name.type.declaration // ^^ keyword.declaration.scala // ^^^ source.scala + + given foo = ???; given Bar as Baz +// ^^^^^ keyword.declaration.scala +// ^^^ - entity.name.type.declaration +// ^^^^^ keyword.declaration.scala +// ^^^ entity.name.type.declaration +// ^^ keyword.declaration.scala +// ^^^ entity.name.class + + given Foo = ???; given Bar as Baz +// ^^^^^ keyword.declaration.scala +// ^^^ - entity.name.type.declaration +// ^^^ entity.name.class +// ^^^^^ keyword.declaration.scala +// ^^^ entity.name.type.declaration +// ^^ keyword.declaration.scala +// ^^^ entity.name.class