Commit 15cb3b78ff52345ab96d4c7356eb81b2c55778bc

Michael Schmidt 2021-10-05T21:19:53

Idris: Fixed import statements (#3115)

diff --git a/components/prism-idris.js b/components/prism-idris.js
index 6c2dfec..3717ea0 100644
--- a/components/prism-idris.js
+++ b/components/prism-idris.js
@@ -3,11 +3,17 @@ Prism.languages.idris = Prism.languages.extend('haskell', {
 		pattern: /(?:(?:--|\|\|\|).*$|\{-[\s\S]*?-\})/m,
 	},
 	'keyword': /\b(?:Type|case|class|codata|constructor|corecord|data|do|dsl|else|export|if|implementation|implicit|import|impossible|in|infix|infixl|infixr|instance|interface|let|module|mutual|namespace|of|parameters|partial|postulate|private|proof|public|quoteGoal|record|rewrite|syntax|then|total|using|where|with)\b/,
-	'import-statement': {
-		pattern: /(^\s*)import\s+(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*/m,
-		lookbehind: true
-	},
 	'builtin': undefined
 });
 
+Prism.languages.insertBefore('idris', 'keyword', {
+	'import-statement': {
+		pattern: /(^\s*import\s+)(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*/m,
+		lookbehind: true,
+		inside: {
+			'punctuation': /\./
+		}
+	}
+});
+
 Prism.languages.idr = Prism.languages.idris;
diff --git a/components/prism-idris.min.js b/components/prism-idris.min.js
index 1de39a3..5e2bd72 100644
--- a/components/prism-idris.min.js
+++ b/components/prism-idris.min.js
@@ -1 +1 @@
-Prism.languages.idris=Prism.languages.extend("haskell",{comment:{pattern:/(?:(?:--|\|\|\|).*$|\{-[\s\S]*?-\})/m},keyword:/\b(?:Type|case|class|codata|constructor|corecord|data|do|dsl|else|export|if|implementation|implicit|import|impossible|in|infix|infixl|infixr|instance|interface|let|module|mutual|namespace|of|parameters|partial|postulate|private|proof|public|quoteGoal|record|rewrite|syntax|then|total|using|where|with)\b/,"import-statement":{pattern:/(^\s*)import\s+(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*/m,lookbehind:!0},builtin:void 0}),Prism.languages.idr=Prism.languages.idris;
\ No newline at end of file
+Prism.languages.idris=Prism.languages.extend("haskell",{comment:{pattern:/(?:(?:--|\|\|\|).*$|\{-[\s\S]*?-\})/m},keyword:/\b(?:Type|case|class|codata|constructor|corecord|data|do|dsl|else|export|if|implementation|implicit|import|impossible|in|infix|infixl|infixr|instance|interface|let|module|mutual|namespace|of|parameters|partial|postulate|private|proof|public|quoteGoal|record|rewrite|syntax|then|total|using|where|with)\b/,builtin:void 0}),Prism.languages.insertBefore("idris","keyword",{"import-statement":{pattern:/(^\s*import\s+)(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*/m,lookbehind:!0,inside:{punctuation:/\./}}}),Prism.languages.idr=Prism.languages.idris;
\ No newline at end of file
diff --git a/tests/languages/idris/import_statement_feature.test b/tests/languages/idris/import_statement_feature.test
index 5554b07..8652944 100644
--- a/tests/languages/idris/import_statement_feature.test
+++ b/tests/languages/idris/import_statement_feature.test
@@ -1,10 +1,18 @@
 import Foo
+import Maths.NumOps
 
 ----------------------------------------------------
 
 [
 	["keyword", "import"],
-	["constant", ["Foo"]]
+	["import-statement", ["Foo"]],
+
+	["keyword", "import"],
+	["import-statement", [
+		"Maths",
+		["punctuation", "."],
+		"NumOps"
+	]]
 ]
 
 ----------------------------------------------------
diff --git a/tests/languages/idris/keyword_feature.test b/tests/languages/idris/keyword_feature.test
index 6a3c0f7..476bc8d 100644
--- a/tests/languages/idris/keyword_feature.test
+++ b/tests/languages/idris/keyword_feature.test
@@ -1,17 +1,93 @@
-case data do else if implementation
-in infixl infixr interface let
-module of then where
+Type
+case
+class
+codata
+constructor
+corecord
+data
+do
+dsl
+else
+export
+if
+implementation
+implicit
+import
+impossible
+in
+infix
+infixl
+infixr
+instance
+interface
+let
+module
+mutual
+namespace
+of
+parameters
+partial
+postulate
+private
+proof
+public
+quoteGoal
+record
+rewrite
+syntax
+then
+total
+using
+where
+with
 
 ----------------------------------------------------
 
 [
-	["keyword", "case"], ["keyword", "data"], ["keyword", "do"],
-        ["keyword", "else"], ["keyword", "if"], ["keyword", "implementation"],
-        ["keyword", "in"], ["keyword", "infixl"], ["keyword", "infixr"],
-        ["keyword", "interface"], ["keyword", "let"], ["keyword", "module"],
-        ["keyword", "of"], ["keyword", "then"], ["keyword", "where"]
+	["keyword", "Type"],
+	["keyword", "case"],
+	["keyword", "class"],
+	["keyword", "codata"],
+	["keyword", "constructor"],
+	["keyword", "corecord"],
+	["keyword", "data"],
+	["keyword", "do"],
+	["keyword", "dsl"],
+	["keyword", "else"],
+	["keyword", "export"],
+	["keyword", "if"],
+	["keyword", "implementation"],
+	["keyword", "implicit"],
+	["keyword", "import"],
+	["keyword", "impossible"],
+	["keyword", "in"],
+	["keyword", "infix"],
+	["keyword", "infixl"],
+	["keyword", "infixr"],
+	["keyword", "instance"],
+	["keyword", "interface"],
+	["keyword", "let"],
+	["keyword", "module"],
+	["keyword", "mutual"],
+	["keyword", "namespace"],
+	["keyword", "of"],
+	["keyword", "parameters"],
+	["keyword", "partial"],
+	["keyword", "postulate"],
+	["keyword", "private"],
+	["keyword", "proof"],
+	["keyword", "public"],
+	["keyword", "quoteGoal"],
+	["keyword", "record"],
+	["keyword", "rewrite"],
+	["keyword", "syntax"],
+	["keyword", "then"],
+	["keyword", "total"],
+	["keyword", "using"],
+	["keyword", "where"],
+	["keyword", "with"]
 ]
 
 ----------------------------------------------------
 
-Checks for some keywords.
\ No newline at end of file
+Checks for some keywords.