diff --git a/.travis.yml b/.travis.yml index b2c3fc5..ed26f23 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,7 @@ stages: jobs: include: - stage: build - script: yarn build + script: yarn build && yarn test - stage: release script: bin/ci-release.sh diff --git a/.vscodeignore b/.vscodeignore index 9dc2806..b04aab4 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -4,4 +4,5 @@ tests/** src/** node_modules -.gitkeep \ No newline at end of file +.gitkeep +scripts \ No newline at end of file diff --git a/bin/ci-release.sh b/bin/ci-release.sh index f3a1550..3b9c0ba 100755 --- a/bin/ci-release.sh +++ b/bin/ci-release.sh @@ -7,6 +7,7 @@ NEW_VERSION=${TRAVIS_TAG#"v"} # Build the extension yarn install yarn build +yarn test # Update package.json and CHANGELOG.md set-up-ssh() { diff --git a/package.json b/package.json index e639465..582b19a 100644 --- a/package.json +++ b/package.json @@ -48,11 +48,13 @@ "ts-node": "^8.1.0", "tsc": "^1.20150623.0", "typescript": "^3.3.3", + "vscode-tmgrammar-test": "0.0.5", "vsce": "^1.59.0" }, "scripts": { "vscode:prepublish": "test -f ./syntaxes/Scala.tmLanguage.json", "vscode:publish": "vsce publish --yarn", - "build": "ts-node src/typescript/GenerateTmLanguageFile.ts > ./syntaxes/Scala.tmLanguage.json" + "build": "ts-node src/typescript/GenerateTmLanguageFile.ts > ./syntaxes/Scala.tmLanguage.json", + "test": "node scripts/unit.js && node scripts/snap.js" } } diff --git a/scripts/snap.js b/scripts/snap.js new file mode 100644 index 0000000..edbf84a --- /dev/null +++ b/scripts/snap.js @@ -0,0 +1,9 @@ +var cp = require('child_process') + +try { +cp.execSync("npx vscode-tmgrammar-snap -s source.scala -g syntaxes/Scala.tmLanguage.json -t 'tests/snap/**/*.test.scala'", + { stdio: 'inherit' }) +} catch(err) { + console.debug(err.toString()) + process.exit(-1) +} \ No newline at end of file diff --git a/scripts/unit.js b/scripts/unit.js new file mode 100644 index 0000000..65a4ae5 --- /dev/null +++ b/scripts/unit.js @@ -0,0 +1,9 @@ +var cp = require('child_process') + +try { +cp.execSync("npx vscode-tmgrammar-test -s source.scala -g syntaxes/Scala.tmLanguage.json -t 'tests/unit/**/*.test.scala'", + { stdio: 'inherit' }) +} catch(err) { + console.debug(err.toString()) + process.exit(-1) +} \ No newline at end of file diff --git a/tests/snap/lexical.test.scala b/tests/snap/lexical.test.scala new file mode 100644 index 0000000..55b179e --- /dev/null +++ b/tests/snap/lexical.test.scala @@ -0,0 +1,78 @@ + +object ExampleIdentifiers { + val x = 3 + val Object = 3 + val maxIndex = 3 + val p2p = 3 + val empty_? = 3 + val + = 3 + val `yield` = 3 + val αρετη = 3 + val _y = 3 + val dot_product_* = 3 + val __system = 3 + val _MAX_LEN_ = 3 +} + +object IntegerLiterals { + (0, 21, 0xFFFFFFFF, -42L) +} + +object FloatingPointLiterals { + ( 0.0, 1e30f, 3.14159f, 1.0e-100, .1 ) +} + +object Boolean { + (true, false) +} + +object CharacterLiterals { + ('a', '\u0041', '\n', '\t') +} + +object StringLiterals { + ("Hello,\nWorld!", "This string contains a \" character.") + + """the present string + spans three + lines.""" + + """the present string + |spans three + |lines.""".stripMargin + + + val escapeSequences = "\b\t\n\f\r\"\'\\" + + s"$x plain ${val x = y}" + custom"$x plain ${val x = y}" + + s"""$x plain ${val x = y}""" + custom"""$x plain ${val x = y}""" +} + +object Symbols { + ('x, 'X, 'αρετη, '=, '+ ) +} + +// single line comment + + /* + +multiline comment*/ + + /** + * Scaladoc comment + * @scaladoc @param + */ + + /* nested /* multi-line */ comment */ + + +object Xml { + val b = + The Scala Language Specification + {scalaBook.version} + {scalaBook.authors.mkList("", ", ", "")} + +} diff --git a/tests/snap/lexical.test.scala.snap b/tests/snap/lexical.test.scala.snap new file mode 100644 index 0000000..b3f0fea --- /dev/null +++ b/tests/snap/lexical.test.scala.snap @@ -0,0 +1,495 @@ +> +>object ExampleIdentifiers { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> val x = 3 +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +> val Object = 3 +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^^^^^ source.scala constant.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^^^^^^^^^ source.scala +> val maxIndex = 3 +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^^^^^^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^^^^ source.scala +> val p2p = 3 +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^^^^^^^ source.scala +> val empty_? = 3 +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^^^^^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +> val + = 3 +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^^^^^^^^^^ source.scala +> val `yield` = 3 +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^^^^^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^^^^^^^^ source.scala +> val αρετη = 3 +#^^^^^^^^^^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^^^^^^ source.scala +> val _y = 3 +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^^^^^^^^ source.scala +> val dot_product_* = 3 +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^^^^^^^^^^^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +> val __system = 3 +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^^^^^^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^^^ source.scala +> val _MAX_LEN_ = 3 +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^^^^^^^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>object IntegerLiterals { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> (0, 21, 0xFFFFFFFF, -42L) +#^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala constant.numeric.scala +# ^^ source.scala +# ^^ source.scala constant.numeric.scala +# ^^^ source.scala +# ^^^^^^^^^^ source.scala constant.numeric.scala +# ^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^^^ source.scala constant.numeric.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^^^^ source.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>object FloatingPointLiterals { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> ( 0.0, 1e30f, 3.14159f, 1.0e-100, .1 ) +#^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^^^ source.scala constant.numeric.scala +# ^^^^^^^^^ source.scala +# ^^^^^^^^ source.scala constant.numeric.scala +# ^^ source.scala +# ^^^^^^^^ source.scala constant.numeric.scala +# ^^^ source.scala +# ^ source.scala constant.numeric.scala +# ^^ source.scala +# ^ source.scala meta.bracket.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>object Boolean { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> (true, false) +#^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala constant.language.scala +# ^^ source.scala +# ^^^^^ source.scala constant.language.scala +# ^ source.scala meta.bracket.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>object CharacterLiterals { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> ('a', '\u0041', '\n', '\t') +#^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala constant.character.literal.scala punctuation.definition.character.begin.scala +# ^ source.scala constant.character.literal.scala +# ^ source.scala constant.character.literal.scala punctuation.definition.character.end.scala +# ^^^^^ source.scala +# ^ source.scala constant.character.literal.scala punctuation.definition.character.begin.scala +# ^^^^^^ source.scala constant.character.literal.scala constant.character.escape.scala +# ^ source.scala constant.character.literal.scala punctuation.definition.character.end.scala +# ^^^^^ source.scala +# ^ source.scala constant.character.literal.scala punctuation.definition.character.begin.scala +# ^^ source.scala constant.character.literal.scala constant.character.escape.scala +# ^ source.scala constant.character.literal.scala punctuation.definition.character.end.scala +# ^^^^^ source.scala +# ^ source.scala constant.character.literal.scala punctuation.definition.character.begin.scala +# ^^ source.scala constant.character.literal.scala constant.character.escape.scala +# ^ source.scala constant.character.literal.scala punctuation.definition.character.end.scala +# ^ source.scala meta.bracket.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>object StringLiterals { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> ("Hello,\nWorld!", "This string contains a \" character.") +#^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.begin.scala +# ^^^^^^ source.scala string.quoted.double.scala +# ^^ source.scala string.quoted.double.scala constant.character.escape.scala +# ^^^^^^ source.scala string.quoted.double.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.end.scala +# ^^^ source.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.begin.scala +# ^^^^^^^^^^^^^^^^^^^^^^^ source.scala string.quoted.double.scala +# ^^ source.scala string.quoted.double.scala constant.character.escape.scala +# ^^^^^^^^^^^ source.scala string.quoted.double.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.end.scala +# ^ source.scala meta.bracket.scala +> +> """the present string +#^^^^ source.scala +# ^^^ source.scala string.quoted.triple.scala punctuation.definition.string.begin.scala +# ^^^^^^^^^^^^^^^^^^^ source.scala string.quoted.triple.scala +> spans three +#^^^^^^^^^^^^^^^^^ source.scala string.quoted.triple.scala +> lines.""" +#^^^^^^^^^^^ source.scala string.quoted.triple.scala +# ^^^ source.scala string.quoted.triple.scala punctuation.definition.string.end.scala +> +> """the present string +#^^^^ source.scala +# ^^^ source.scala string.quoted.triple.scala punctuation.definition.string.begin.scala +# ^^^^^^^^^^^^^^^^^^^ source.scala string.quoted.triple.scala +> |spans three +#^^^^^^^^^^^^^^^^^^^ source.scala string.quoted.triple.scala +> |lines.""".stripMargin +#^^^^^^^^^^^^^ source.scala string.quoted.triple.scala +# ^^^ source.scala string.quoted.triple.scala punctuation.definition.string.end.scala +# ^^^^^^^^^^^^^ source.scala +> +> +> val escapeSequences = "\b\t\n\f\r\"\'\\" +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^^^^^^^^^^^^^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.begin.scala +# ^^ source.scala string.quoted.double.scala constant.character.escape.scala +# ^^ source.scala string.quoted.double.scala constant.character.escape.scala +# ^^ source.scala string.quoted.double.scala constant.character.escape.scala +# ^^ source.scala string.quoted.double.scala constant.character.escape.scala +# ^^ source.scala string.quoted.double.scala constant.character.escape.scala +# ^^ source.scala string.quoted.double.scala constant.character.escape.scala +# ^^ source.scala string.quoted.double.scala constant.character.escape.scala +# ^^ source.scala string.quoted.double.scala constant.character.escape.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.end.scala +> +> s"$x plain ${val x = y}" +#^^ source.scala +# ^ source.scala keyword.interpolation.scala +# ^ source.scala string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala +# ^ source.scala punctuation.definition.template-expression.begin.scala +# ^ source.scala +# ^ source.scala string.quoted.double.interpolated.scala +# ^ source.scala string.quoted.double.interpolated.scala +# ^ source.scala string.quoted.double.interpolated.scala +# ^ source.scala string.quoted.double.interpolated.scala +# ^ source.scala string.quoted.double.interpolated.scala +# ^ source.scala string.quoted.double.interpolated.scala +# ^ source.scala string.quoted.double.interpolated.scala +# ^^ source.scala punctuation.definition.template-expression.scala punctuation.definition.template-expression.begin.scala +# ^^^ source.scala punctuation.definition.template-expression.scala keyword.declaration.stable.scala +# ^ source.scala punctuation.definition.template-expression.scala +# ^ source.scala punctuation.definition.template-expression.scala variable.other.declaration.scala +# ^ source.scala punctuation.definition.template-expression.scala +# ^ source.scala punctuation.definition.template-expression.scala keyword.operator.comparison.scala +# ^^ source.scala punctuation.definition.template-expression.scala +# ^ source.scala punctuation.definition.template-expression.scala punctuation.definition.template-expression.end.scala +# ^ source.scala string.quoted.double.interpolated.scala punctuation.definition.string.end.scala +> custom"$x plain ${val x = y}" +#^^ source.scala +# ^^^^^^ source.scala keyword.interpolation.scala +# ^ source.scala string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala +# ^ source.scala punctuation.definition.template-expression.begin.scala +# ^ source.scala +# ^ source.scala string.quoted.double.interpolated.scala +# ^ source.scala string.quoted.double.interpolated.scala +# ^ source.scala string.quoted.double.interpolated.scala +# ^ source.scala string.quoted.double.interpolated.scala +# ^ source.scala string.quoted.double.interpolated.scala +# ^ source.scala string.quoted.double.interpolated.scala +# ^ source.scala string.quoted.double.interpolated.scala +# ^^ source.scala punctuation.definition.template-expression.scala punctuation.definition.template-expression.begin.scala +# ^^^ source.scala punctuation.definition.template-expression.scala keyword.declaration.stable.scala +# ^ source.scala punctuation.definition.template-expression.scala +# ^ source.scala punctuation.definition.template-expression.scala variable.other.declaration.scala +# ^ source.scala punctuation.definition.template-expression.scala +# ^ source.scala punctuation.definition.template-expression.scala keyword.operator.comparison.scala +# ^^ source.scala punctuation.definition.template-expression.scala +# ^ source.scala punctuation.definition.template-expression.scala punctuation.definition.template-expression.end.scala +# ^ source.scala string.quoted.double.interpolated.scala punctuation.definition.string.end.scala +> +> s"""$x plain ${val x = y}""" +#^^ source.scala +# ^ source.scala keyword.interpolation.scala +# ^^^ source.scala string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala +# ^ source.scala punctuation.definition.template-expression.begin.scala +# ^ source.scala +# ^ source.scala string.quoted.triple.interpolated.scala +# ^ source.scala string.quoted.triple.interpolated.scala +# ^ source.scala string.quoted.triple.interpolated.scala +# ^ source.scala string.quoted.triple.interpolated.scala +# ^ source.scala string.quoted.triple.interpolated.scala +# ^ source.scala string.quoted.triple.interpolated.scala +# ^ source.scala string.quoted.triple.interpolated.scala +# ^^ source.scala punctuation.definition.template-expression.scala punctuation.definition.template-expression.begin.scala +# ^^^ source.scala punctuation.definition.template-expression.scala keyword.declaration.stable.scala +# ^ source.scala punctuation.definition.template-expression.scala +# ^ source.scala punctuation.definition.template-expression.scala variable.other.declaration.scala +# ^ source.scala punctuation.definition.template-expression.scala +# ^ source.scala punctuation.definition.template-expression.scala keyword.operator.comparison.scala +# ^^ source.scala punctuation.definition.template-expression.scala +# ^ source.scala punctuation.definition.template-expression.scala punctuation.definition.template-expression.end.scala +# ^^^ source.scala string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala +> custom"""$x plain ${val x = y}""" +#^^ source.scala +# ^^^^^^ source.scala keyword.interpolation.scala +# ^^^ source.scala string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala +# ^ source.scala punctuation.definition.template-expression.begin.scala +# ^ source.scala +# ^ source.scala string.quoted.triple.interpolated.scala +# ^ source.scala string.quoted.triple.interpolated.scala +# ^ source.scala string.quoted.triple.interpolated.scala +# ^ source.scala string.quoted.triple.interpolated.scala +# ^ source.scala string.quoted.triple.interpolated.scala +# ^ source.scala string.quoted.triple.interpolated.scala +# ^ source.scala string.quoted.triple.interpolated.scala +# ^^ source.scala punctuation.definition.template-expression.scala punctuation.definition.template-expression.begin.scala +# ^^^ source.scala punctuation.definition.template-expression.scala keyword.declaration.stable.scala +# ^ source.scala punctuation.definition.template-expression.scala +# ^ source.scala punctuation.definition.template-expression.scala variable.other.declaration.scala +# ^ source.scala punctuation.definition.template-expression.scala +# ^ source.scala punctuation.definition.template-expression.scala keyword.operator.comparison.scala +# ^^ source.scala punctuation.definition.template-expression.scala +# ^ source.scala punctuation.definition.template-expression.scala punctuation.definition.template-expression.end.scala +# ^^^ source.scala string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>object Symbols { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> ('x, 'X, 'αρετη, '=, '+ ) +#^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^^ source.scala constant.other.symbol.scala +# ^^ source.scala +# ^^ source.scala constant.other.symbol.scala +# ^^ source.scala +# ^^^^^^ source.scala constant.other.symbol.scala +# ^^ source.scala +# ^ source.scala constant.character.literal.scala punctuation.definition.character.begin.scala +# ^^^ source.scala constant.character.literal.scala invalid.illegal.character-literal-too-long +# ^ source.scala constant.character.literal.scala punctuation.definition.character.end.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>// single line comment +#^^ source.scala comment.line.double-slash.scala punctuation.definition.comment.scala +# ^^^^^^^^^^^^^^^^^^^^ source.scala comment.line.double-slash.scala +> +> /* +#^^ source.scala +# ^^ source.scala comment.block.scala punctuation.definition.comment.scala +> +>multiline comment*/ +#^^^^^^^^^^^^^^^^^ source.scala comment.block.scala +# ^^ source.scala comment.block.scala punctuation.definition.comment.scala +> +> /** +#^^ source.scala comment.block.documentation.scala +# ^^^ source.scala comment.block.documentation.scala punctuation.definition.comment.scala +> * Scaladoc comment +#^^^^^^^^^^^^^^^^^^^^^^ source.scala comment.block.documentation.scala +> * @scaladoc @param +#^^^^^^^^^^^^^^^^^^^^^^^ source.scala comment.block.documentation.scala +> */ +#^^^ source.scala comment.block.documentation.scala +# ^^ source.scala comment.block.documentation.scala punctuation.definition.comment.scala +> +> /* nested /* multi-line */ comment */ +#^^^ source.scala +# ^^ source.scala comment.block.scala punctuation.definition.comment.scala +# ^^^^^^^^^^^^^^^^^^^^^^^ source.scala comment.block.scala +# ^^ source.scala comment.block.scala punctuation.definition.comment.scala +# ^^^^^^^^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala keyword.operator.arithmetic.scala +> +> +>object Xml { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> val b = +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala meta.tag.xml punctuation.definition.tag.xml +# ^^^^ source.scala meta.tag.xml entity.name.tag.localname.xml +# ^ source.scala meta.tag.xml punctuation.definition.tag.xml +> The Scala Language Specification +#^^^^^^^^^^ source.scala +# ^ source.scala meta.tag.xml punctuation.definition.tag.xml +# ^^^^^ source.scala meta.tag.xml entity.name.tag.localname.xml +# ^ source.scala meta.tag.xml punctuation.definition.tag.xml +# ^^^ source.scala entity.name.class +# ^ source.scala +# ^^^^^ source.scala entity.name.class +# ^ source.scala +# ^^^^^^^^ source.scala entity.name.class +# ^ source.scala +# ^^^^^^^^^^^^^ source.scala entity.name.class +# ^^ source.scala meta.tag.xml punctuation.definition.tag.xml +# ^^^^^ source.scala meta.tag.xml entity.name.tag.localname.xml +# ^ source.scala meta.tag.xml punctuation.definition.tag.xml +> {scalaBook.version} +#^^^^^^^^^^ source.scala +# ^ source.scala meta.tag.xml punctuation.definition.tag.xml +# ^^^^^^^ source.scala meta.tag.xml entity.name.tag.localname.xml +# ^ source.scala meta.tag.xml punctuation.definition.tag.xml +# ^ source.scala punctuation.section.block.begin.scala +# ^^^^^^^^^^^^^^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +# ^^ source.scala meta.tag.xml punctuation.definition.tag.xml +# ^^^^^^^ source.scala meta.tag.xml entity.name.tag.localname.xml +# ^ source.scala meta.tag.xml punctuation.definition.tag.xml +> {scalaBook.authors.mkList("", ", ", "")} +#^^^^^^^^^^ source.scala +# ^ source.scala meta.tag.xml punctuation.definition.tag.xml +# ^^^^^^^ source.scala meta.tag.xml entity.name.tag.localname.xml +# ^ source.scala meta.tag.xml punctuation.definition.tag.xml +# ^ source.scala punctuation.section.block.begin.scala +# ^^^^^^^^^^^^^^^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.begin.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.end.scala +# ^^ source.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.begin.scala +# ^^ source.scala string.quoted.double.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.end.scala +# ^^ source.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.begin.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.end.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala punctuation.section.block.end.scala +# ^^ source.scala meta.tag.xml punctuation.definition.tag.xml +# ^^^^^^^ source.scala meta.tag.xml entity.name.tag.localname.xml +# ^ source.scala meta.tag.xml punctuation.definition.tag.xml +> +#^^^^^^^^ source.scala +# ^^ source.scala meta.tag.xml punctuation.definition.tag.xml +# ^^^^ source.scala meta.tag.xml entity.name.tag.localname.xml +# ^ source.scala meta.tag.xml punctuation.definition.tag.xml +>} +#^ source.scala punctuation.section.block.end.scala +> \ No newline at end of file diff --git a/tests/snap/scala_spec.test.scala b/tests/snap/scala_spec.test.scala new file mode 100644 index 0000000..4822faa --- /dev/null +++ b/tests/snap/scala_spec.test.scala @@ -0,0 +1,242 @@ +package org.scala.syntax +package test + + +class TreeMap[A <: Comparable[A], B] { } +class List[A] { } +class I extends Comparable[I] {} + +class F[M[_], X] { } +class S[K <: String] {} +class G[M[ Z <: I ], I] { } + +case class Bird (val name: String @suspendable) extends Object { + def fly(height: Int @suspendable) = ??? + def walk[T1 : T2](_distance: Int, empty_? : Int, `yield`: String, αρετη: Boolean)(implicit fa: Functor[T1]) = ??? + def c (x: Int) (y: String, z: String): String = ??? + def union[A <: Comparable[A]] (x: Set[A], xs: Set[A]): Set[A] +} + +trait Iterable[+X] { + def flatMap[newType[+X] <: Iterable[X], S](f: X => newType[S]): newType[S] +} + +package org.scala { + class List[+T] + class Set[-T] +} + +class A[+T] {} +class B extends A[B] +class C extends A[C] + + + +abstract class AbstractClass +sealed trait Sealed + +object Types { + val x : String @suspendable = "" + + def infix() : T1 \/ T2 = ??? + + type Z1 = Ref[T] forSome { type T <: java.lang.Number } + type Z2 = Ref[x.T] forSome { val x: Outer } + type Z3 = Ref[x_type # T] forSome { type x_type <: Outer with Singleton } + + def complexBounds[A, B >: A, C >: A <: B]() + def complexBounds2[M[X <: Bound[X]], Bound[_]] + def complexBounds3[@specialized T, U]() + + def compare[T](a: T = 0)(b: T = a) = (a == b) + def f(a: Int = 0)(b: Int = a + 1) = b + + def whileLoop (cond: => Boolean) (stat: => Unit): Unit + + def sum(args: Int*) = { + var result = 0 + for (arg <- args) result += arg + result + } + + def write(str: String) { System.out.println(str) } + def write(str: String): Unit = { System.out.println(str) } + + + + type Pair[+A, +B] = Tuple2[A, B] + object Pair { + { import M.{one, z => zero, _}; add(zero, one) } + def apply[A, B](x: A, y: B) = Tuple2(x, y) + def unapply[A, B](x: Tuple2[A, B]): Option[Tuple2[A, B]] = Some(x) + } +} + +object ValueDefinitions { + val pi = 3.1415 + val pi: Double = 3.1415 // equivalent to first definition + val Some(x) = f() // a pattern definition + val x :: xs = mylist // an infix pattern definition +} + +class Iter extends StringIterator with RichIterator { } +trait A extends Root { type T <: A } + +class Modifiers { + final val x = e + override def f() + private val y = "" + abstract override def g() + private lazy final val h = 3 +} + +object m { + abstract sealed class C (x: Int) { + def nextC = new C(x + 1) {} + } + val empty = new C(0) {} +} + +class LinkedList[A]() { self: List with Seq => + var head = ??? + var tail = null + def isEmpty = tail != null + def this(head: A) = { this(); this.head = head } + def this(head: A, tail: List[A]) = { this(head); this.tail = tail } +} + +case class Lambda(x: String, e: Expr) extends Expr + +trait Comparable[T <: Comparable[T]] { self: T => + def < (that: T): Boolean + def <=(that: T): Boolean = this < that || this == that + def > (that: T): Boolean = that < this + def >=(that: T): Boolean = that <= this +} + +class A extends Root { override def x = "A" ; def superA = super.x } + +object Appl { + def sum(xs: Int*) = (0 /: xs) ((x, y) => x + y) + sum(List(1, 2, 3, 4): _*) + + val x : S = new Z + val y : S = new Z { + val x = 5 + } + + def matmul(xss: Array[Array[Double]], yss: Array[Array[Double]]) = { + val zss: Array[Array[Double]] = new Array(xss.length, yss(0).length) + var i = 0 + while (i < xss.length) { + var j = 0 + while (j < yss(0).length) { + var acc = 0.0 + var k = 0 + while (k < yss.length) { + acc = acc + xss(i)(k) * yss(k)(j) + k += 1 + } + zss(i)(j) = acc + j += 1 + } + i += 1 + } + zss + } + + def whileLoop(cond: => Boolean)(body: => Unit): Unit = + if (cond) { body ; whileLoop(cond)(body) } else {} + + do {x += 2} while (x < 100) + + for { i <- 1 until n + j <- 1 until i + if isPrime(i+j) + } yield (i, j) + + (1 until n) + .flatMap { + case i => (1 until i) + .withFilter { j => isPrime(i+j) } + .map { case j => (i, j) } } + + try { + throw ex; + } catch { + case NonFatal(e) => throw e; + case other => throw other + } +} + +object Inline { + val summ = (x: Int,y: Int) => x + y +} + +object Monoids { + implicit object stringMonoid extends Monoid[String] { + def add(x: String, y: String): String = x.concat(y) + def unit: String = "" + } +} + +object A1 { + def sum[A](xs: List[A])(implicit m: Monoid[A]): A = + if (xs.isEmpty) m.unit + else m.add(xs.head, sum(xs.tail)) + + implicit def list2ordered[A](x: List[A]) + (implicit elem2ordered: A => Ordered[A]): Ordered[List[A]] +} + +object PatternMatching { + def f(x: Int, y: Int) = x match { + case `y` => + case s @ Seq(_, _, _) => + case Seq(first, tail @ _*) => + case first +: tail => + case 3 | 5 | 6 => + case y: Number => y.n + case Lit(n) => n + case IsZero(u) => eval(u) == 0 + case _ => 15 + } + +} + +package p1 { + package p2 { + object Kitten + } +} + +package a.b { + class A { + val x = new _root_.b.B + } +} + +object HelloWorld { + def main(args: Array[String]) { println("Hello World") } +} + +object HelloWorld extends App { + println("Hello World") +} + +@SerialVersionUID(12345) +object Annotations { + @deprecated("Use D", "1.0") class C { } + @transient @volatile var m: Int + + def f(x: Option[Int]) = (x: @unchecked) match { + case Some(y) => y + } + + trait Function0[@specialized(Unit, Int, Double) T] { + def apply: T + } + + @UserDefinedUpperCase def x + @userDefinedLowerCase def y +} \ No newline at end of file diff --git a/tests/snap/scala_spec.test.scala.snap b/tests/snap/scala_spec.test.scala.snap new file mode 100644 index 0000000..42fbd9d --- /dev/null +++ b/tests/snap/scala_spec.test.scala.snap @@ -0,0 +1,2530 @@ +>package org.scala.syntax +#^^^^^^^ source.scala meta.package.scala keyword.other.import.scala +# ^ source.scala meta.package.scala +# ^^^ source.scala meta.package.scala entity.name.package.scala +# ^ source.scala meta.package.scala punctuation.definition.package +# ^^^^^ source.scala meta.package.scala entity.name.package.scala +# ^ source.scala meta.package.scala punctuation.definition.package +# ^^^^^^ source.scala meta.package.scala entity.name.package.scala +>package test +#^^^^^^^ source.scala meta.package.scala keyword.other.import.scala +# ^ source.scala meta.package.scala +# ^^^^ source.scala meta.package.scala entity.name.package.scala +> +> +>class TreeMap[A <: Comparable[A], B] { } +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +>class List[A] { } +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.name.class.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +>class I extends Comparable[I] {} +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class.declaration +# ^ source.scala +# ^^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^ source.scala entity.other.inherited-class.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala punctuation.section.block.end.scala +> +>class F[M[_], X] { } +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +>class S[K <: String] {} +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^ source.scala storage.type.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala punctuation.section.block.end.scala +>class G[M[ Z <: I ], I] { } +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> +>case class Bird (val name: String @suspendable) extends Object { +#^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^^^ source.scala variable.other.declaration.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^ source.scala storage.type.scala +# ^ source.scala +# ^ source.scala keyword.operator.scala +# ^^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^ source.scala entity.other.inherited-class.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> def fly(height: Int @suspendable) = ??? +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^^^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^ source.scala +# ^ source.scala keyword.operator.scala +# ^^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala keyword.operator.scala +> def walk[T1 : T2](_distance: Int, empty_? : Int, `yield`: String, αρετη: Boolean)(implicit fa: Functor[T1]) = ??? +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^^ source.scala +# ^^^^^^^ source.scala +# ^ source.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^^ source.scala +# ^^^^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^^ source.scala storage.type.scala +# ^^^^^^^ source.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^^ source.scala storage.type.primitive.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala keyword.operator.scala +> def c (x: Int) (y: String, z: String): String = ??? +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.function.declaration +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^ 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 +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^^ source.scala storage.type.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^ source.scala storage.type.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala keyword.operator.scala +> def union[A <: Comparable[A]] (x: Set[A], xs: Set[A]): Set[A] +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ 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 entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>trait Iterable[+X] { +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> def flatMap[newType[+X] <: Iterable[X], S](f: X => newType[S]): newType[S] +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.scala +# ^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>package org.scala { +#^^^^^^^ source.scala meta.package.scala keyword.other.import.scala +# ^ source.scala meta.package.scala +# ^^^ source.scala meta.package.scala entity.name.package.scala +# ^ source.scala meta.package.scala punctuation.definition.package +# ^^^^^ source.scala meta.package.scala entity.name.package.scala +# ^^^ source.scala meta.package.scala +> class List[+T] +#^^ source.scala +# ^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.name.class.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +> class Set[-T] +#^^ source.scala +# ^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^ source.scala entity.name.class.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>class A[+T] {} +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala punctuation.section.block.end.scala +>class B extends A[B] +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class.declaration +# ^ source.scala +# ^^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.other.inherited-class.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +>class C extends A[C] +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class.declaration +# ^ source.scala +# ^^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.other.inherited-class.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +> +> +> +>abstract class AbstractClass +#^^^^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^^ source.scala entity.name.class.declaration +>sealed trait Sealed +#^^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.class.declaration +> +>object Types { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> val x : String @suspendable = "" +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^ source.scala storage.type.scala +# ^ source.scala +# ^ source.scala keyword.operator.scala +# ^^^^^^^^^^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.begin.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.end.scala +> +> def infix() : T1 \/ T2 = ??? +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.function.declaration +# ^^ source.scala meta.parentheses.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^ source.scala entity.name.class +# ^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala +# ^^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala keyword.operator.scala +> +> type Z1 = Ref[T] forSome { type T <: java.lang.Number } +#^^^ source.scala +# ^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^ source.scala entity.name.type.declaration +# ^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^^^^^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.type.declaration +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.scala +# ^^^^^^^^^^^ source.scala +# ^^^^^^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> type Z2 = Ref[x.T] forSome { val x: Outer } +#^^^ source.scala +# ^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^ source.scala entity.name.type.declaration +# ^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^^^^^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> type Z3 = Ref[x_type # T] forSome { type x_type <: Outer with Singleton } +#^^^ source.scala +# ^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^ source.scala entity.name.type.declaration +# ^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^^^^^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^^^^^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.type.declaration +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.class +# ^ source.scala +# ^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^ source.scala entity.other.inherited-class.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> +> def complexBounds[A, B >: A, C >: A <: B]() +#^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^ source.scala meta.parentheses.scala meta.bracket.scala +> def complexBounds2[M[X <: Bound[X]], Bound[_]] +#^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +> def complexBounds3[@specialized T, U]() +#^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.scala +# ^^^^^^^^^^^^ source.scala +# ^ source.scala entity.name.class +# ^^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^ source.scala meta.parentheses.scala meta.bracket.scala +> +> def compare[T](a: T = 0)(b: T = a) = (a == b) +#^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^^ source.scala keyword.operator.comparison.scala +# ^^ source.scala +# ^ source.scala meta.bracket.scala +> def f(a: Int = 0)(b: Int = a + 1) = b +#^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^ source.scala +> +> def whileLoop (cond: => Boolean) (stat: => Unit): Unit +#^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^ source.scala entity.name.function.declaration +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^^^^ source.scala storage.type.primitive.scala +# ^ 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 keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^ source.scala storage.type.primitive.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^ source.scala storage.type.primitive.scala +> +> def sum(args: Int*) = { +#^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> var result = 0 +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.volatile.scala +# ^ source.scala +# ^^^^^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +> for (arg <- args) result += arg +#^^^^ source.scala +# ^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^ source.scala +> result +#^^^^^^^^^^^ source.scala +> } +#^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> +> def write(str: String) { System.out.println(str) } +#^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^^ source.scala storage.type.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.class +# ^^^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> def write(str: String): Unit = { System.out.println(str) } +#^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^^ source.scala storage.type.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^ source.scala storage.type.primitive.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.class +# ^^^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> +> +> +> type Pair[+A, +B] = Tuple2[A, B] +#^^^^ source.scala +# ^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.name.type.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala entity.name.class +# ^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +> object Pair { +#^^^^ source.scala +# ^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> { import M.{one, z => zero, _}; add(zero, one) } +#^^^^^^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ 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 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 +# ^ source.scala meta.import.scala meta.import.selector.scala +# ^ source.scala meta.import.scala meta.import.selector.scala +# ^ source.scala meta.import.scala meta.import.selector.scala entity.name.import.renamed-from.scala +# ^ source.scala meta.import.scala meta.import.selector.scala +# ^^ source.scala meta.import.scala meta.import.selector.scala keyword.other.arrow.scala +# ^ source.scala meta.import.scala meta.import.selector.scala +# ^^^^ source.scala meta.import.scala meta.import.selector.scala entity.name.import.renamed-to.scala +# ^^ source.scala meta.import.scala meta.import.selector.scala +# ^ source.scala meta.import.scala meta.import.selector.scala entity.name.import.scala +# ^ source.scala meta.import.scala meta.import.selector.scala meta.bracket.scala +# ^ source.scala meta.import.scala +# ^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> def apply[A, B](x: A, y: B) = Tuple2(x, y) +#^^^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^^ source.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala +# ^ source.scala meta.bracket.scala +> def unapply[A, B](x: Tuple2[A, B]): Option[Tuple2[A, B]] = Some(x) +#^^^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +> } +#^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>object ValueDefinitions { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> val pi = 3.1415 +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^^^ source.scala constant.numeric.scala +> val pi: Double = 3.1415 // equivalent to first definition +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^ source.scala variable.other.declaration.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^ source.scala storage.type.primitive.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^^^ source.scala constant.numeric.scala +# ^^^ source.scala +# ^^ source.scala comment.line.double-slash.scala punctuation.definition.comment.scala +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.scala comment.line.double-slash.scala +> val Some(x) = f() // a pattern definition +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^^^ source.scala constant.other.declaration.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^ source.scala +# ^^ source.scala meta.parentheses.scala meta.bracket.scala +# ^^^^^^^^^ source.scala +# ^^ source.scala comment.line.double-slash.scala punctuation.definition.comment.scala +# ^^^^^^^^^^^^^^^^^^^^^ source.scala comment.line.double-slash.scala +> val x :: xs = mylist // an infix pattern definition +#^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^^ source.scala keyword.operator.scala +# ^^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^^^^^^^^^ source.scala +# ^^ source.scala comment.line.double-slash.scala punctuation.definition.comment.scala +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.scala comment.line.double-slash.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>class Iter extends StringIterator with RichIterator { } +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^^^ source.scala entity.other.inherited-class.scala +# ^ source.scala +# ^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^ source.scala entity.other.inherited-class.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +>trait A extends Root { type T <: A } +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class.declaration +# ^ source.scala +# ^^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.other.inherited-class.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.type.declaration +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> +>class Modifiers { +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> final val x = e +#^^^^ source.scala +# ^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^ source.scala +> override def f() +#^^^^ source.scala +# ^^^^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.function.declaration +# ^^ source.scala meta.parentheses.scala meta.bracket.scala +> private val y = "" +#^^^^ source.scala +# ^^^^^^^ source.scala storage.modifier.access +# ^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.begin.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.end.scala +> abstract override def g() +#^^^^ source.scala +# ^^^^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^^^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.function.declaration +# ^^ source.scala meta.parentheses.scala meta.bracket.scala +> private lazy final val h = 3 +#^^^^ source.scala +# ^^^^^^^ source.scala storage.modifier.access +# ^ source.scala +# ^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>object m { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> abstract sealed class C (x: Int) { +#^^^^ source.scala +# ^^^^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> def nextC = new C(x + 1) {} +#^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.function.declaration +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala punctuation.section.block.end.scala +> } +#^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> val empty = new C(0) {} +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^^^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala constant.numeric.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala punctuation.section.block.end.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>class LinkedList[A]() { self: List with Seq => +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^ source.scala meta.parentheses.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^^^^ source.scala variable.language.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^ source.scala entity.name.class +# ^ source.scala +# ^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^ source.scala entity.other.inherited-class.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +> var head = ??? +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.volatile.scala +# ^ source.scala +# ^^^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala keyword.operator.scala +> var tail = null +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.volatile.scala +# ^ source.scala +# ^^^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^ source.scala constant.language.scala +> def isEmpty = tail != null +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^ source.scala entity.name.function.declaration +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^^ source.scala +# ^^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^ source.scala constant.language.scala +> def this(head: A) = { this(); this.head = head } +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^^^^ source.scala variable.language.scala +# ^^ source.scala meta.parentheses.scala meta.bracket.scala +# ^^ source.scala +# ^^^^ source.scala variable.language.scala +# ^^^^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> def this(head: A, tail: List[A]) = { this(head); this.tail = tail } +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^^ source.scala +# ^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^^^^ source.scala variable.language.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^^^^ source.scala variable.language.scala +# ^^^^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>case class Lambda(x: String, e: Expr) extends Expr +#^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^^ source.scala storage.type.scala +# ^^ source.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.other.inherited-class.scala +> +>trait Comparable[T <: Comparable[T]] { self: T => +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^^^^ source.scala variable.language.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +> def < (that: T): Boolean +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.function.declaration +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^^ source.scala storage.type.primitive.scala +> def <=(that: T): Boolean = this < that || this == that +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.function.declaration +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.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 +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^ source.scala variable.language.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^^ source.scala +# ^^ source.scala keyword.operator.logical.scala +# ^ source.scala +# ^^^^ source.scala variable.language.scala +# ^ source.scala +# ^^ source.scala keyword.operator.comparison.scala +# ^^^^^^ source.scala +> def > (that: T): Boolean = that < this +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.function.declaration +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.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 +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^ source.scala variable.language.scala +> def >=(that: T): Boolean = that <= this +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.function.declaration +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.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 +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^^ source.scala +# ^^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^ source.scala variable.language.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>class A extends Root { override def x = "A" ; def superA = super.x } +#^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class.declaration +# ^ source.scala +# ^^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.other.inherited-class.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^^^^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.function.declaration +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.begin.scala +# ^ source.scala string.quoted.double.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.end.scala +# ^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.function.declaration +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^^ source.scala variable.language.scala +# ^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> +>object Appl { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> def sum(xs: Int*) = (0 /: xs) ((x, y) => x + y) +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala constant.numeric.scala +# ^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala keyword.operator.scala +# ^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^^ source.scala +# ^ source.scala meta.bracket.scala +> sum(List(1, 2, 3, 4): _*) +#^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala constant.numeric.scala +# ^^ source.scala +# ^ source.scala constant.numeric.scala +# ^^ source.scala +# ^ source.scala constant.numeric.scala +# ^^ source.scala +# ^ source.scala constant.numeric.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.scala +# ^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala meta.bracket.scala +> +> val x : S = new Z +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class +> val y : S = new Z { +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> val x = 5 +#^^^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +> } +#^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> +> def matmul(xss: Array[Array[Double]], yss: Array[Array[Double]]) = { +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^^ source.scala storage.type.primitive.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^^ source.scala storage.type.primitive.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> val zss: Array[Array[Double]] = new Array(xss.length, yss(0).length) +#^^^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^^ source.scala variable.other.declaration.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^^ source.scala storage.type.primitive.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala constant.numeric.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +> var i = 0 +#^^^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.volatile.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +> while (i < xss.length) { +#^^^^^^^^ source.scala +# ^^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> var j = 0 +#^^^^^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.volatile.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +> while (j < yss(0).length) { +#^^^^^^^^^^ source.scala +# ^^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala constant.numeric.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> var acc = 0.0 +#^^^^^^^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.volatile.scala +# ^ source.scala +# ^^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala constant.numeric.scala +> var k = 0 +#^^^^^^^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.volatile.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +> while (k < yss.length) { +#^^^^^^^^^^^^ source.scala +# ^^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> acc = acc + xss(i)(k) * yss(k)(j) +#^^^^^^^^^^^^^^^^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +> k += 1 +#^^^^^^^^^^^^^^^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +> } +#^^^^^^^^^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> zss(i)(j) = acc +#^^^^^^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^ source.scala +> j += 1 +#^^^^^^^^^^^^^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +> } +#^^^^^^^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> i += 1 +#^^^^^^^^^^^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +> } +#^^^^^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> zss +#^^^^^^^^^^^^ source.scala +> } +#^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> +> def whileLoop(cond: => Boolean)(body: => Unit): Unit = +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^^^^ source.scala storage.type.primitive.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^ source.scala storage.type.primitive.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^ source.scala storage.type.primitive.scala +# ^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +> if (cond) { body ; whileLoop(cond)(body) } else {} +#^^^^^^ source.scala +# ^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^^^^^^^^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +# ^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala punctuation.section.block.end.scala +> +> do {x += 2} while (x < 100) +#^^^^ source.scala +# ^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^ source.scala punctuation.section.block.end.scala +# ^ source.scala +# ^^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala constant.numeric.scala +# ^ source.scala meta.bracket.scala +> +> for { i <- 1 until n +#^^^^ source.scala +# ^^^ source.scala keyword.control.flow.scala +# ^^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^^^^^^^^^ source.scala +> j <- 1 until i +#^^^^^^^^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^^^^^^^^^ source.scala +> if isPrime(i+j) +#^^^^^^^^ source.scala +# ^^ source.scala keyword.control.flow.scala +# ^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +> } yield (i, j) +#^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +# ^ source.scala +# ^^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala +# ^ source.scala meta.bracket.scala +> +> (1 until n) +#^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala constant.numeric.scala +# ^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +> .flatMap { +#^^^^^^^^^^^^^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> case i => (1 until i) +#^^^^^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala constant.numeric.scala +# ^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +> .withFilter { j => isPrime(i+j) } +#^^^^^^^^^^^^^^^^^^^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> .map { case j => (i, j) } } +#^^^^^^^^^^^^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> +> try { +#^^^^ source.scala +# ^^^ source.scala keyword.control.exception.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> throw ex; +#^^^^^^^^ source.scala +# ^^^^^ source.scala keyword.control.flow.jump.scala +# ^^^^^ source.scala +> } catch { +#^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +# ^ source.scala +# ^^^^^ source.scala keyword.control.exception.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> case NonFatal(e) => throw e; +#^^^^^^^^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^^^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^^ source.scala keyword.control.flow.jump.scala +# ^^^^ source.scala +> case other => throw other +#^^^^^^^^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^^^^^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^^ source.scala keyword.control.flow.jump.scala +# ^^^^^^^ source.scala +> } +#^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>object Inline { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> val summ = (x: Int,y: Int) => x + y +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^^^^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^ source.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^^^^ source.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>object Monoids { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> implicit object stringMonoid extends Monoid[String] { +#^^^^ source.scala +# ^^^^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^ source.scala entity.other.inherited-class.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^ source.scala storage.type.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> def add(x: String, y: String): String = x.concat(y) +#^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^^ source.scala storage.type.scala +# ^^ source.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^^ source.scala storage.type.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^ source.scala storage.type.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +> def unit: String = "" +#^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.name.function.declaration +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^ source.scala storage.type.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.begin.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.end.scala +> } +#^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>object A1 { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> def sum[A](xs: List[A])(implicit m: Monoid[A]): A = +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +> if (xs.isEmpty) m.unit +#^^^^^^ source.scala +# ^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^^^ source.scala +> else m.add(xs.head, sum(xs.tail)) +#^^^^^^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +> +> implicit def list2ordered[A](x: List[A]) +#^^^^ source.scala +# ^^^^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +> (implicit elem2ordered: A => Ordered[A]): Ordered[List[A]] +#^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^^^ source.scala storage.modifier.other +# ^ source.scala +# ^^^^^^^^^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>object PatternMatching { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> def f(x: Int, y: Int) = x match { +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^^ source.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^ source.scala +# ^^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> case `y` => +#^^^^^^^^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^^^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^ source.scala +> case s @ Seq(_, _, _) => +#^^^^^^^^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^^^^ source.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^ source.scala +> case Seq(first, tail @ _*) => +#^^^^^^^^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^^^^^^^^ source.scala +# ^ source.scala keyword.operator.scala +# ^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +> case first +: tail => +#^^^^^^^^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^^^^^^^ source.scala +# ^ source.scala keyword.operator.arithmetic.scala +# ^ source.scala keyword.operator.scala +# ^^^^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +> case 3 | 5 | 6 => +#^^^^^^^^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^ source.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^ source.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +> case y: Number => y.n +#^^^^^^^^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.class +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^ source.scala +> case Lit(n) => n +#^^^^^^^^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^^^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^ source.scala +> case IsZero(u) => eval(u) == 0 +#^^^^^^^^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala constant.numeric.scala +> case _ => 15 +#^^^^^^^^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^^^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^ source.scala constant.numeric.scala +> } +#^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> +>} +#^ source.scala punctuation.section.block.end.scala +> +>package p1 { +#^^^^^^^ source.scala meta.package.scala keyword.other.import.scala +# ^ source.scala meta.package.scala +# ^^ source.scala meta.package.scala entity.name.package.scala +# ^^^ source.scala meta.package.scala +> package p2 { +#^^^^ source.scala +# ^^^^^^^ source.scala meta.package.scala keyword.other.import.scala +# ^ source.scala meta.package.scala +# ^^ source.scala meta.package.scala entity.name.package.scala +# ^^^ source.scala meta.package.scala +> object Kitten +#^^^^^^^^ source.scala +# ^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.class.declaration +> } +#^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>package a.b { +#^^^^^^^ source.scala meta.package.scala keyword.other.import.scala +# ^ source.scala meta.package.scala +# ^ source.scala meta.package.scala entity.name.package.scala +# ^ source.scala meta.package.scala punctuation.definition.package +# ^ source.scala meta.package.scala entity.name.package.scala +# ^^^ source.scala meta.package.scala +> class A { +#^^^^ source.scala +# ^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> val x = new _root_.b.B +#^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.stable.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^ source.scala entity.name.class +> } +#^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>object HelloWorld { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> def main(args: Array[String]) { println("Hello World") } +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^^ source.scala storage.type.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.begin.scala +# ^^^^^^^^^^^ source.scala string.quoted.double.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.end.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.end.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>object HelloWorld extends App { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^ source.scala entity.other.inherited-class.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> println("Hello World") +#^^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.begin.scala +# ^^^^^^^^^^^ source.scala string.quoted.double.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.end.scala +# ^ source.scala meta.bracket.scala +>} +#^ source.scala punctuation.section.block.end.scala +> +>@SerialVersionUID(12345) +#^ source.scala keyword.operator.scala +# ^^^^^^^^^^^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^^^ source.scala constant.numeric.scala +# ^ source.scala meta.bracket.scala +>object Annotations { +#^^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> @deprecated("Use D", "1.0") class C { } +#^^^^ source.scala +# ^ source.scala keyword.operator.scala +# ^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.begin.scala +# ^^^^^ source.scala string.quoted.double.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.end.scala +# ^^ source.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.begin.scala +# ^^^ source.scala string.quoted.double.scala +# ^ source.scala string.quoted.double.scala punctuation.definition.string.end.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.class.declaration +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +# ^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> @transient @volatile var m: Int +#^^^^ source.scala +# ^ source.scala keyword.operator.scala +# ^^^^^^^^^^ source.scala +# ^ source.scala keyword.operator.scala +# ^^^^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.volatile.scala +# ^ source.scala +# ^ source.scala variable.other.declaration.scala +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^^^^^^^^ source.scala +> +> def f(x: Option[Int]) = (x: @unchecked) match { +#^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.function.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^^^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^^^ source.scala storage.type.primitive.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala variable.parameter.scala +# ^ source.scala meta.colon.scala +# ^ source.scala +# ^ source.scala keyword.operator.scala +# ^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> case Some(y) => y +#^^^^^^^^ source.scala +# ^^^^ source.scala keyword.control.flow.scala +# ^ source.scala +# ^^^^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala keyword.operator.comparison.scala +# ^ source.scala keyword.operator.comparison.scala +# ^^^ source.scala +> } +#^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> +> trait Function0[@specialized(Unit, Int, Double) T] { +#^^^^ source.scala +# ^^^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^^^^^ source.scala entity.name.class.declaration +# ^ source.scala meta.bracket.scala +# ^ source.scala keyword.operator.scala +# ^^^^^^^^^^^ source.scala +# ^ source.scala meta.bracket.scala +# ^^^^ source.scala storage.type.primitive.scala +# ^^ source.scala +# ^^^ source.scala storage.type.primitive.scala +# ^^ source.scala +# ^^^^^^ source.scala storage.type.primitive.scala +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala entity.name.class +# ^ source.scala meta.bracket.scala +# ^ source.scala +# ^ source.scala punctuation.section.block.begin.scala +> def apply: T +#^^^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^^^^^ source.scala entity.name.function.declaration +# ^ source.scala keyword.operator.scala +# ^ source.scala +# ^ source.scala entity.name.class +> } +#^^^^ source.scala +# ^ source.scala punctuation.section.block.end.scala +> +> @UserDefinedUpperCase def x +#^^^^ source.scala +# ^ source.scala keyword.operator.scala +# ^^^^^^^^^^^^^^^^^^^^ source.scala entity.name.class +# ^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.function.declaration +> @userDefinedLowerCase def y +#^^^^ source.scala +# ^ source.scala keyword.operator.scala +# ^^^^^^^^^^^^^^^^^^^^^ source.scala +# ^^^ source.scala keyword.declaration.scala +# ^ source.scala +# ^ source.scala entity.name.function.declaration +>} +#^ source.scala punctuation.section.block.end.scala \ No newline at end of file diff --git a/tests/unit/basic.test.scala b/tests/unit/basic.test.scala new file mode 100644 index 0000000..1cbb149 --- /dev/null +++ b/tests/unit/basic.test.scala @@ -0,0 +1,50 @@ +// SYNTAX TEST "source.scala" + + +class Stack[A] { +// <----- keyword.declaration.scala +// ^ - keyword.declaration.scala 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 +// ^^^ keyword.declaration.volatile.scala +// ^^^^^^^^ variable.other.declaration.scala +// ^ keyword.operator.scala +// ^^^^ entity.name.class +// ^ meta.bracket.scala +// ^ entity.name.class +// ^ meta.bracket.scala +// ^ keyword.operator.comparison.scala +// ^^^ constant.language.scala + def push(x: A) { elements = x :: elements } +// ^^^ keyword.declaration.scala +// ^^^^ entity.name.function.declaration +// ^ meta.bracket.scala +// ^ variable.parameter.scala +// ^ meta.colon.scala +// ^ entity.name.class +// ^ meta.bracket.scala +// ^ punctuation.section.block.begin.scala +// ^^^^^^^^ source.scala +// ^ keyword.operator.comparison.scala +// ^ source.scala +// ^^ keyword.operator.scala +// ^^^^^^^^ source.scala +// ^ punctuation.section.block.end.scala + def peek: A = elements.head + def pop(): A = { + val currentTop = peek +// ^^^ keyword.declaration.stable.scala +// ^^^^^^^^^^ variable.other.declaration.scala +// ^ keyword.operator.comparison.scala +// ^^^^ source.scala + elements = elements.tail + currentTop + } +//^ punctuation.section.block.end.scala +} +// <- punctuation.section.block.end.scala \ No newline at end of file diff --git a/tests/unit/lexical.test.scala b/tests/unit/lexical.test.scala new file mode 100644 index 0000000..2b3ccce --- /dev/null +++ b/tests/unit/lexical.test.scala @@ -0,0 +1,172 @@ +// SYNTAX TEST "source.scala" + +object ExampleIdentifiers { + val x = 3 +// ^ variable.other.declaration.scala + val Object = 3 + val maxIndex = 3 +// ^^^^^^^^ variable.other.declaration.scala + val p2p = 3 +// ^^^ variable.other.declaration.scala + val empty_? = 3 +// ^^^^^^^ variable.other.declaration.scala + val + = 3 +// ^ variable.other.declaration.scala + val `yield` = 3 +// ^^^^^^^ variable.other.declaration.scala + val αρετη = 3 + val _y = 3 +// ^^ variable.other.declaration.scala + val dot_product_* = 3 +// ^^^^^^^^^^^^^ variable.other.declaration.scala + val __system = 3 +// ^^^^^^^^ variable.other.declaration.scala + val _MAX_LEN_ = 3 +// ^^^^^^^^^ variable.other.declaration.scala +} + +object IntegerLiterals { + (0, 21, 0xFFFFFFFF, -42L) +// ^ constant.numeric.scala +// ^^ constant.numeric.scala +// ^^^^^^^^^^ constant.numeric.scala +// ^ keyword.operator.arithmetic.scala +// ^^^ constant.numeric.scala +} + +object FloatingPointLiterals { + ( 0.0, 1e30f, 3.14159f, 1.0e-100, .1 ) +// ^^^ constant.numeric.scala +// ^^^^^^^^ constant.numeric.scala +// ^^^^^^^^ constant.numeric.scala +// ^ constant.numeric.scala +} + +object Boolean { + (true, false) +// ^^^^ constant.language.scala +// ^^^^^ constant.language.scala +} + +object CharacterLiterals { + ('a', '\u0041', '\n', '\t') +// ^ punctuation.definition.character.begin.scala +// ^^^ constant.character.literal.scala +// ^ punctuation.definition.character.end.scala +// ^^^^^^^^ constant.character.literal.scala +// ^^^^^^ constant.character.escape.scala +// ^^ constant.character.escape.scala +// ^^ constant.character.escape.scala +} + +object StringLiterals { + ("Hello,\nWorld!", "This string contains a \" character.") +// ^ punctuation.definition.string.begin.scala +// ^^^^^^^^^^^^^^^^ string.quoted.double.scala +// ^^ constant.character.escape.scala +// ^ punctuation.definition.string.end.scala +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double.scala + """the present string +// ^^^ punctuation.definition.string.begin.scala +// ^^^^^^^^^^^^^^^^^^^^^ string.quoted.triple.scala + spans three +// ^^^^^^^^^^^ string.quoted.triple.scala + lines.""" +// ^^^^^^^^^ string.quoted.triple.scala +// ^^^ punctuation.definition.string.end.scala + + """the present string + |spans three + |lines.""".stripMargin + + + val escapeSequences = "\b\t\n\f\r\"\'\\" + // ^^^^^^^^^^^^^^^^^^ string.quoted.double.scala + // ^^^^^^^^^^^^^^^^ constant.character.escape.scala + + s"$x plain ${val x = y}" +//^ keyword.interpolation.scala +// ^ punctuation.definition.string.begin.scala +// ^ punctuation.definition.template-expression.begin.scala +// ^ - string.quoted.double.interpolated.scala string.quoted.double.scala +// ^^^^^^^ string.quoted.double.interpolated.scala +// ^^ punctuation.definition.template-expression.begin.scala +// ^^^ keyword.declaration.stable.scala +// ^^^^^^^^^ - string.quoted.double.interpolated.scala string.quoted.double.scala +// ^ punctuation.definition.template-expression.scala punctuation.definition.template-expression.end.scala +// ^ string.quoted.double.interpolated.scala punctuation.definition.string.end.scala + + custom"$x plain ${val x = y}" +//^^^^^^ keyword.interpolation.scala +// ^ punctuation.definition.string.begin.scala +// ^ punctuation.definition.template-expression.begin.scala +// ^ - string.quoted.double.interpolated.scala string.quoted.double.scala +// ^^^^^^^ string.quoted.double.interpolated.scala +// ^^ punctuation.definition.template-expression.begin.scala +// ^^^ keyword.declaration.stable.scala +// ^^^^^^^^^ - string.quoted.double.interpolated.scala string.quoted.double.scala +// ^ punctuation.definition.template-expression.scala punctuation.definition.template-expression.end.scala +// ^ string.quoted.double.interpolated.scala punctuation.definition.string.end.scala + + s"""$x plain ${val x = y}""" +//^ keyword.interpolation.scala +// ^^^ punctuation.definition.string.begin.scala +// ^ punctuation.definition.template-expression.begin.scala +// ^ - string.quoted.triple.interpolated.scala string.quoted.triple.scala +// ^^^^^^^ string.quoted.triple.interpolated.scala +// ^^ punctuation.definition.template-expression.begin.scala +// ^^^ keyword.declaration.stable.scala +// ^^^^^^^^^ - string.quoted.triple.interpolated.scala string.quoted.triple.scala +// ^ punctuation.definition.template-expression.scala punctuation.definition.template-expression.end.scala +// ^^^ string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala + custom"""$x plain ${val x = y}""" +//^^^^^^ keyword.interpolation.scala +// ^^^ punctuation.definition.string.begin.scala +// ^ punctuation.definition.template-expression.begin.scala +// ^ - string.quoted.triple.interpolated.scala string.quoted.triple.scala +// ^^^^^^^ string.quoted.triple.interpolated.scala +// ^^ punctuation.definition.template-expression.begin.scala +// ^^^ keyword.declaration.stable.scala +// ^^^^^^^^^ - string.quoted.triple.interpolated.scala string.quoted.triple.scala +// ^ punctuation.definition.template-expression.scala punctuation.definition.template-expression.end.scala +// ^^^ string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala +} + +object Symbols { + ('x, 'X, 'αρετη, '=, '+ ) +// ^^ constant.other.symbol.scala +// ^^ constant.other.symbol.scala +// ^^^^^^ constant.other.symbol.scala +} + + // single line comment +// ^^ punctuation.definition.comment.scala +// ^^^^^^^^^^^^^^^^^^^^^^ comment.line.double-slash.scala + + /* +// ^^ punctuation.definition.comment.scala + multiline comment*/ +// ^^^^^^^^^^^^^^^^^^^ comment.block.scala + /** + * Scaladoc comment + * @scaladoc @param + */ + + /* nested /* multi-line */ comment */ + + +object Xml { + val b = +// ^ punctuation.definition.tag.xml +// ^^^^ entity.name.tag.localname.xml +// ^ punctuation.definition.tag.xml +// ^^^^^^ meta.tag.xml + The Scala Language Specification +// ^^^ entity.name.class +// ^^^^^ entity.name.class +// ^^^^^^^^ entity.name.class +// ^^^^^^^^^^^^^ entity.name.class + {scalaBook.version} + {scalaBook.authors.mkList("", ", ", "")} + +} diff --git a/yarn.lock b/yarn.lock index ec4debc..7357bb6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -161,7 +161,7 @@ combined-stream@~0.0.4: dependencies: delayed-stream "0.0.5" -commander@^2.8.1: +commander@^2.20.0, commander@^2.8.1: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== @@ -223,6 +223,11 @@ diff@^3.1.0: resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +diff@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" + integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== + dom-serializer@0, dom-serializer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" @@ -371,6 +376,18 @@ glob@^7.0.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -552,6 +569,11 @@ mute-stream@~0.0.4: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +nan@^2.12.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + node-uuid@~1.4.0: version "1.4.8" resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" @@ -593,6 +615,13 @@ once@^1.3.0: dependencies: wrappy "1" +oniguruma@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/oniguruma/-/oniguruma-7.1.0.tgz#106ddf7eb42507d0442ac68b187c4f7fdf052c83" + integrity sha512-mV+6HcDNQ38vM8HVKM+MJyXO4EtSigwIZhq023A4rA8Am4dMlGhUkPwudDykExYR45oLrssR/Ep7PZCQ1OM3pA== + dependencies: + nan "^2.12.1" + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -890,6 +919,24 @@ vsce@^1.59.0: yauzl "^2.3.1" yazl "^2.2.2" +vscode-textmate@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-4.1.1.tgz#857e836fbc13a376ec624242437e1747d79610a9" + integrity sha512-xBjq9LH6fMhWDhIVkbKlB1JeCu6lT3FI/QKN24Xi4RKPBUm16IhHTqs6Q6SUGewkNsFZGkb1tJdZsuMnlmVpgw== + dependencies: + oniguruma "^7.0.0" + +vscode-tmgrammar-test@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/vscode-tmgrammar-test/-/vscode-tmgrammar-test-0.0.5.tgz#1a8dea568519a56bda35b32d3bab56494481c904" + integrity sha512-iK5OEahJ9RTWmscD16f7z/TAH32iW8GDvHFIktlySP8XJM/n6Pi2GOwayDTo/teF70cEW0uhIQfhGuBQ08lfpQ== + dependencies: + chalk "^2.4.2" + commander "^2.20.0" + diff "^4.0.1" + glob "^7.1.4" + vscode-textmate "^4.1.1" + vso-node-api@6.1.2-preview: version "6.1.2-preview" resolved "https://registry.yarnpkg.com/vso-node-api/-/vso-node-api-6.1.2-preview.tgz#aab3546df2451ecd894e071bb99b5df19c5fa78f"