diff --git a/src/typescript/Scala.tmLanguage.ts b/src/typescript/Scala.tmLanguage.ts index 1918997..2a11304 100644 --- a/src/typescript/Scala.tmLanguage.ts +++ b/src/typescript/Scala.tmLanguage.ts @@ -17,6 +17,7 @@ const idrest = `${letter}${letterOrDigit}*(?:(?<=_)${opchar}+)?` const idUpper = `${upperLetter}${letterOrDigit}*(?:(?<=_)${opchar}+)?` const idLower = `${lowerLetter}${letterOrDigit}*(?:(?<=_)${opchar}+)?` const plainid = `(?:${idrest}|${opchar}+)` +const interpolatorid = `(?:${letter}${letterOrDigit}*(?:(?<=_)${opchar}+)?)` const backQuotedId = "`[^`]+`" const anyId = `(?:${plainid}|${backQuotedId})` const endOfLineMaybeWithComment = "(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)" @@ -365,7 +366,7 @@ export const scalaTmLanguage: TmLanguage = { } }, { - begin: `\\b(${alphaId})(""")`, + begin: `\\b(${interpolatorid})(""")`, end: `(""")(?!")|\\$\n|(\\$[^\\$"_{${letterChars}])`, beginCaptures: { '1': { @@ -456,7 +457,7 @@ export const scalaTmLanguage: TmLanguage = { } }, { - begin: `\\b(${alphaId})(")`, + begin: `\\b(${interpolatorid})(")`, end: `(")|\\$\n|(\\$[^\\$"_{${letterChars}])`, beginCaptures: { '1': { diff --git a/tests/unit/#222.test.scala b/tests/unit/#222.test.scala new file mode 100644 index 0000000..7a0850d --- /dev/null +++ b/tests/unit/#222.test.scala @@ -0,0 +1,33 @@ +// SYNTAX TEST "source.scala" + + test"hello $name" +// ^^^^ keyword.interpolation.scala +// ^ string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala +// ^^^^^^ string.quoted.double.interpolated.scala +// ^ meta.template.expression.scala punctuation.definition.template-expression.begin.scala +// ^^^^ meta.template.expression.scala +// ^ string.quoted.double.interpolated.scala punctuation.definition.string.end.scala + + test1"hello $name" +// ^^^^^ keyword.interpolation.scala +// ^ string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala +// ^^^^^^ string.quoted.double.interpolated.scala +// ^ meta.template.expression.scala punctuation.definition.template-expression.begin.scala +// ^^^^ meta.template.expression.scala +// ^ string.quoted.double.interpolated.scala punctuation.definition.string.end.scala + + test1a"hello $name" +// ^^^^^^ keyword.interpolation.scala +// ^ string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala +// ^^^^^^ string.quoted.double.interpolated.scala +// ^ meta.template.expression.scala punctuation.definition.template-expression.begin.scala +// ^^^^ meta.template.expression.scala +// ^ string.quoted.double.interpolated.scala punctuation.definition.string.end.scala + + test_+"hello $name" +// ^^^^^^ keyword.interpolation.scala +// ^ string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala +// ^^^^^^ string.quoted.double.interpolated.scala +// ^ meta.template.expression.scala punctuation.definition.template-expression.begin.scala +// ^^^^ meta.template.expression.scala +// ^ string.quoted.double.interpolated.scala punctuation.definition.string.end.scala