From 0da2784b27f4b64fd2cda192ae6e391a5bf45b94 Mon Sep 17 00:00:00 2001 From: Nicolas Stucki Date: Wed, 1 Jul 2020 15:00:29 +0200 Subject: [PATCH] Fix #110: Highlight class/object names in imports --- src/typescript/Scala.tmLanguage.ts | 21 +++++++++-- tests/snap/scala_spec.test.scala.snap | 2 +- tests/unit/#110.test.scala | 45 +++++++++++++++++++++++ tests/unit/imports.test.scala | 4 +- tests/unit/unicode.identifiers.test.scala | 12 +++--- 5 files changed, 71 insertions(+), 13 deletions(-) create mode 100644 tests/unit/#110.test.scala diff --git a/src/typescript/Scala.tmLanguage.ts b/src/typescript/Scala.tmLanguage.ts index 0077f99..537ae11 100644 --- a/src/typescript/Scala.tmLanguage.ts +++ b/src/typescript/Scala.tmLanguage.ts @@ -50,6 +50,10 @@ export const scalaTmLanguage: TmLanguage = { { include: '#comments' }, + { + match: idUpper, + name: 'entity.name.class.import.scala' + }, { match: `(${backQuotedId}|${plainid})`, name: 'entity.name.import.scala' @@ -68,29 +72,38 @@ export const scalaTmLanguage: TmLanguage = { }, patterns: [ { - match: `(?x)(given\\s)?\\s*(${backQuotedId}|${plainid})\\s*(=>)\\s*(${backQuotedId}|${plainid})\\s*`, + match: `(?x)(given\\s)?\\s*(?:(${idUpper})|(${backQuotedId}|${plainid}))\\s*(=>)\\s*(?:(${idUpper})|(${backQuotedId}|${plainid}))\\s*`, captures: { '1': { name: 'keyword.other.given.scala' }, '2': { - name: 'entity.name.import.renamed-from.scala' + name: 'entity.name.class.import.renamed-from.scala' }, '3': { - name: 'keyword.other.arrow.scala' + name: 'entity.name.import.renamed-from.scala' }, '4': { + name: 'keyword.other.arrow.scala' + }, + '5': { + name: 'entity.name.class.import.renamed-to.scala' + }, + '6': { name: 'entity.name.import.renamed-to.scala' } } }, { - match: `(given\\s+)?([^\\s.,}]+)`, + match: `(given\\s+)?(?:(${idUpper})|(${backQuotedId}|${plainid}))`, captures: { '1': { name: 'keyword.given.import.scala' }, '2': { + name: 'entity.name.class.import.scala' + }, + '3': { name: 'entity.name.import.scala' } } diff --git a/tests/snap/scala_spec.test.scala.snap b/tests/snap/scala_spec.test.scala.snap index c74508a..6e52f83 100644 --- a/tests/snap/scala_spec.test.scala.snap +++ b/tests/snap/scala_spec.test.scala.snap @@ -821,7 +821,7 @@ # ^ source.scala # ^^^^^^ source.scala meta.import.scala keyword.other.import.scala # ^ source.scala meta.import.scala -# ^ source.scala meta.import.scala entity.name.import.scala +# ^ source.scala meta.import.scala entity.name.class.import.scala # ^ source.scala meta.import.scala punctuation.definition.import # ^ source.scala meta.import.scala meta.import.selector.scala meta.bracket.scala # ^^^ source.scala meta.import.scala meta.import.selector.scala entity.name.import.scala diff --git a/tests/unit/#110.test.scala b/tests/unit/#110.test.scala new file mode 100644 index 0000000..bdbbaf4 --- /dev/null +++ b/tests/unit/#110.test.scala @@ -0,0 +1,45 @@ +// SYNTAX TEST "source.scala" + + import java.io.BufferedReaded +// ^^^^^^ keyword.other.import.scala +// ^^^^ entity.name.import.scala +// ^^ entity.name.import.scala +// ^^^^^^^^^^^^^^ entity.name.class.import.scala + + import foo._ +// ^^^^^^ keyword.other.import.scala +// ^^^ entity.name.import.scala +// ^ entity.name.import.scala + + import foo.Bar +// ^^^^^^ keyword.other.import.scala +// ^^^ entity.name.import.scala +// ^^^ entity.name.class.import.scala + + import foo.Bar._ +// ^^^^^^ keyword.other.import.scala +// ^^^ entity.name.import.scala +// ^^^ entity.name.class.import.scala +// ^ entity.name.import.scala + + import foo.Foo.Bar._ +// ^^^^^^ keyword.other.import.scala +// ^^^ entity.name.import.scala +// ^^^ entity.name.class.import.scala +// ^^^ entity.name.class.import.scala + + import foo.{Foo, bar} +// ^^^^^^ keyword.other.import.scala +// ^^^ entity.name.import.scala +// ^^^ entity.name.class.import.scala +// ^^^ entity.name.import.scala + + import foo.{Foo => Bar, bar => foo} +// ^^^^^^ keyword.other.import.scala +// ^^^ entity.name.import.scala +// ^^^ meta.import.scala meta.import.selector.scala entity.name.class.import.renamed-from.scala +// ^^ meta.import.scala +// ^^^ meta.import.scala meta.import.selector.scala entity.name.class.import.renamed-to.scala +// ^^^ meta.import.scala meta.import.selector.scala entity.name.import.renamed-from.scala +// ^^ meta.import.scala meta.import.selector.scala keyword.other.arrow.scala +// ^^^ meta.import.scala meta.import.selector.scala entity.name.import.renamed-to.scala diff --git a/tests/unit/imports.test.scala b/tests/unit/imports.test.scala index 7bf703b..09f1329 100644 --- a/tests/unit/imports.test.scala +++ b/tests/unit/imports.test.scala @@ -56,10 +56,10 @@ import A.{given TC} // ^^^^^^ meta.import.scala keyword.other.import.scala // ^ meta.import.scala -// ^ meta.import.scala entity.name.import.scala +// ^ meta.import.scala entity.name.class.import.scala // ^ meta.import.scala punctuation.definition.import // ^ meta.import.scala meta.import.selector.scala meta.bracket.scala // ^^^^^ meta.import.scala keyword.given.import.scala // ^ meta.import.scala meta.import.selector.scala -// ^^ meta.import.scala entity.name.import.scala +// ^^ meta.import.scala entity.name.class.import.scala // ^ meta.import.scala meta.import.selector.scala diff --git a/tests/unit/unicode.identifiers.test.scala b/tests/unit/unicode.identifiers.test.scala index bd5b86d..0821794 100644 --- a/tests/unit/unicode.identifiers.test.scala +++ b/tests/unit/unicode.identifiers.test.scala @@ -114,7 +114,7 @@ import scala.colection.Seq // ^ meta.import.scala punctuation.definition.import // ^^^^^^^^^ meta.import.scala entity.name.import.scala // ^ meta.import.scala punctuation.definition.import -// ^^^ meta.import.scala entity.name.import.scala +// ^^^ meta.import.scala entity.name.class.import.scala import users._ // import everything from the users package // <------ meta.import.scala keyword.other.import.scala // ^ meta.import.scala @@ -128,7 +128,7 @@ import users.User // import the class User // ^ meta.import.scala // ^^^^^ meta.import.scala entity.name.import.scala // ^ meta.import.scala punctuation.definition.import -// ^^^^ meta.import.scala entity.name.import.scala +// ^^^^ meta.import.scala entity.name.class.import.scala // ^^ comment.line.double-slash.scala punctuation.definition.comment.scala // ^^^^^^^^^^^^^^^^^^^^^^ comment.line.double-slash.scala import users.{User, UserPreferences} // Only imports selected members @@ -137,9 +137,9 @@ import users.{User, UserPreferences} // Only imports selected members // ^^^^^ meta.import.scala entity.name.import.scala // ^ meta.import.scala punctuation.definition.import // ^ meta.import.scala meta.import.selector.scala meta.bracket.scala -// ^^^^ meta.import.scala meta.import.selector.scala entity.name.import.scala +// ^^^^ meta.import.scala meta.import.selector.scala entity.name.class.import.scala // ^^ meta.import.scala meta.import.selector.scala -// ^^^^^^^^^^^^^^^ meta.import.scala meta.import.selector.scala entity.name.import.scala +// ^^^^^^^^^^^^^^^ meta.import.scala meta.import.selector.scala entity.name.class.import.scala // ^ meta.import.scala meta.import.selector.scala meta.bracket.scala @@ -150,11 +150,11 @@ import users.{UserPreferences => UPrefs} // import and rename for convenience // ^^^^^ meta.import.scala entity.name.import.scala // ^ meta.import.scala punctuation.definition.import // ^ meta.import.scala meta.import.selector.scala meta.bracket.scala -// ^^^^^^^^^^^^^^^ meta.import.scala meta.import.selector.scala entity.name.import.renamed-from.scala +// ^^^^^^^^^^^^^^^ meta.import.scala meta.import.selector.scala entity.name.class.import.renamed-from.scala // ^ meta.import.scala meta.import.selector.scala // ^^ meta.import.scala meta.import.selector.scala keyword.other.arrow.scala // ^ meta.import.scala meta.import.selector.scala -// ^^^^^^ meta.import.scala meta.import.selector.scala entity.name.import.renamed-to.scala +// ^^^^^^ meta.import.scala meta.import.selector.scala entity.name.class.import.renamed-to.scala // ^ meta.import.scala meta.import.selector.scala meta.bracket.scala