diff --git a/src/typescript/Scala.tmLanguage.ts b/src/typescript/Scala.tmLanguage.ts index 7a93e2a..b52867b 100644 --- a/src/typescript/Scala.tmLanguage.ts +++ b/src/typescript/Scala.tmLanguage.ts @@ -20,6 +20,7 @@ const plainid = `(?:${idrest}|${opchar}+)` const backQuotedId = "`[^`]+`" const anyId = `(?:${plainid}|${backQuotedId})` const endOfLineMaybeWithComment = "(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)" +const notStartOfComment = "(?!//|/\\*)" export const scalaTmLanguage: TmLanguage = { fileTypes: [ @@ -616,7 +617,7 @@ export const scalaTmLanguage: TmLanguage = { declarations: { patterns: [ { - match: `(?x)\\b(def)\\s+(${backQuotedId}|${plainid})`, + match: `\\b(def)\\b\\s*${notStartOfComment}(${anyId})?`, captures: { '1': { name: 'keyword.declaration.scala' @@ -627,7 +628,7 @@ export const scalaTmLanguage: TmLanguage = { } }, { - match: `\\b(trait)\\s+([^\\s\\{\\(\\[;]+)(?object `Backtics test` { #^^^^^^ source.scala keyword.declaration.scala # ^ source.scala -# ^^^^^^^^^ source.scala entity.name.class.declaration -# ^^^^^^^ source.scala +# ^^^^^^^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala # ^ source.scala punctuation.section.block.begin.scala > val x = MediaRange.`*/*` #^^^^ source.scala diff --git a/tests/unit/definitions-with-nested-comments.test.scala b/tests/unit/definitions-with-nested-comments.test.scala new file mode 100644 index 0000000..aff1aac --- /dev/null +++ b/tests/unit/definitions-with-nested-comments.test.scala @@ -0,0 +1,73 @@ +// SYNTAX TEST "source.scala" + + def // comment +// ^^^ keyword.declaration.scala +// ^^^^^^^^^^ comment.line.double-slash.scala + + def /* comment */ +// ^^^ keyword.declaration.scala +// ^^^^^^^^^^^^^ comment.block.scala + + val // comment +// ^^^ keyword.declaration.stable.scala +// ^^^^^^^^^^ comment.line.double-slash.scala + + val /* comment */ +// ^^^ keyword.declaration.stable.scala +// ^^^^^^^^^^^^^ comment.block.scala + + var // comment +// ^^^ keyword.declaration.volatile.scala +// ^^^^^^^^^^ comment.line.double-slash.scala + + var /* comment */ +// ^^^ keyword.declaration.volatile.scala +// ^^^^^^^^^^^^^ comment.block.scala + + given // comment +// ^^^^^ keyword.declaration.scala +// ^^^^^^^^^^ comment.line.double-slash.scala + + given /* comment */ +// ^^^^^ keyword.declaration.scala +// ^^^^^^^^^^^^^ comment.block.scala + + class // comment +// ^^^^^ keyword.declaration.scala +// ^^^^^^^^^^ comment.line.double-slash.scala + + class /* comment */ +// ^^^^^ keyword.declaration.scala +// ^^^^^^^^^^^^^ comment.block.scala + + trait // comment +// ^^^^^ keyword.declaration.scala +// ^^^^^^^^^^ comment.line.double-slash.scala + + trait /* comment */ +// ^^^^^ keyword.declaration.scala +// ^^^^^^^^^^^^^ comment.block.scala + + object // comment +// ^^^^^^ keyword.declaration.scala +// ^^^^^^^^^^ comment.line.double-slash.scala + + object /* comment */ +// ^^^^^^ keyword.declaration.scala +// ^^^^^^^^^^^^^ comment.block.scala + + enum // comment +// ^^^^ keyword.declaration.scala +// ^^^^^^^^^^ comment.line.double-slash.scala + + enum /* comment */ +// ^^^^ keyword.declaration.scala +// ^^^^^^^^^^^^^ comment.block.scala + + type // comment +// ^^^^ keyword.declaration.scala +// ^^^^^^^^^^ comment.line.double-slash.scala + + type /* comment */ +// ^^^^ keyword.declaration.scala +// ^^^^^^^^^^^^^ comment.block.scala \ No newline at end of file diff --git a/tests/unit/fast-definitions.test.scala b/tests/unit/fast-definitions.test.scala new file mode 100644 index 0000000..4c52428 --- /dev/null +++ b/tests/unit/fast-definitions.test.scala @@ -0,0 +1,45 @@ +// SYNTAX TEST "source.scala" + + + val +// ^^^ keyword.declaration.stable.scala + + var +// ^^^ keyword.declaration.volatile.scala + + def +// ^^^ keyword.declaration.scala + + type +// ^^^^ keyword.declaration.scala + + class +// ^^^^^ keyword.declaration.scala + + trait +// ^^^^^ keyword.declaration.scala + + object +// ^^^^^^ keyword.declaration.scala + + given +// ^^^^^ keyword.declaration.scala + + enum +// ^^^^ keyword.declaration.scala + + case class +// ^^^^ keyword.declaration.scala +// ^^^^^ keyword.declaration.scala + + case object +// ^^^^ keyword.declaration.scala +// ^^^^^^ keyword.declaration.scala + + inline def +// ^^^^^^ storage.modifier.other +// ^^^ keyword.declaration.scala + + package object +// ^^^^^^^ keyword.other.scoping.scala +// ^^^^^^ keyword.declaration.scala diff --git a/tests/unit/given.test.scala b/tests/unit/given.test.scala index 24ccc26..0c2b202 100644 --- a/tests/unit/given.test.scala +++ b/tests/unit/given.test.scala @@ -107,3 +107,6 @@ // ^^ variable.parameter.scala // ^^ entity.name.class // ^^^ entity.name.class + + givenx +// ^^^^^ - keyword.declaration.scala