diff --git a/src/typescript/Scala.tmLanguage.ts b/src/typescript/Scala.tmLanguage.ts index 80870a0..d87d869 100644 --- a/src/typescript/Scala.tmLanguage.ts +++ b/src/typescript/Scala.tmLanguage.ts @@ -50,10 +50,6 @@ export const scalaTmLanguage: TmLanguage = { { include: '#comments' }, - { - match: `(given)(?=\\s)`, - name: 'keyword.given.import.scala' - }, { match: `(${backQuotedId}|${plainid})`, name: 'entity.name.import.scala' @@ -72,33 +68,32 @@ export const scalaTmLanguage: TmLanguage = { }, patterns: [ { - match: `(?x)\\s*(${backQuotedId}|${plainid})\\s*(=>)\\s*(${backQuotedId}|${plainid})\\s*`, + match: `(?x)(given\\s)?\\s*(${backQuotedId}|${plainid})\\s*(=>)\\s*(${backQuotedId}|${plainid})\\s*`, captures: { '1': { - name: 'entity.name.import.renamed-from.scala' + name: 'keyword.other.given.scala' }, '2': { - name: 'keyword.other.arrow.scala' + name: 'entity.name.import.renamed-from.scala' }, '3': { + name: 'keyword.other.arrow.scala' + }, + '4': { name: 'entity.name.import.renamed-to.scala' } } }, { - match: `(given)(\\s+${plainid})?(?=\\s*[,}])`, + match: `(given\\s+)?([^\\s.,}]+)`, captures: { '1': { name: 'keyword.given.import.scala' }, '2': { - name: 'entity.name.type.import.scala' + name: 'entity.name.import.scala' } } - }, - { - match: '([^\\s.,}]+)', - name: 'entity.name.import.scala' } ], endCaptures: { diff --git a/tests/unit/imports.test.scala b/tests/unit/imports.test.scala new file mode 100644 index 0000000..7bf703b --- /dev/null +++ b/tests/unit/imports.test.scala @@ -0,0 +1,65 @@ +// SYNTAX TEST "source.scala" + + import +// ^^^^^^ meta.import.scala keyword.other.import.scala + + + import a.x +// ^^^^^^ meta.import.scala keyword.other.import.scala +// ^ meta.import.scala +// ^ meta.import.scala entity.name.import.scala +// ^ meta.import.scala punctuation.definition.import +// ^ meta.import.scala entity.name.import.scala + + import a._ +// ^^^^^^ meta.import.scala keyword.other.import.scala +// ^ meta.import.scala +// ^ meta.import.scala entity.name.import.scala +// ^ meta.import.scala punctuation.definition.import +// ^ meta.import.scala entity.name.import.scala + + import a.{x, y} +// ^^^^^^ meta.import.scala keyword.other.import.scala +// ^ meta.import.scala +// ^ 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 entity.name.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 meta.bracket.scala + + import a.{x => y} +// ^^^^^^ meta.import.scala keyword.other.import.scala +// ^ meta.import.scala +// ^ 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 +// ^^ meta.import.scala meta.import.selector.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 meta.bracket.scala + + import a.{given _} +// ^^^^^^ meta.import.scala keyword.other.import.scala +// ^ meta.import.scala +// ^ 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 keyword.given.import.scala +// ^ meta.import.scala meta.import.selector.scala +// ^ meta.import.scala entity.name.import.scala +// ^ meta.import.scala meta.import.selector.scala + + import A.{given TC} +// ^^^^^^ meta.import.scala keyword.other.import.scala +// ^ meta.import.scala +// ^ 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 keyword.given.import.scala +// ^ meta.import.scala meta.import.selector.scala +// ^^ meta.import.scala entity.name.import.scala +// ^ meta.import.scala meta.import.selector.scala