From 0080fe44968e1cc2eb3d621916b095bf7de3fc62 Mon Sep 17 00:00:00 2001 From: Nicolas Stucki Date: Tue, 8 Dec 2020 16:26:16 +0100 Subject: [PATCH] Identify `extends`, `with` and `derives` at the end of a line --- src/typescript/Scala.tmLanguage.ts | 2 +- tests/unit/#156.test.scala | 55 ++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 tests/unit/#156.test.scala diff --git a/src/typescript/Scala.tmLanguage.ts b/src/typescript/Scala.tmLanguage.ts index 85784b7..e246a1c 100644 --- a/src/typescript/Scala.tmLanguage.ts +++ b/src/typescript/Scala.tmLanguage.ts @@ -1021,7 +1021,7 @@ export const scalaTmLanguage: TmLanguage = { inheritance: { patterns: [ { - match: `(extends|with|derives)\\s+(${idUpper}|${backQuotedId}|(?=\\([^\\)]+=>)|(?=${plainid})|(?="))`, + match: `\\b(extends|with|derives)\\b\\s*(${idUpper}|${backQuotedId}|(?=\\([^\\)]+=>)|(?=${plainid})|(?="))?`, captures: { '1': { name: 'keyword.declaration.scala' diff --git a/tests/unit/#156.test.scala b/tests/unit/#156.test.scala new file mode 100644 index 0000000..541dfd4 --- /dev/null +++ b/tests/unit/#156.test.scala @@ -0,0 +1,55 @@ +// SYNTAX TEST "source.scala" + + + class Foo extends +// ^^^^^ keyword.declaration.scala +// ^^^ entity.name.class.declaration +// ^^^^^^^ keyword.declaration.scala + + class Foo extends Bar with Baz +// ^^^^^ keyword.declaration.scala +// ^^^ entity.name.class.declaration +// ^^^^^^^ keyword.declaration.scala +// ^^^ entity.other.inherited-class.scala +// ^^^^ keyword.declaration.scala +// ^^^ entity.other.inherited-class.scala + + class Foo extends Bar with +// ^^^^^ keyword.declaration.scala +// ^^^ entity.name.class.declaration +// ^^^^^^^ keyword.declaration.scala +// ^^^ entity.other.inherited-class.scala +// ^^^^ keyword.declaration.scala + + + given tc: TC with {} +// ^^^^^ keyword.declaration.scala +// ^^ variable.parameter.scala +// ^^ entity.name.class +// ^^^^ keyword.declaration.scala + + given Liftable[Boolean] with { +// ^^^^^ keyword.declaration.scala +// ^^^^^^^^ entity.name.class +// ^^^^^^^ entity.name.class +// ^^^^ keyword.declaration.scala + + given listMonad: Monad[List] with +// ^^^^^ keyword.declaration.scala +// ^^^^^^^^^ variable.parameter.scala +// ^^^^^ entity.name.class +// ^^^^ entity.name.class +// ^^^^ keyword.declaration.scala + + enum Opt[+T] derives Eq { +// ^^^^ keyword.declaration.scala +// ^^^ entity.name.class.declaration +// ^ entity.name.class +// ^^^^^^^ keyword.declaration.scala +// ^^ entity.other.inherited-class.scala + + enum Opt[+T] derives +// ^^^^ keyword.declaration.scala +// ^^^ entity.name.class.declaration +// ^ entity.name.class +// ^^^^^^^ keyword.declaration.scala