From a34b4d4d96c8e8ea4cf729bfac4fe15ab7cb74bb Mon Sep 17 00:00:00 2001 From: Nicolas Stucki Date: Wed, 25 Sep 2019 11:56:26 +0200 Subject: [PATCH] Fix #62: Do not tag some classes as storage keywords Do coloring Unit, Boolean, Byte, Char, Short, Int, Float, Long, Double, String, Nil, None, Symbol and self with colors that do not represent their semantics. --- src/typescript/Scala.tmLanguage.ts | 12 +-- syntaxes/Scala.tmLanguage.json | 2 +- tests/snap/comments.test.scala.snap | 16 ++-- tests/snap/scala_spec.test.scala.snap | 108 +++++++++++----------- tests/unit/#62.test.scala | 62 +++++++++++++ tests/unit/basic.test.scala | 22 ++--- tests/unit/quoted.test.scala | 2 +- tests/unit/unicode.identifiers.test.scala | 18 ++-- 8 files changed, 148 insertions(+), 94 deletions(-) create mode 100644 tests/unit/#62.test.scala diff --git a/src/typescript/Scala.tmLanguage.ts b/src/typescript/Scala.tmLanguage.ts index 403ab0b..7a70cd9 100644 --- a/src/typescript/Scala.tmLanguage.ts +++ b/src/typescript/Scala.tmLanguage.ts @@ -113,7 +113,7 @@ export const scalaTmLanguage: TmLanguage = { constants: { patterns: [ { - match: '\\b(false|null|true|Nil|None)\\b', + match: '\\b(false|null|true)\\b', name: 'constant.language.scala' }, { @@ -121,16 +121,8 @@ export const scalaTmLanguage: TmLanguage = { name: 'constant.numeric.scala' }, { - match: '\\b(this|super|self)\\b', + match: '\\b(this|super)\\b', name: 'variable.language.scala' - }, - { - match: '\\b(Unit|Boolean|Byte|Char|Short|Int|Float|Long|Double)\\b', - name: 'storage.type.primitive.scala' - }, - { - match: '\\b(String|Symbol)\\b', - name: 'storage.type.scala' } ] }, diff --git a/syntaxes/Scala.tmLanguage.json b/syntaxes/Scala.tmLanguage.json index a4371f4..d0ac87b 100644 --- a/syntaxes/Scala.tmLanguage.json +++ b/syntaxes/Scala.tmLanguage.json @@ -1 +1 @@ -{"fileTypes":["scala"],"firstLineMatch":"^#!/.*\\b\\w*scala\\b","foldingStartMarker":"/\\*\\*|\\{\\s*$","foldingStopMarker":"\\*\\*/|^\\s*\\}","keyEquivalent":"^~S","repository":{"empty-parentheses":{"match":"(\\(\\))","captures":{"1":{"name":"meta.bracket.scala"}},"name":"meta.parentheses.scala"},"imports":{"end":"(?<=[\\n;])","begin":"\\b(import)\\s+","beginCaptures":{"1":{"name":"keyword.other.import.scala"}},"patterns":[{"include":"#comments"},{"match":"(given)(?=\\s)","name":"keyword.given.import.scala"},{"match":"(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))","name":"entity.name.import.scala"},{"match":"\\.","name":"punctuation.definition.import"},{"end":"}","begin":"{","beginCaptures":{"0":{"name":"meta.bracket.scala"}},"patterns":[{"match":"(?x)\\s*(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))\\s*(=>)\\s*(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))\\s*","captures":{"1":{"name":"entity.name.import.renamed-from.scala"},"2":{"name":"keyword.other.arrow.scala"},"3":{"name":"entity.name.import.renamed-to.scala"}}},{"match":"(given)(\\s+(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))?(?=\\s*[,}])","captures":{"1":{"name":"keyword.given.import.scala"},"2":{"name":"entity.name.type.import.scala"}}},{"match":"([^\\s.,}]+)","name":"entity.name.import.scala"}],"endCaptures":{"0":{"name":"meta.bracket.scala"}},"name":"meta.import.selector.scala"}],"name":"meta.import.scala"},"constants":{"patterns":[{"match":"\\b(false|null|true|Nil|None)\\b","name":"constant.language.scala"},{"match":"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.[0-9]+)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?|[0-9]+)([LlFfDd]|UL|ul)?\\b","name":"constant.numeric.scala"},{"match":"\\b(this|super|self)\\b","name":"variable.language.scala"},{"match":"\\b(Unit|Boolean|Byte|Char|Short|Int|Float|Long|Double)\\b","name":"storage.type.primitive.scala"},{"match":"\\b(String|Symbol)\\b","name":"storage.type.scala"}]},"script-header":{"match":"^#!(.*)$","captures":{"1":{"name":"string.unquoted.shebang.scala"}},"name":"comment.block.shebang.scala"},"code":{"patterns":[{"include":"#script-header"},{"include":"#storage-modifiers"},{"include":"#declarations"},{"include":"#inheritance"},{"include":"#imports"},{"include":"#comments"},{"include":"#strings"},{"include":"#initialization"},{"include":"#xml-literal"},{"include":"#keywords"},{"include":"#constants"},{"include":"#scala-symbol"},{"include":"#scala-quoted"},{"include":"#char-literal"},{"include":"#empty-parentheses"},{"include":"#parameter-list"},{"include":"#qualifiedClassName"},{"include":"#backQuotedVariable"},{"include":"#meta-brackets"},{"include":"#meta-bounds"},{"include":"#meta-colons"}]},"strings":{"patterns":[{"end":"\"\"\"(?!\")","begin":"\"\"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.scala"}},"patterns":[{"match":"\\\\\\\\|\\\\u[0-9A-Fa-f]{4}","name":"constant.character.escape.scala"}],"endCaptures":{"0":{"name":"punctuation.definition.string.end.scala"}},"name":"string.quoted.triple.scala"},{"begin":"\\b([A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}]+)(\"\"\")","end":"\"\"\"(?!\")","beginCaptures":{"1":{"name":"keyword.interpolation.scala"},"2":{"name":"string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala"}},"patterns":[{"include":"#string-interpolation"},{"match":"\\\\\\\\|\\\\u[0-9A-Fa-f]{4}","name":"constant.character.escape.scala"},{"match":".","name":"string.quoted.triple.interpolated.scala"}],"endCaptures":{"0":{"name":"string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala"}}},{"end":"\"","begin":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.scala"}},"patterns":[{"match":"\\\\(?:[btnfr\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})","name":"constant.character.escape.scala"},{"match":"\\\\.","name":"invalid.illegal.unrecognized-string-escape.scala"}],"endCaptures":{"0":{"name":"punctuation.definition.string.end.scala"}},"name":"string.quoted.double.scala"},{"begin":"\\b([A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}]+)(\")","end":"\"","beginCaptures":{"1":{"name":"keyword.interpolation.scala"},"2":{"name":"string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala"}},"patterns":[{"include":"#string-interpolation"},{"match":"\\\\(?:[btnfr\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})","name":"constant.character.escape.scala"},{"match":"\\\\.","name":"invalid.illegal.unrecognized-string-escape.scala"},{"match":".","name":"string.quoted.double.interpolated.scala"}],"endCaptures":{"0":{"name":"string.quoted.double.interpolated.scala punctuation.definition.string.end.scala"}}}]},"string-interpolation":{"patterns":[{"name":"constant.character.escape.interpolation.scala","match":"\\$\\$"},{"match":"(\\$)([A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*)","captures":{"1":{"name":"punctuation.definition.template-expression.begin.scala"}}},{"name":"punctuation.definition.template-expression.scala","begin":"\\$\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.scala"}},"end":"\\}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.scala"}},"patterns":[{"include":"#code"}]}]},"xml-entity":{"match":"(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)","captures":{"1":{"name":"punctuation.definition.constant.xml"},"3":{"name":"punctuation.definition.constant.xml"}},"name":"constant.character.entity.xml"},"xml-singlequotedString":{"end":"'","begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"patterns":[{"include":"#xml-entity"}],"endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.single.xml"},"meta-colons":{"patterns":[{"match":"(?=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)","name":"keyword.control.flow.end.scala"},{"match":"\\b(catch|finally|try)\\b","name":"keyword.control.exception.scala"},{"match":"(==?|!=|<=|>=|<>|<|>)","name":"keyword.operator.comparison.scala"},{"match":"(\\-|\\+|\\*|/(?![/*])|%|~)","name":"keyword.operator.arithmetic.scala"},{"match":"(!|&&|\\|\\|)","name":"keyword.operator.logical.scala"},{"match":"(<-|←|->|→|=>|⇒|\\?|\\:+|@|\\|)+","name":"keyword.operator.scala"}]},"scala-quoted":{"match":"('\\{|'\\[)(?!')","name":"constant.other.quoted.scala"},"xml-doublequotedString":{"end":"\"","begin":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"patterns":[{"include":"#xml-entity"}],"endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.double.xml"},"declarations":{"patterns":[{"match":"(?x)\\b(def)\\s+(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))","captures":{"1":{"name":"keyword.declaration.scala"},"2":{"name":"entity.name.function.declaration"}}},{"match":"\\b(trait)\\s+([^\\s\\{\\(\\[]+)","captures":{"1":{"name":"keyword.declaration.scala"},"2":{"name":"entity.name.class.declaration"}}},{"match":"\\b(?:(case)\\s+)?(class|object)\\s+([^\\s\\{\\(\\[]+)","captures":{"1":{"name":"keyword.declaration.scala"},"2":{"name":"keyword.declaration.scala"},"3":{"name":"entity.name.class.declaration"}}},{"match":"\\b(type)\\s+(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))","captures":{"1":{"name":"keyword.declaration.scala"},"2":{"name":"entity.name.type.declaration"}}},{"match":"\\b(val)\\s+([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?(\\s*,\\s*[A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)*)\\b","captures":{"1":{"name":"keyword.declaration.stable.scala"},"2":{"name":"constant.other.declaration.scala"}}},{"match":"\\b(?:(val)|(var))\\s+(?:(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))|(?=\\())","captures":{"1":{"name":"keyword.declaration.stable.scala"},"2":{"name":"keyword.declaration.volatile.scala"},"3":{"name":"variable.other.declaration.scala"}}},{"match":"\\b(package)\\s+(object)\\s+([^\\s\\{\\(\\[]+)","captures":{"1":{"name":"keyword.other.scoping.scala"},"2":{"name":"keyword.declaration.scala"},"3":{"name":"entity.name.class.declaration"}}},{"end":"(?<=[\\n;])","begin":"\\b(package)\\s+","beginCaptures":{"1":{"name":"keyword.other.import.scala"}},"patterns":[{"include":"#comments"},{"match":"(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))","name":"entity.name.package.scala"},{"match":"\\.","name":"punctuation.definition.package"}],"name":"meta.package.scala"}]},"char-literal":{"end":"'|$","begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.character.begin.scala"}},"patterns":[{"match":"\\\\(?:[btnfr\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})","name":"constant.character.escape.scala"},{"match":"\\\\.","name":"invalid.illegal.unrecognized-character-escape.scala"},{"match":"[^']{2,}","name":"invalid.illegal.character-literal-too-long"},{"match":"(?'(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))(?!')","name":"constant.other.symbol.scala"},"meta-brackets":{"patterns":[{"match":"\\{","comment":"The punctuation.section.*.begin is needed for return snippet in source bundle","name":"punctuation.section.block.begin.scala"},{"match":"\\}","comment":"The punctuation.section.*.end is needed for return snippet in source bundle","name":"punctuation.section.block.end.scala"},{"match":"{|}|\\(|\\)|\\[|\\]","name":"meta.bracket.scala"}],"comment":"For themes: Brackets look nice when colored."},"qualifiedClassName":{"match":"(\\b([A-Z][\\w]*))","captures":{"1":{"name":"entity.name.class"}}},"backQuotedVariable":{"match":"`[^`]+`"},"storage-modifiers":{"patterns":[{"match":"\\b(private\\[\\S+\\]|protected\\[\\S+\\]|private|protected)\\b","name":"storage.modifier.access"},{"match":"\\b(synchronized|@volatile|abstract|final|lazy|sealed|implicit|given|erased|enum|inline |opaque |override|@transient|@native)\\b","name":"storage.modifier.other"}]},"meta-bounds":{"match":"<%|=:=|<:<|<%<|>:|<:","comment":"For themes: Matching view bounds","name":"meta.bounds.scala"},"comments":{"patterns":[{"include":"#block-comments"},{"end":"(?!\\G)","begin":"(^[ \\t]+)?(?=//)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.scala"}},"patterns":[{"end":"\\n","begin":"//","beginCaptures":{"0":{"name":"punctuation.definition.comment.scala"}},"name":"comment.line.double-slash.scala"}]}]},"block-comments":{"patterns":[{"match":"/\\*\\*/","captures":{"0":{"name":"punctuation.definition.comment.scala"}},"name":"comment.block.empty.scala"},{"end":"\\*/","begin":"^\\s*(/\\*\\*)(?!/)","beginCaptures":{"1":{"name":"punctuation.definition.comment.scala"}},"patterns":[{"match":"(@param)\\s+(\\S+)","captures":{"1":{"name":"keyword.other.documentation.scaladoc.scala"},"2":{"name":"variable.parameter.scala"}}},{"match":"(@(?:tparam|throws))\\s+(\\S+)","captures":{"1":{"name":"keyword.other.documentation.scaladoc.scala"},"2":{"name":"entity.name.class"}}},{"match":"@(return|see|note|example|constructor|usecase|author|version|since|todo|deprecated|migration|define|inheritdoc)\\b","name":"keyword.other.documentation.scaladoc.scala"},{"match":"(\\[\\[)([^\\]]+)(\\]\\])","captures":{"1":{"name":"punctuation.definition.documentation.link.scala"},"2":{"name":"string.other.link.title.markdown"},"3":{"name":"punctuation.definition.documentation.link.scala"}}},{"include":"#block-comments"}],"endCaptures":{"0":{"name":"punctuation.definition.comment.scala"}},"name":"comment.block.documentation.scala"},{"end":"\\*/","begin":"/\\*","captures":{"0":{"name":"punctuation.definition.comment.scala"}},"patterns":[{"include":"#block-comments"}],"name":"comment.block.scala"}]},"xml-embedded-content":{"patterns":[{"end":"}","begin":"{","patterns":[{"include":"#code"}],"captures":{"0":{"name":"meta.bracket.scala"}},"name":"meta.source.embedded.scala"},{"match":" (?:([-_a-zA-Z0-9]+)((:)))?([_a-zA-Z-]+)=","captures":{"1":{"name":"entity.other.attribute-name.namespace.xml"},"2":{"name":"entity.other.attribute-name.xml"},"3":{"name":"punctuation.separator.namespace.xml"},"4":{"name":"entity.other.attribute-name.localname.xml"}}},{"include":"#xml-doublequotedString"},{"include":"#xml-singlequotedString"}]},"inheritance":{"patterns":[{"match":"(extends|with|derives)\\s+([^\\s\\{\\(\\[\\]]+)","captures":{"1":{"name":"keyword.declaration.scala"},"2":{"name":"entity.other.inherited-class.scala"}}}]},"parameter-list":{"patterns":[{"match":"(?<=[^\\._$a-zA-Z0-9])(`[^`]+`|[_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)\\s*(:)\\s+","captures":{"1":{"name":"variable.parameter.scala"},"2":{"name":"meta.colon.scala"}}}]},"xml-literal":{"patterns":[{"end":"(>(<))/(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]*[_a-zA-Z0-9])(>)","begin":"(<)((?:([_a-zA-Z0-9][_a-zA-Z0-9]*)((:)))?([_a-zA-Z0-9][-_a-zA-Z0-9:]*))(?=(\\s[^>]*)?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.xml"},"3":{"name":"entity.name.tag.namespace.xml"},"4":{"name":"entity.name.tag.xml"},"5":{"name":"punctuation.separator.namespace.xml"},"6":{"name":"entity.name.tag.localname.xml"}},"patterns":[{"include":"#xml-embedded-content"}],"comment":"We do not allow a tag name to start with a - since this would likely conflict with the <- operator. This is not very common for tag names anyway. Also code such as -- if (val val3) will falsly be recognized as an xml tag. The solution is to put a space on either side of the comparison operator","endCaptures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"meta.scope.between-tag-pair.xml"},"3":{"name":"entity.name.tag.namespace.xml"},"4":{"name":"entity.name.tag.xml"},"5":{"name":"punctuation.separator.namespace.xml"},"6":{"name":"entity.name.tag.localname.xml"},"7":{"name":"punctuation.definition.tag.xml"}},"name":"meta.tag.no-content.xml"},{"end":"(/?>)","begin":"(]*?>)","patterns":[{"include":"#xml-embedded-content"}],"captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.namespace.xml"},"3":{"name":"entity.name.tag.xml"},"4":{"name":"punctuation.separator.namespace.xml"},"5":{"name":"entity.name.tag.localname.xml"}},"name":"meta.tag.xml"},{"include":"#xml-entity"}]}},"uuid":"158C0929-299A-40C8-8D89-316BE0C446E8","patterns":[{"include":"#code"}],"name":"Scala","scopeName":"source.scala"} +{"fileTypes":["scala"],"firstLineMatch":"^#!/.*\\b\\w*scala\\b","foldingStartMarker":"/\\*\\*|\\{\\s*$","foldingStopMarker":"\\*\\*/|^\\s*\\}","keyEquivalent":"^~S","repository":{"empty-parentheses":{"match":"(\\(\\))","captures":{"1":{"name":"meta.bracket.scala"}},"name":"meta.parentheses.scala"},"imports":{"end":"(?<=[\\n;])","begin":"\\b(import)\\s+","beginCaptures":{"1":{"name":"keyword.other.import.scala"}},"patterns":[{"include":"#comments"},{"match":"(given)(?=\\s)","name":"keyword.given.import.scala"},{"match":"(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))","name":"entity.name.import.scala"},{"match":"\\.","name":"punctuation.definition.import"},{"end":"}","begin":"{","beginCaptures":{"0":{"name":"meta.bracket.scala"}},"patterns":[{"match":"(?x)\\s*(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))\\s*(=>)\\s*(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))\\s*","captures":{"1":{"name":"entity.name.import.renamed-from.scala"},"2":{"name":"keyword.other.arrow.scala"},"3":{"name":"entity.name.import.renamed-to.scala"}}},{"match":"(given)(\\s+(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))?(?=\\s*[,}])","captures":{"1":{"name":"keyword.given.import.scala"},"2":{"name":"entity.name.type.import.scala"}}},{"match":"([^\\s.,}]+)","name":"entity.name.import.scala"}],"endCaptures":{"0":{"name":"meta.bracket.scala"}},"name":"meta.import.selector.scala"}],"name":"meta.import.scala"},"constants":{"patterns":[{"match":"\\b(false|null|true)\\b","name":"constant.language.scala"},{"match":"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.[0-9]+)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?|[0-9]+)([LlFfDd]|UL|ul)?\\b","name":"constant.numeric.scala"},{"match":"\\b(this|super)\\b","name":"variable.language.scala"}]},"script-header":{"match":"^#!(.*)$","captures":{"1":{"name":"string.unquoted.shebang.scala"}},"name":"comment.block.shebang.scala"},"code":{"patterns":[{"include":"#script-header"},{"include":"#storage-modifiers"},{"include":"#declarations"},{"include":"#inheritance"},{"include":"#imports"},{"include":"#comments"},{"include":"#strings"},{"include":"#initialization"},{"include":"#xml-literal"},{"include":"#keywords"},{"include":"#constants"},{"include":"#scala-symbol"},{"include":"#scala-quoted"},{"include":"#char-literal"},{"include":"#empty-parentheses"},{"include":"#parameter-list"},{"include":"#qualifiedClassName"},{"include":"#backQuotedVariable"},{"include":"#meta-brackets"},{"include":"#meta-bounds"},{"include":"#meta-colons"}]},"strings":{"patterns":[{"end":"\"\"\"(?!\")","begin":"\"\"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.scala"}},"patterns":[{"match":"\\\\\\\\|\\\\u[0-9A-Fa-f]{4}","name":"constant.character.escape.scala"}],"endCaptures":{"0":{"name":"punctuation.definition.string.end.scala"}},"name":"string.quoted.triple.scala"},{"begin":"\\b([A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}]+)(\"\"\")","end":"\"\"\"(?!\")","beginCaptures":{"1":{"name":"keyword.interpolation.scala"},"2":{"name":"string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala"}},"patterns":[{"include":"#string-interpolation"},{"match":"\\\\\\\\|\\\\u[0-9A-Fa-f]{4}","name":"constant.character.escape.scala"},{"match":".","name":"string.quoted.triple.interpolated.scala"}],"endCaptures":{"0":{"name":"string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala"}}},{"end":"\"","begin":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.scala"}},"patterns":[{"match":"\\\\(?:[btnfr\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})","name":"constant.character.escape.scala"},{"match":"\\\\.","name":"invalid.illegal.unrecognized-string-escape.scala"}],"endCaptures":{"0":{"name":"punctuation.definition.string.end.scala"}},"name":"string.quoted.double.scala"},{"begin":"\\b([A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}]+)(\")","end":"\"","beginCaptures":{"1":{"name":"keyword.interpolation.scala"},"2":{"name":"string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala"}},"patterns":[{"include":"#string-interpolation"},{"match":"\\\\(?:[btnfr\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})","name":"constant.character.escape.scala"},{"match":"\\\\.","name":"invalid.illegal.unrecognized-string-escape.scala"},{"match":".","name":"string.quoted.double.interpolated.scala"}],"endCaptures":{"0":{"name":"string.quoted.double.interpolated.scala punctuation.definition.string.end.scala"}}}]},"string-interpolation":{"patterns":[{"name":"constant.character.escape.interpolation.scala","match":"\\$\\$"},{"match":"(\\$)([A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*)","captures":{"1":{"name":"punctuation.definition.template-expression.begin.scala"}}},{"name":"punctuation.definition.template-expression.scala","begin":"\\$\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.scala"}},"end":"\\}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.scala"}},"patterns":[{"include":"#code"}]}]},"xml-entity":{"match":"(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)","captures":{"1":{"name":"punctuation.definition.constant.xml"},"3":{"name":"punctuation.definition.constant.xml"}},"name":"constant.character.entity.xml"},"xml-singlequotedString":{"end":"'","begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"patterns":[{"include":"#xml-entity"}],"endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.single.xml"},"meta-colons":{"patterns":[{"match":"(?=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)","name":"keyword.control.flow.end.scala"},{"match":"\\b(catch|finally|try)\\b","name":"keyword.control.exception.scala"},{"match":"(==?|!=|<=|>=|<>|<|>)","name":"keyword.operator.comparison.scala"},{"match":"(\\-|\\+|\\*|/(?![/*])|%|~)","name":"keyword.operator.arithmetic.scala"},{"match":"(!|&&|\\|\\|)","name":"keyword.operator.logical.scala"},{"match":"(<-|←|->|→|=>|⇒|\\?|\\:+|@|\\|)+","name":"keyword.operator.scala"}]},"scala-quoted":{"match":"('\\{|'\\[)(?!')","name":"constant.other.quoted.scala"},"xml-doublequotedString":{"end":"\"","begin":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"patterns":[{"include":"#xml-entity"}],"endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.double.xml"},"declarations":{"patterns":[{"match":"(?x)\\b(def)\\s+(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))","captures":{"1":{"name":"keyword.declaration.scala"},"2":{"name":"entity.name.function.declaration"}}},{"match":"\\b(trait)\\s+([^\\s\\{\\(\\[]+)","captures":{"1":{"name":"keyword.declaration.scala"},"2":{"name":"entity.name.class.declaration"}}},{"match":"\\b(?:(case)\\s+)?(class|object)\\s+([^\\s\\{\\(\\[]+)","captures":{"1":{"name":"keyword.declaration.scala"},"2":{"name":"keyword.declaration.scala"},"3":{"name":"entity.name.class.declaration"}}},{"match":"\\b(type)\\s+(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))","captures":{"1":{"name":"keyword.declaration.scala"},"2":{"name":"entity.name.type.declaration"}}},{"match":"\\b(val)\\s+([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?(\\s*,\\s*[A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)*)\\b","captures":{"1":{"name":"keyword.declaration.stable.scala"},"2":{"name":"constant.other.declaration.scala"}}},{"match":"\\b(?:(val)|(var))\\s+(?:(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))|(?=\\())","captures":{"1":{"name":"keyword.declaration.stable.scala"},"2":{"name":"keyword.declaration.volatile.scala"},"3":{"name":"variable.other.declaration.scala"}}},{"match":"\\b(package)\\s+(object)\\s+([^\\s\\{\\(\\[]+)","captures":{"1":{"name":"keyword.other.scoping.scala"},"2":{"name":"keyword.declaration.scala"},"3":{"name":"entity.name.class.declaration"}}},{"end":"(?<=[\\n;])","begin":"\\b(package)\\s+","beginCaptures":{"1":{"name":"keyword.other.import.scala"}},"patterns":[{"include":"#comments"},{"match":"(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))","name":"entity.name.package.scala"},{"match":"\\.","name":"punctuation.definition.package"}],"name":"meta.package.scala"}]},"char-literal":{"end":"'|$","begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.character.begin.scala"}},"patterns":[{"match":"\\\\(?:[btnfr\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})","name":"constant.character.escape.scala"},{"match":"\\\\.","name":"invalid.illegal.unrecognized-character-escape.scala"},{"match":"[^']{2,}","name":"invalid.illegal.character-literal-too-long"},{"match":"(?'(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))(?!')","name":"constant.other.symbol.scala"},"meta-brackets":{"patterns":[{"match":"\\{","comment":"The punctuation.section.*.begin is needed for return snippet in source bundle","name":"punctuation.section.block.begin.scala"},{"match":"\\}","comment":"The punctuation.section.*.end is needed for return snippet in source bundle","name":"punctuation.section.block.end.scala"},{"match":"{|}|\\(|\\)|\\[|\\]","name":"meta.bracket.scala"}],"comment":"For themes: Brackets look nice when colored."},"qualifiedClassName":{"match":"(\\b([A-Z][\\w]*))","captures":{"1":{"name":"entity.name.class"}}},"backQuotedVariable":{"match":"`[^`]+`"},"storage-modifiers":{"patterns":[{"match":"\\b(private\\[\\S+\\]|protected\\[\\S+\\]|private|protected)\\b","name":"storage.modifier.access"},{"match":"\\b(synchronized|@volatile|abstract|final|lazy|sealed|implicit|given|erased|enum|inline |opaque |override|@transient|@native)\\b","name":"storage.modifier.other"}]},"meta-bounds":{"match":"<%|=:=|<:<|<%<|>:|<:","comment":"For themes: Matching view bounds","name":"meta.bounds.scala"},"comments":{"patterns":[{"include":"#block-comments"},{"end":"(?!\\G)","begin":"(^[ \\t]+)?(?=//)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.scala"}},"patterns":[{"end":"\\n","begin":"//","beginCaptures":{"0":{"name":"punctuation.definition.comment.scala"}},"name":"comment.line.double-slash.scala"}]}]},"block-comments":{"patterns":[{"match":"/\\*\\*/","captures":{"0":{"name":"punctuation.definition.comment.scala"}},"name":"comment.block.empty.scala"},{"end":"\\*/","begin":"^\\s*(/\\*\\*)(?!/)","beginCaptures":{"1":{"name":"punctuation.definition.comment.scala"}},"patterns":[{"match":"(@param)\\s+(\\S+)","captures":{"1":{"name":"keyword.other.documentation.scaladoc.scala"},"2":{"name":"variable.parameter.scala"}}},{"match":"(@(?:tparam|throws))\\s+(\\S+)","captures":{"1":{"name":"keyword.other.documentation.scaladoc.scala"},"2":{"name":"entity.name.class"}}},{"match":"@(return|see|note|example|constructor|usecase|author|version|since|todo|deprecated|migration|define|inheritdoc)\\b","name":"keyword.other.documentation.scaladoc.scala"},{"match":"(\\[\\[)([^\\]]+)(\\]\\])","captures":{"1":{"name":"punctuation.definition.documentation.link.scala"},"2":{"name":"string.other.link.title.markdown"},"3":{"name":"punctuation.definition.documentation.link.scala"}}},{"include":"#block-comments"}],"endCaptures":{"0":{"name":"punctuation.definition.comment.scala"}},"name":"comment.block.documentation.scala"},{"end":"\\*/","begin":"/\\*","captures":{"0":{"name":"punctuation.definition.comment.scala"}},"patterns":[{"include":"#block-comments"}],"name":"comment.block.scala"}]},"xml-embedded-content":{"patterns":[{"end":"}","begin":"{","patterns":[{"include":"#code"}],"captures":{"0":{"name":"meta.bracket.scala"}},"name":"meta.source.embedded.scala"},{"match":" (?:([-_a-zA-Z0-9]+)((:)))?([_a-zA-Z-]+)=","captures":{"1":{"name":"entity.other.attribute-name.namespace.xml"},"2":{"name":"entity.other.attribute-name.xml"},"3":{"name":"punctuation.separator.namespace.xml"},"4":{"name":"entity.other.attribute-name.localname.xml"}}},{"include":"#xml-doublequotedString"},{"include":"#xml-singlequotedString"}]},"inheritance":{"patterns":[{"match":"(extends|with|derives)\\s+([^\\s\\{\\(\\[\\]]+)","captures":{"1":{"name":"keyword.declaration.scala"},"2":{"name":"entity.other.inherited-class.scala"}}}]},"parameter-list":{"patterns":[{"match":"(?<=[^\\._$a-zA-Z0-9])(`[^`]+`|[_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)\\s*(:)\\s+","captures":{"1":{"name":"variable.parameter.scala"},"2":{"name":"meta.colon.scala"}}}]},"xml-literal":{"patterns":[{"end":"(>(<))/(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]*[_a-zA-Z0-9])(>)","begin":"(<)((?:([_a-zA-Z0-9][_a-zA-Z0-9]*)((:)))?([_a-zA-Z0-9][-_a-zA-Z0-9:]*))(?=(\\s[^>]*)?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.xml"},"3":{"name":"entity.name.tag.namespace.xml"},"4":{"name":"entity.name.tag.xml"},"5":{"name":"punctuation.separator.namespace.xml"},"6":{"name":"entity.name.tag.localname.xml"}},"patterns":[{"include":"#xml-embedded-content"}],"comment":"We do not allow a tag name to start with a - since this would likely conflict with the <- operator. This is not very common for tag names anyway. Also code such as -- if (val val3) will falsly be recognized as an xml tag. The solution is to put a space on either side of the comparison operator","endCaptures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"meta.scope.between-tag-pair.xml"},"3":{"name":"entity.name.tag.namespace.xml"},"4":{"name":"entity.name.tag.xml"},"5":{"name":"punctuation.separator.namespace.xml"},"6":{"name":"entity.name.tag.localname.xml"},"7":{"name":"punctuation.definition.tag.xml"}},"name":"meta.tag.no-content.xml"},{"end":"(/?>)","begin":"(]*?>)","patterns":[{"include":"#xml-embedded-content"}],"captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.namespace.xml"},"3":{"name":"entity.name.tag.xml"},"4":{"name":"punctuation.separator.namespace.xml"},"5":{"name":"entity.name.tag.localname.xml"}},"name":"meta.tag.xml"},{"include":"#xml-entity"}]}},"uuid":"158C0929-299A-40C8-8D89-316BE0C446E8","patterns":[{"include":"#code"}],"name":"Scala","scopeName":"source.scala"} diff --git a/tests/snap/comments.test.scala.snap b/tests/snap/comments.test.scala.snap index e95f1dd..7511be2 100644 --- a/tests/snap/comments.test.scala.snap +++ b/tests/snap/comments.test.scala.snap @@ -68,7 +68,7 @@ # ^ source.scala variable.other.declaration.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala # ^ source.scala punctuation.section.block.begin.scala @@ -80,12 +80,12 @@ # ^ source.scala meta.bracket.scala # ^ source.scala # ^ source.scala keyword.operator.scala -# ^^^^^^ source.scala storage.type.primitive.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala keyword.operator.comparison.scala # ^ source.scala @@ -277,12 +277,12 @@ # ^^^^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^^ source.scala # ^^^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala # ^ source.scala punctuation.section.block.begin.scala @@ -333,12 +333,12 @@ # ^^^^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^^ source.scala # ^^^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala # ^ source.scala keyword.operator.comparison.scala @@ -382,7 +382,7 @@ # ^^^^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^^ source.scala # ^^^^^^^^^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala diff --git a/tests/snap/scala_spec.test.scala.snap b/tests/snap/scala_spec.test.scala.snap index 887c50e..c74508a 100644 --- a/tests/snap/scala_spec.test.scala.snap +++ b/tests/snap/scala_spec.test.scala.snap @@ -85,7 +85,7 @@ # ^ source.scala keyword.operator.comparison.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala # ^ source.scala punctuation.section.block.begin.scala @@ -127,7 +127,7 @@ # ^^^^ source.scala variable.other.declaration.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala keyword.operator.scala # ^^^^^^^^^^^ source.scala @@ -147,7 +147,7 @@ # ^^^^^^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala keyword.operator.scala # ^^^^^^^^^^^ source.scala @@ -172,23 +172,23 @@ # ^^^^^^^^^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^^ source.scala # ^^^^^^^ source.scala variable.parameter.scala # ^ source.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^^ source.scala # ^^^^^^^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^^ source.scala # ^^^^^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^^^^^ source.scala storage.type.primitive.scala +# ^^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala meta.bracket.scala # ^^^^^^^^ source.scala storage.modifier.other @@ -215,23 +215,23 @@ # ^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala # ^ source.scala meta.bracket.scala # ^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^^ source.scala # ^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala keyword.operator.comparison.scala # ^ source.scala @@ -423,7 +423,7 @@ # ^ source.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala keyword.operator.scala # ^^^^^^^^^^^^ source.scala @@ -641,7 +641,7 @@ # ^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala keyword.operator.comparison.scala # ^ source.scala @@ -651,7 +651,7 @@ # ^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala keyword.operator.comparison.scala # ^^^ source.scala @@ -676,7 +676,7 @@ # ^ source.scala keyword.operator.comparison.scala # ^ source.scala keyword.operator.comparison.scala # ^ source.scala -# ^^^^^^^ source.scala storage.type.primitive.scala +# ^^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala # ^ source.scala meta.bracket.scala @@ -686,11 +686,11 @@ # ^ source.scala keyword.operator.comparison.scala # ^ source.scala keyword.operator.comparison.scala # ^ source.scala -# ^^^^ source.scala storage.type.primitive.scala +# ^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^ source.scala storage.type.primitive.scala +# ^^^^ source.scala entity.name.class > > def sum(args: Int*) = { #^^^ source.scala @@ -701,7 +701,7 @@ # ^^^^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^ source.scala keyword.operator.arithmetic.scala # ^ source.scala meta.bracket.scala # ^ source.scala @@ -746,7 +746,7 @@ # ^^^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala # ^ source.scala punctuation.section.block.begin.scala @@ -767,11 +767,11 @@ # ^^^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^ source.scala storage.type.primitive.scala +# ^^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala keyword.operator.comparison.scala # ^ source.scala @@ -937,7 +937,7 @@ # ^^ source.scala variable.other.declaration.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.primitive.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala keyword.operator.comparison.scala # ^ source.scala @@ -1097,7 +1097,7 @@ # ^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala # ^ source.scala punctuation.section.block.begin.scala @@ -1155,8 +1155,8 @@ # ^ source.scala # ^ source.scala punctuation.section.block.begin.scala # ^ source.scala -# ^^^^ source.scala variable.language.scala -# ^ source.scala keyword.operator.scala +# ^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala # ^ source.scala # ^^^^ source.scala entity.name.class # ^ source.scala @@ -1266,7 +1266,7 @@ # ^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^^ source.scala # ^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala @@ -1296,8 +1296,8 @@ # ^ source.scala # ^ source.scala punctuation.section.block.begin.scala # ^ source.scala -# ^^^^ source.scala variable.language.scala -# ^ source.scala keyword.operator.scala +# ^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala # ^ source.scala # ^ source.scala entity.name.class # ^ source.scala @@ -1317,7 +1317,7 @@ # ^ source.scala meta.bracket.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^^^^ source.scala storage.type.primitive.scala +# ^^^^^^^ source.scala entity.name.class > def <=(that: T): Boolean = this < that || this == that #^^^^ source.scala # ^^^ source.scala keyword.declaration.scala @@ -1331,7 +1331,7 @@ # ^ source.scala meta.bracket.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^^^^ source.scala storage.type.primitive.scala +# ^^^^^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala keyword.operator.comparison.scala # ^ source.scala @@ -1359,7 +1359,7 @@ # ^ source.scala meta.bracket.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^^^^ source.scala storage.type.primitive.scala +# ^^^^^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala keyword.operator.comparison.scala # ^^^^^^ source.scala @@ -1379,7 +1379,7 @@ # ^ source.scala meta.bracket.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^^^^ source.scala storage.type.primitive.scala +# ^^^^^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala keyword.operator.comparison.scala # ^^^^^^ source.scala @@ -1437,7 +1437,7 @@ # ^^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^ source.scala keyword.operator.arithmetic.scala # ^ source.scala meta.bracket.scala # ^ source.scala @@ -1538,7 +1538,7 @@ # ^ source.scala meta.bracket.scala # ^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala -# ^^^^^^ source.scala storage.type.primitive.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala meta.bracket.scala # ^^ source.scala @@ -1549,7 +1549,7 @@ # ^ source.scala meta.bracket.scala # ^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala -# ^^^^^^ source.scala storage.type.primitive.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala meta.bracket.scala # ^ source.scala meta.bracket.scala @@ -1568,7 +1568,7 @@ # ^ source.scala meta.bracket.scala # ^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala -# ^^^^^^ source.scala storage.type.primitive.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala meta.bracket.scala # ^ source.scala @@ -1734,7 +1734,7 @@ # ^ source.scala keyword.operator.comparison.scala # ^ source.scala keyword.operator.comparison.scala # ^ source.scala -# ^^^^^^^ source.scala storage.type.primitive.scala +# ^^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala meta.bracket.scala # ^^^^ source.scala variable.parameter.scala @@ -1743,11 +1743,11 @@ # ^ source.scala keyword.operator.comparison.scala # ^ source.scala keyword.operator.comparison.scala # ^ source.scala -# ^^^^ source.scala storage.type.primitive.scala +# ^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^ source.scala storage.type.primitive.scala +# ^^^^ source.scala entity.name.class # ^^ source.scala # ^ source.scala keyword.operator.comparison.scala > if (cond) { body ; whileLoop(cond)(body) } else {} @@ -1946,12 +1946,12 @@ # ^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala # ^ source.scala keyword.operator.comparison.scala @@ -1980,7 +1980,7 @@ # ^ source.scala # ^^^^^^ source.scala entity.other.inherited-class.scala # ^ source.scala meta.bracket.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala # ^ source.scala punctuation.section.block.begin.scala @@ -1993,16 +1993,16 @@ # ^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^^ source.scala # ^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala keyword.operator.comparison.scala # ^^^^^^^^^ source.scala @@ -2016,7 +2016,7 @@ # ^^^^ source.scala entity.name.function.declaration # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala # ^ source.scala keyword.operator.comparison.scala # ^ source.scala @@ -2150,12 +2150,12 @@ # ^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^^ source.scala # ^ source.scala variable.parameter.scala # ^ source.scala meta.colon.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala # ^ source.scala keyword.operator.comparison.scala @@ -2353,7 +2353,7 @@ # ^ source.scala # ^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala -# ^^^^^^ source.scala storage.type.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala meta.bracket.scala # ^ source.scala @@ -2433,7 +2433,7 @@ # ^ source.scala variable.other.declaration.scala # ^ source.scala keyword.operator.scala # ^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^^^^^^^^ source.scala > > def f(x: Option[Int]) = (x: @unchecked) match { @@ -2447,7 +2447,7 @@ # ^ source.scala # ^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala meta.bracket.scala # ^ source.scala @@ -2489,11 +2489,11 @@ # ^ source.scala keyword.operator.scala # ^^^^^^^^^^^ source.scala # ^ source.scala meta.bracket.scala -# ^^^^ source.scala storage.type.primitive.scala +# ^^^^ source.scala entity.name.class # ^^ source.scala -# ^^^ source.scala storage.type.primitive.scala +# ^^^ source.scala entity.name.class # ^^ source.scala -# ^^^^^^ source.scala storage.type.primitive.scala +# ^^^^^^ source.scala entity.name.class # ^ source.scala meta.bracket.scala # ^ source.scala # ^ source.scala entity.name.class diff --git a/tests/unit/#62.test.scala b/tests/unit/#62.test.scala new file mode 100644 index 0000000..5438015 --- /dev/null +++ b/tests/unit/#62.test.scala @@ -0,0 +1,62 @@ +// SYNTAX TEST "source.scala" + + val _ : XYZ = XYZ +// ^^^ keyword.declaration.stable.scala +// ^^^ entity.name.class +// ^^^ entity.name.class + + val _ : Unit = Unit +// ^^^ keyword.declaration.stable.scala +// ^^^^ entity.name.class +// ^^^^ entity.name.class + + val _ : Boolean = Boolean +// ^^^ keyword.declaration.stable.scala +// ^^^^^^^ entity.name.class +// ^^^^^^^ entity.name.class + + val _ : Byte = Byte +// ^^^ keyword.declaration.stable.scala +// ^^^^ entity.name.class +// ^^^^ entity.name.class + + val _ : Char = Char +// ^^^ keyword.declaration.stable.scala +// ^^^^ entity.name.class +// ^^^^ entity.name.class + + val _ : Short = Short +// ^^^ keyword.declaration.stable.scala +// ^^^^^ entity.name.class +// ^^^^^ entity.name.class + + val _ : Int = Int +// ^^^ keyword.declaration.stable.scala +// ^^^ entity.name.class +// ^^^ entity.name.class + + val _ : Float = Float +// ^^^ keyword.declaration.stable.scala +// ^^^^^ entity.name.class +// ^^^^^ entity.name.class + + val _ : Long = Long +// ^^^ keyword.declaration.stable.scala +// ^^^^ entity.name.class +// ^^^^ entity.name.class + + val _ : Double = Double +// ^^^ keyword.declaration.stable.scala +// ^^^^^^ entity.name.class +// ^^^^^^ entity.name.class + + val _ : String = String +// ^^^ keyword.declaration.stable.scala +// ^^^^^^ entity.name.class +// ^^^^^^ entity.name.class + + val _ : Symbol = Symbol +// ^^^ keyword.declaration.stable.scala +// ^^^^^^ entity.name.class +// ^^^^^^ entity.name.class + diff --git a/tests/unit/basic.test.scala b/tests/unit/basic.test.scala index 1cbb149..1098532 100644 --- a/tests/unit/basic.test.scala +++ b/tests/unit/basic.test.scala @@ -4,13 +4,13 @@ class Stack[A] { // <----- keyword.declaration.scala // ^ - keyword.declaration.scala entity.name.class.declaration -// ^^^^^ entity.name.class.declaration +// ^^^^^ entity.name.class.declaration // ^ source.scala meta.bracket.scala // ^ entity.name.class // ^ meta.bracket.scala // ^ punctuation.section.block.begin.scala private var elements: List[A] = Nil -//^^^^^^^ storage.modifier.access +//^^^^^^^ storage.modifier.access // ^^^ keyword.declaration.volatile.scala // ^^^^^^^^ variable.other.declaration.scala // ^ keyword.operator.scala @@ -19,28 +19,28 @@ class Stack[A] { // ^ entity.name.class // ^ meta.bracket.scala // ^ keyword.operator.comparison.scala -// ^^^ constant.language.scala +// ^^^ entity.name.class def push(x: A) { elements = x :: elements } // ^^^ keyword.declaration.scala // ^^^^ entity.name.function.declaration -// ^ meta.bracket.scala -// ^ variable.parameter.scala -// ^ meta.colon.scala +// ^ meta.bracket.scala +// ^ variable.parameter.scala +// ^ meta.colon.scala // ^ entity.name.class -// ^ meta.bracket.scala +// ^ meta.bracket.scala // ^ punctuation.section.block.begin.scala // ^^^^^^^^ source.scala // ^ keyword.operator.comparison.scala -// ^ source.scala +// ^ source.scala // ^^ keyword.operator.scala -// ^^^^^^^^ source.scala +// ^^^^^^^^ source.scala // ^ punctuation.section.block.end.scala def peek: A = elements.head def pop(): A = { val currentTop = peek -// ^^^ keyword.declaration.stable.scala +// ^^^ keyword.declaration.stable.scala // ^^^^^^^^^^ variable.other.declaration.scala -// ^ keyword.operator.comparison.scala +// ^ keyword.operator.comparison.scala // ^^^^ source.scala elements = elements.tail currentTop diff --git a/tests/unit/quoted.test.scala b/tests/unit/quoted.test.scala index 132cf4f..d17ca1c 100644 --- a/tests/unit/quoted.test.scala +++ b/tests/unit/quoted.test.scala @@ -7,5 +7,5 @@ '[ String ] // ^^ constant.other.quoted.scala -// ^^^^^^ storage.type.scala +// ^^^^^^ entity.name.class // ^ meta.bracket.scala diff --git a/tests/unit/unicode.identifiers.test.scala b/tests/unit/unicode.identifiers.test.scala index 8afaf50..bd5b86d 100644 --- a/tests/unit/unicode.identifiers.test.scala +++ b/tests/unit/unicode.identifiers.test.scala @@ -6,18 +6,18 @@ class Φδφκξ(x : Int, δφξκξ: Int, val y: Int, val φξ: Int) { // ^ meta.bracket.scala // ^ variable.parameter.scala // ^ meta.colon.scala -// ^^^ storage.type.primitive.scala +// ^^^ entity.name.class // ^^^^^ variable.parameter.scala // ^ meta.colon.scala -// ^^^ storage.type.primitive.scala +// ^^^ entity.name.class // ^^^ keyword.declaration.stable.scala // ^ variable.other.declaration.scala // ^ keyword.operator.scala -// ^^^ storage.type.primitive.scala +// ^^^ entity.name.class // ^^^ keyword.declaration.stable.scala // ^^ variable.other.declaration.scala // ^ keyword.operator.scala -// ^^^ storage.type.primitive.scala +// ^^^ entity.name.class // ^ meta.bracket.scala // ^ punctuation.section.block.begin.scala def δφξ() = 3 @@ -39,7 +39,7 @@ class Φδφκξ(x : Int, δφξκξ: Int, val y: Int, val φξ: Int) { // ^ meta.bracket.scala // ^^^^^ variable.parameter.scala // ^ meta.colon.scala -// ^^^ storage.type.primitive.scala +// ^^^ entity.name.class // ^ meta.bracket.scala // ^ keyword.operator.comparison.scala // ^^ meta.parentheses.scala meta.bracket.scala @@ -49,7 +49,7 @@ class Φδφκξ(x : Int, δφξκξ: Int, val y: Int, val φξ: Int) { // ^ meta.bracket.scala // ^^ variable.parameter.scala // ^ meta.colon.scala -// ^^^ storage.type.primitive.scala +// ^^^ entity.name.class // ^ meta.bracket.scala // ^ keyword.operator.comparison.scala // ^^ meta.parentheses.scala meta.bracket.scala @@ -83,7 +83,7 @@ case class **(x: Int) {} // ^ meta.bracket.scala // ^ variable.parameter.scala // ^ meta.colon.scala -// ^^^ storage.type.primitive.scala +// ^^^ entity.name.class // ^ meta.bracket.scala trait f_*[A,x] { @@ -98,12 +98,12 @@ trait f_*[A,x] { //^^^^ keyword.declaration.scala // ^ entity.name.type.declaration // ^ keyword.operator.comparison.scala -// ^^^ storage.type.primitive.scala +// ^^^ entity.name.class type x_* = Int //^^^^ keyword.declaration.scala // ^^^ entity.name.type.declaration // ^ keyword.operator.comparison.scala -// ^^^ storage.type.primitive.scala +// ^^^ entity.name.class }