From 8f2895de203617f246ac2cbf40ba32717544adb7 Mon Sep 17 00:00:00 2001 From: Nicolas Stucki Date: Mon, 6 Sep 2021 11:08:23 +0200 Subject: [PATCH] enh(scala) add Scala 3 end soft keyword Add Scala 3 end of definition or expression. Simplified verion of https://github.com/scala/vscode-scala-syntax/blob/main/src/typescript/Scala.tmLanguage.ts#L599-L634. Here we only need one kind of keyword. --- CHANGES.md | 1 + src/languages/scala.js | 6 +++++ test/markup/scala/end.expect.txt | 41 ++++++++++++++++++++++++++++++++ test/markup/scala/end.txt | 41 ++++++++++++++++++++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 test/markup/scala/end.expect.txt create mode 100644 test/markup/scala/end.txt diff --git a/CHANGES.md b/CHANGES.md index 552c933b6c..4e7d682b33 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -17,6 +17,7 @@ Grammars: - enh(java) add support for Java Text Block (#3322) [Teletha][] - enh(scala) add missing `do` and `then` keyword (#3323) [Nicolas Stucki][] - enh(scala) add Scala 3 `extension` soft keyword (#3326) [Nicolas Stucki][] +- enh(scala) add Scala 3 `end` soft keyword (#3327) [Nicolas Stucki][] [Austin Schick]: https://github.com/austin-schick [Josh Goebel]: https://github.com/joshgoebel diff --git a/src/languages/scala.js b/src/languages/scala.js index 058321ca92..0468648869 100644 --- a/src/languages/scala.js +++ b/src/languages/scala.js @@ -122,6 +122,11 @@ export default function(hljs) { begin: /(?<=^\s*)extension(?=\s+[\[\(])/ }; + const END = { + className: 'keyword', + begin: /(?<=^\s*)end(\s+extension|\b)/ + }; + return { name: 'Scala', keywords: { @@ -138,6 +143,7 @@ export default function(hljs) { CLASS, hljs.C_NUMBER_MODE, EXTENSION, + END, ANNOTATION ] }; diff --git a/test/markup/scala/end.expect.txt b/test/markup/scala/end.expect.txt new file mode 100644 index 0000000000..a608a1a806 --- /dev/null +++ b/test/markup/scala/end.expect.txt @@ -0,0 +1,41 @@ +def foo = + if (true) + () + else + () + end if + + while true do + () + end while + + for x <- xs do + () + end for + + x match + case _ => + end match +end foo + +def bar = + new Foo: + def f = () + end new +end + +val baz = + () +end val + +var baz2 = + () +end var + +extension (x: Int) + def f = 1 + def f = 2 +end extension + +class Foo: +end Foo diff --git a/test/markup/scala/end.txt b/test/markup/scala/end.txt new file mode 100644 index 0000000000..fbf16d363b --- /dev/null +++ b/test/markup/scala/end.txt @@ -0,0 +1,41 @@ +def foo = + if (true) + () + else + () + end if + + while true do + () + end while + + for x <- xs do + () + end for + + x match + case _ => + end match +end foo + +def bar = + new Foo: + def f = () + end new +end + +val baz = + () +end val + +var baz2 = + () +end var + +extension (x: Int) + def f = 1 + def f = 2 +end extension + +class Foo: +end Foo