Commit a090d0630be6f15353356f560305dcfbc923a77e

Julien Richard-Foy 2022-07-26T19:21:09

Scala: Updated keywords to support Scala 3 (#3506)

diff --git a/components/prism-scala.js b/components/prism-scala.js
index 40b96fa..9ba4649 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 1f3db0b..6d7220d 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 9e3cfb4..859dac0 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.