From a090d0630be6f15353356f560305dcfbc923a77e Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Tue, 26 Jul 2022 19:21:09 +0200 Subject: [PATCH] Scala: Updated keywords to support Scala 3 (#3506) --- components/prism-scala.js | 2 +- components/prism-scala.min.js | 2 +- tests/languages/scala/keyword_feature.test | 90 ++++++++++++++++++---- 3 files changed, 75 insertions(+), 19 deletions(-) diff --git a/components/prism-scala.js b/components/prism-scala.js index 40b96fa15c..9ba4649270 100644 --- a/components/prism-scala.js +++ b/components/prism-scala.js @@ -8,7 +8,7 @@ Prism.languages.scala = Prism.languages.extend('java', { pattern: /("|')(?:\\.|(?!\1)[^\\\r\n])*\1/, greedy: true }, - 'keyword': /<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/, + 'keyword': /<-|=>|\b(?:abstract|case|catch|class|def|derives|do|else|enum|extends|extension|final|finally|for|forSome|given|if|implicit|import|infix|inline|lazy|match|new|null|object|opaque|open|override|package|private|protected|return|sealed|self|super|this|throw|trait|transparent|try|type|using|val|var|while|with|yield)\b/, 'number': /\b0x(?:[\da-f]*\.)?[\da-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e\d+)?[dfl]?/i, 'builtin': /\b(?:Any|AnyRef|AnyVal|Boolean|Byte|Char|Double|Float|Int|Long|Nothing|Short|String|Unit)\b/, 'symbol': /'[^\d\s\\]\w*/ diff --git a/components/prism-scala.min.js b/components/prism-scala.min.js index 1f3db0b8bd..6d7220d64f 100644 --- a/components/prism-scala.min.js +++ b/components/prism-scala.min.js @@ -1 +1 @@ -Prism.languages.scala=Prism.languages.extend("java",{"triple-quoted-string":{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/,number:/\b0x(?:[\da-f]*\.)?[\da-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e\d+)?[dfl]?/i,builtin:/\b(?:Any|AnyRef|AnyVal|Boolean|Byte|Char|Double|Float|Int|Long|Nothing|Short|String|Unit)\b/,symbol:/'[^\d\s\\]\w*/}),Prism.languages.insertBefore("scala","triple-quoted-string",{"string-interpolation":{pattern:/\b[a-z]\w*(?:"""(?:[^$]|\$(?:[^{]|\{(?:[^{}]|\{[^{}]*\})*\}))*?"""|"(?:[^$"\r\n]|\$(?:[^{]|\{(?:[^{}]|\{[^{}]*\})*\}))*")/i,greedy:!0,inside:{id:{pattern:/^\w+/,greedy:!0,alias:"function"},escape:{pattern:/\\\$"|\$[$"]/,greedy:!0,alias:"symbol"},interpolation:{pattern:/\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,greedy:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:Prism.languages.scala}}},string:/[\s\S]+/}}}),delete Prism.languages.scala["class-name"],delete Prism.languages.scala.function; \ No newline at end of file +Prism.languages.scala=Prism.languages.extend("java",{"triple-quoted-string":{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/<-|=>|\b(?:abstract|case|catch|class|def|derives|do|else|enum|extends|extension|final|finally|for|forSome|given|if|implicit|import|infix|inline|lazy|match|new|null|object|opaque|open|override|package|private|protected|return|sealed|self|super|this|throw|trait|transparent|try|type|using|val|var|while|with|yield)\b/,number:/\b0x(?:[\da-f]*\.)?[\da-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e\d+)?[dfl]?/i,builtin:/\b(?:Any|AnyRef|AnyVal|Boolean|Byte|Char|Double|Float|Int|Long|Nothing|Short|String|Unit)\b/,symbol:/'[^\d\s\\]\w*/}),Prism.languages.insertBefore("scala","triple-quoted-string",{"string-interpolation":{pattern:/\b[a-z]\w*(?:"""(?:[^$]|\$(?:[^{]|\{(?:[^{}]|\{[^{}]*\})*\}))*?"""|"(?:[^$"\r\n]|\$(?:[^{]|\{(?:[^{}]|\{[^{}]*\})*\}))*")/i,greedy:!0,inside:{id:{pattern:/^\w+/,greedy:!0,alias:"function"},escape:{pattern:/\\\$"|\$[$"]/,greedy:!0,alias:"symbol"},interpolation:{pattern:/\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,greedy:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:Prism.languages.scala}}},string:/[\s\S]+/}}}),delete Prism.languages.scala["class-name"],delete Prism.languages.scala.function; \ No newline at end of file diff --git a/tests/languages/scala/keyword_feature.test b/tests/languages/scala/keyword_feature.test index 9e3cfb4d1b..859dac03b9 100644 --- a/tests/languages/scala/keyword_feature.test +++ b/tests/languages/scala/keyword_feature.test @@ -1,15 +1,19 @@ <- => abstract case catch -class def do else -extends final finally -for forSome if -implicit import; lazy +class def derives do +else enum extends extension +final finally +for forSome given if +implicit import; +infix inline lazy match new null object +opaque open override package private protected return sealed self super this throw -trait try type val +trait transparent try +type using val var while with yield ---------------------------------------------------- @@ -17,19 +21,71 @@ var while with yield [ ["keyword", "<-"], ["keyword", "=>"], - ["keyword", "abstract"], ["keyword", "case"], ["keyword", "catch"], - ["keyword", "class"], ["keyword", "def"], ["keyword", "do"], ["keyword", "else"], - ["keyword", "extends"], ["keyword", "final"], ["keyword", "finally"], - ["keyword", "for"], ["keyword", "forSome"], ["keyword", "if"], - ["keyword", "implicit"], ["keyword", "import"], ["punctuation", ";"], ["keyword", "lazy"], - ["keyword", "match"], ["keyword", "new"], ["keyword", "null"], ["keyword", "object"], - ["keyword", "override"], ["keyword", "package"], ["keyword", "private"], - ["keyword", "protected"], ["keyword", "return"], ["keyword", "sealed"], - ["keyword", "self"], ["keyword", "super"], ["keyword", "this"], ["keyword", "throw"], - ["keyword", "trait"], ["keyword", "try"], ["keyword", "type"], ["keyword", "val"], - ["keyword", "var"], ["keyword", "while"], ["keyword", "with"], ["keyword", "yield"] + ["keyword", "abstract"], + ["keyword", "case"], + ["keyword", "catch"], + + ["keyword", "class"], + ["keyword", "def"], + ["keyword", "derives"], + ["keyword", "do"], + + ["keyword", "else"], + ["keyword", "enum"], + ["keyword", "extends"], + ["keyword", "extension"], + + ["keyword", "final"], + ["keyword", "finally"], + + ["keyword", "for"], + ["keyword", "forSome"], + ["keyword", "given"], + ["keyword", "if"], + + ["keyword", "implicit"], + ["keyword", "import"], + ["punctuation", ";"], + + ["keyword", "infix"], + ["keyword", "inline"], + ["keyword", "lazy"], + + ["keyword", "match"], + ["keyword", "new"], + ["keyword", "null"], + ["keyword", "object"], + + ["keyword", "opaque"], + ["keyword", "open"], + + ["namespace", ["override"]], + ["keyword", "package"], + ["keyword", "private"], + + ["keyword", "protected"], + ["keyword", "return"], + ["keyword", "sealed"], + + ["keyword", "self"], + ["keyword", "super"], + ["keyword", "this"], + ["keyword", "throw"], + + ["keyword", "trait"], + ["keyword", "transparent"], + ["keyword", "try"], + + ["keyword", "type"], + ["keyword", "using"], + ["keyword", "val"], + + ["keyword", "var"], + ["keyword", "while"], + ["keyword", "with"], + ["keyword", "yield"] ] ---------------------------------------------------- -Checks for keywords. \ No newline at end of file +Checks for keywords.