aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorBruno BELANYI <bruno@belanyi.fr>2022-06-14 17:30:49 +0200
committerStephan Seitz <stephan.seitz@fau.de>2022-06-14 22:34:03 +0200
commit6e3f888dc7e5ea78e121c9ee41d365f339957824 (patch)
tree44f3c02804d98f3f2a7bf3916fb93cfee52ba878 /tests
parentfeat(tiger): initial support (diff)
downloadnvim-treesitter-6e3f888dc7e5ea78e121c9ee41d365f339957824.tar
nvim-treesitter-6e3f888dc7e5ea78e121c9ee41d365f339957824.tar.gz
nvim-treesitter-6e3f888dc7e5ea78e121c9ee41d365f339957824.tar.bz2
nvim-treesitter-6e3f888dc7e5ea78e121c9ee41d365f339957824.tar.lz
nvim-treesitter-6e3f888dc7e5ea78e121c9ee41d365f339957824.tar.xz
nvim-treesitter-6e3f888dc7e5ea78e121c9ee41d365f339957824.tar.zst
nvim-treesitter-6e3f888dc7e5ea78e121c9ee41d365f339957824.zip
test(tiger): import upstream tests
Diffstat (limited to 'tests')
-rw-r--r--tests/indent/tiger/classes.tig14
-rw-r--r--tests/indent/tiger/control-flow.tig22
-rw-r--r--tests/indent/tiger/functions.tig14
-rw-r--r--tests/indent/tiger/groupings.tig10
-rw-r--r--tests/indent/tiger/values-and-expressions.tig30
-rw-r--r--tests/indent/tiger_spec.lua138
-rw-r--r--tests/query/highlights/tiger/built-ins.tig43
-rw-r--r--tests/query/highlights/tiger/comment.tig5
-rw-r--r--tests/query/highlights/tiger/functions.tig8
-rw-r--r--tests/query/highlights/tiger/identifiers.tig29
-rw-r--r--tests/query/highlights/tiger/imports.tig3
-rw-r--r--tests/query/highlights/tiger/keywords.tig41
-rw-r--r--tests/query/highlights/tiger/literals.tig8
-rw-r--r--tests/query/highlights/tiger/meta-variables.tig13
-rw-r--r--tests/query/highlights/tiger/object-oriented.tig28
-rw-r--r--tests/query/highlights/tiger/operators.tig48
16 files changed, 454 insertions, 0 deletions
diff --git a/tests/indent/tiger/classes.tig b/tests/indent/tiger/classes.tig
new file mode 100644
index 000000000..542a40ebe
--- /dev/null
+++ b/tests/indent/tiger/classes.tig
@@ -0,0 +1,14 @@
+class A {
+ var a := 12
+
+ method method() : int = 1
+}
+
+type B = class extends A {
+ var b := 27
+
+ method another_method() = (
+ print("called");
+ self.b + self.method()
+ )
+}
diff --git a/tests/indent/tiger/control-flow.tig b/tests/indent/tiger/control-flow.tig
new file mode 100644
index 000000000..abbadfab9
--- /dev/null
+++ b/tests/indent/tiger/control-flow.tig
@@ -0,0 +1,22 @@
+(
+ if
+ 12
+ then
+ 27
+ else
+ 42
+ ;
+
+ for
+ i := 12
+ to
+ 27
+ do
+ 42
+ ;
+
+ while
+ 0
+ do
+ break
+)
diff --git a/tests/indent/tiger/functions.tig b/tests/indent/tiger/functions.tig
new file mode 100644
index 000000000..22ce051af
--- /dev/null
+++ b/tests/indent/tiger/functions.tig
@@ -0,0 +1,14 @@
+primitive long_parameter_list(
+ a: int,
+ b: string,
+ c: type
+)
+
+function f() =
+ (
+ long_parameter_list(
+ 1,
+ "2",
+ nil
+ )
+ )
diff --git a/tests/indent/tiger/groupings.tig b/tests/indent/tiger/groupings.tig
new file mode 100644
index 000000000..870e0da48
--- /dev/null
+++ b/tests/indent/tiger/groupings.tig
@@ -0,0 +1,10 @@
+let
+ var a := 42
+in
+ (
+ 12;
+ 27;
+ 42
+ );
+ a
+end
diff --git a/tests/indent/tiger/values-and-expressions.tig b/tests/indent/tiger/values-and-expressions.tig
new file mode 100644
index 000000000..5131c3041
--- /dev/null
+++ b/tests/indent/tiger/values-and-expressions.tig
@@ -0,0 +1,30 @@
+let
+ type array_of_int = array of int
+
+ type record = {
+ a: int,
+ b: string,
+ c: type
+ }
+
+ var a :=
+ "a string"
+in
+ array[
+ 12
+ ]
+ ;
+
+ array_of_int[
+ 27
+ ]
+ of
+ 42
+ ;
+
+ record {
+ a = 1,
+ b = "2",
+ c = nil
+ }
+end
diff --git a/tests/indent/tiger_spec.lua b/tests/indent/tiger_spec.lua
new file mode 100644
index 000000000..f435b4c03
--- /dev/null
+++ b/tests/indent/tiger_spec.lua
@@ -0,0 +1,138 @@
+local Runner = require("tests.indent.common").Runner
+local XFAIL = require("tests.indent.common").XFAIL
+
+local runner = Runner:new(it, "tests/indent/tiger", {
+ tabstop = 2,
+ shiftwidth = 2,
+ softtabstop = 0,
+ expandtab = true,
+})
+
+describe("indent Tiger:", function()
+ describe("whole file:", function()
+ runner:whole_file "."
+ end)
+
+ describe("new line:", function()
+ runner:new_line(
+ "classes.tig",
+ { on_line = 1, text = "var a := 0", indent = 2 },
+ "class declaration beginning",
+ XFAIL
+ )
+ runner:new_line("classes.tig", { on_line = 2, text = "var a := 0", indent = 2 }, "class declaration after field")
+ runner:new_line("classes.tig", { on_line = 4, text = "var a := 0", indent = 2 }, "class declaration after method")
+ runner:new_line("classes.tig", { on_line = 5, text = "var a := 0", indent = 0 }, "after class declaration")
+ runner:new_line("classes.tig", { on_line = 7, text = "var a := 0", indent = 2 }, "class type beginning", XFAIL)
+ runner:new_line("classes.tig", { on_line = 8, text = "var a := 0", indent = 2 }, "class type after field")
+ runner:new_line("classes.tig", { on_line = 10, text = "self.a := 0", indent = 4 }, "inside method", XFAIL)
+ runner:new_line("classes.tig", { on_line = 13, text = "var a := 0", indent = 2 }, "class type after method")
+ runner:new_line("classes.tig", { on_line = 14, text = "var a := 0", indent = 0 }, "after class type")
+
+ runner:new_line("control-flow.tig", { on_line = 2, text = "true", indent = 4 }, "if condition", XFAIL)
+ runner:new_line("control-flow.tig", { on_line = 4, text = "true", indent = 4 }, "if consequence", XFAIL)
+ runner:new_line("control-flow.tig", { on_line = 4, text = "true", indent = 4 }, "if alternative", XFAIL)
+ runner:new_line("control-flow.tig", { on_line = 10, text = "start := 0", indent = 4 }, "for index start", XFAIL)
+ runner:new_line("control-flow.tig", { on_line = 12, text = "the_end", indent = 4 }, "for index end", XFAIL)
+ runner:new_line("control-flow.tig", { on_line = 14, text = "break", indent = 4 }, "for body", XFAIL)
+ runner:new_line("control-flow.tig", { on_line = 18, text = "true", indent = 4 }, "while condition", XFAIL)
+ runner:new_line("control-flow.tig", { on_line = 20, text = "break", indent = 4 }, "while body", XFAIL)
+
+ runner:new_line(
+ "functions.tig",
+ { on_line = 1, text = "parameter: int,", indent = 2 },
+ "parameter list beginning",
+ XFAIL
+ )
+ runner:new_line("functions.tig", { on_line = 2, text = "parameter: int,", indent = 2 }, "parameter list middle")
+ runner:new_line("functions.tig", { on_line = 4, text = ",parameter: int", indent = 2 }, "parameter list end")
+ runner:new_line("functions.tig", { on_line = 5, text = "var a := 0", indent = 0 }, "after parameter list")
+ runner:new_line("functions.tig", { on_line = 7, text = "print(a)", indent = 2 }, "function body", XFAIL)
+ runner:new_line("functions.tig", { on_line = 9, text = "a,", indent = 6 }, "function call beginning", XFAIL)
+ runner:new_line("functions.tig", { on_line = 10, text = "a,", indent = 6 }, "function call middle")
+ runner:new_line("functions.tig", { on_line = 12, text = ",a", indent = 6 }, "function call end")
+ runner:new_line("functions.tig", { on_line = 13, text = "; print(a)", indent = 4 }, "after function call")
+ runner:new_line(
+ "functions.tig",
+ { on_line = 14, text = "var a := 12", indent = 0 },
+ "after function declaration",
+ XFAIL
+ )
+
+ runner:new_line("groupings.tig", { on_line = 2, text = "var b := 0", indent = 2 }, "let declarations")
+ runner:new_line("groupings.tig", { on_line = 3, text = "a := a + 1", indent = 2 }, "after 'in'", XFAIL)
+ runner:new_line("groupings.tig", { on_line = 4, text = "a := a + 1;", indent = 4 }, "sequence", XFAIL)
+ runner:new_line("groupings.tig", { on_line = 8, text = "a := a + 1;", indent = 2 }, "after sequence")
+ runner:new_line("groupings.tig", { on_line = 10, text = "+ 1", indent = 0 }, "after 'end'")
+
+ runner:new_line(
+ "values-and-expressions.tig",
+ { on_line = 4, text = "field: record,", indent = 4 },
+ "record type beginning",
+ XFAIL
+ )
+ runner:new_line(
+ "values-and-expressions.tig",
+ { on_line = 5, text = "field: record,", indent = 4 },
+ "record type middle"
+ )
+ runner:new_line(
+ "values-and-expressions.tig",
+ { on_line = 7, text = ",field: record", indent = 4 },
+ "record type end"
+ )
+ runner:new_line("values-and-expressions.tig", { on_line = 8, text = "var a := 0", indent = 2 }, "after record type")
+ runner:new_line(
+ "values-and-expressions.tig",
+ { on_line = 10, text = "0", indent = 4 },
+ "variable declaration init value",
+ XFAIL
+ )
+ runner:new_line(
+ "values-and-expressions.tig",
+ { on_line = 11, text = "+ a", indent = 4 },
+ "variable declaration init follow-up"
+ )
+ runner:new_line("values-and-expressions.tig", { on_line = 13, text = "a", indent = 4 }, "array index", XFAIL)
+ runner:new_line("values-and-expressions.tig", { on_line = 14, text = "+ a", indent = 4 }, "array index follow-up")
+ runner:new_line("values-and-expressions.tig", { on_line = 15, text = "+ a", indent = 2 }, "after array value")
+ runner:new_line(
+ "values-and-expressions.tig",
+ { on_line = 18, text = "a", indent = 4 },
+ "array expression size",
+ XFAIL
+ )
+ runner:new_line(
+ "values-and-expressions.tig",
+ { on_line = 20, text = "of", indent = 2 },
+ "array expression after size"
+ )
+ runner:new_line(
+ "values-and-expressions.tig",
+ { on_line = 21, text = "a", indent = 4 },
+ "array expression init value",
+ XFAIL
+ )
+ runner:new_line(
+ "values-and-expressions.tig",
+ { on_line = 25, text = "field = 0,", indent = 4 },
+ "record expression beginning",
+ XFAIL
+ )
+ runner:new_line(
+ "values-and-expressions.tig",
+ { on_line = 26, text = "field = 0,", indent = 4 },
+ "record expression middle"
+ )
+ runner:new_line(
+ "values-and-expressions.tig",
+ { on_line = 28, text = ",field = 0", indent = 4 },
+ "record expression end"
+ )
+ runner:new_line(
+ "values-and-expressions.tig",
+ { on_line = 29, text = "a := 0", indent = 2 },
+ "after record expression"
+ )
+ end)
+end)
diff --git a/tests/query/highlights/tiger/built-ins.tig b/tests/query/highlights/tiger/built-ins.tig
new file mode 100644
index 000000000..68790541a
--- /dev/null
+++ b/tests/query/highlights/tiger/built-ins.tig
@@ -0,0 +1,43 @@
+let
+ var a := exit(0)
+ /* ^ function.builtin */
+
+ primitive exit(ret: int) /* Shadowing the prelude-included built-in */
+ /* ^ type.builtin */
+
+ var b := exit(0)
+ /* ^ function */
+
+ type int = string /* Shadowing the built-in type */
+ /* ^ type.builtin */
+
+ var c : int := "This is an \"int\""
+ /* ^ type.builtin (not sure why it isn't 'type')*/
+
+ var d : Object := nil
+ /* ^ type.builtin */
+
+ type Object = int
+
+ var self := "self"
+in
+ let
+ var c : int := "This is an int"
+ /* ^ type.builtin (not sure why it isn't 'type')*/
+ var d : Object := "This is an object"
+ /* ^ type.builtin (not sure why it isn't 'type')*/
+ in
+ end;
+
+ exit(1);
+ /* <- function */
+
+ print("shadowing is fun");
+ /* <- function.builtin */
+
+ self;
+ /* <- variable */
+
+ b := print
+ /* ^ variable */
+end
diff --git a/tests/query/highlights/tiger/comment.tig b/tests/query/highlights/tiger/comment.tig
new file mode 100644
index 000000000..b0e8262fd
--- /dev/null
+++ b/tests/query/highlights/tiger/comment.tig
@@ -0,0 +1,5 @@
+/* This is /* a nested */ comment */
+/* <- comment
+ ^ comment
+ ^ comment
+ */
diff --git a/tests/query/highlights/tiger/functions.tig b/tests/query/highlights/tiger/functions.tig
new file mode 100644
index 000000000..802f394af
--- /dev/null
+++ b/tests/query/highlights/tiger/functions.tig
@@ -0,0 +1,8 @@
+primitive print(s: string)
+/* ^ function */
+/* ^ variable.parameter */
+
+function func(a: int) : int = (print("Hello World!"); a)
+/* ^ function */
+/* ^ variable.parameter */
+/* ^ function */
diff --git a/tests/query/highlights/tiger/identifiers.tig b/tests/query/highlights/tiger/identifiers.tig
new file mode 100644
index 000000000..f177a5a5c
--- /dev/null
+++ b/tests/query/highlights/tiger/identifiers.tig
@@ -0,0 +1,29 @@
+type int = int
+/* ^ variable */
+/* ^ type.builtin */
+
+type int_array = array of int
+/* ^ type.builtin */
+
+type record = {a: int, b: string}
+/* ^ property */
+/* ^ type.builtin */
+/* ^ property */
+/* ^ type.builtin */
+
+var record := record {a = 12, b = "27"}
+/* ^ variable */
+/* ^ type */
+/* ^ property */
+/* ^ property */
+
+var array := int_array[12] of 27;
+/* ^ variable */
+/* ^ type */
+
+primitive func(a: int, b: string) : array
+/* ^ variable.parameter */
+/* ^ type.builtin */
+/* ^ variable.parameter */
+/* ^ type.builtin */
+/* ^ type */
diff --git a/tests/query/highlights/tiger/imports.tig b/tests/query/highlights/tiger/imports.tig
new file mode 100644
index 000000000..c056c301f
--- /dev/null
+++ b/tests/query/highlights/tiger/imports.tig
@@ -0,0 +1,3 @@
+import "lib.tih"
+/* <- keyword */
+/* ^ string.special.path */
diff --git a/tests/query/highlights/tiger/keywords.tig b/tests/query/highlights/tiger/keywords.tig
new file mode 100644
index 000000000..70cb82c05
--- /dev/null
+++ b/tests/query/highlights/tiger/keywords.tig
@@ -0,0 +1,41 @@
+let
+/* <- keyword */
+
+ var a := 12
+ /* <- keyword */
+
+ function f() : int = a
+ /* <- keyword.function */
+ primitive g()
+ /* <- keyword.function */
+
+ import "lib.tih"
+ /* <- keyword */
+
+ type array_of_int = array of int
+ /* <- keyword */
+ /* ^ keyword */
+ /* ^ keyword */
+
+in
+/* <- keyword */
+
+ 12;
+
+ if 12 then 27 else 42;
+ /* <- keyword */
+ /* ^ keyword */
+ /* ^ keyword */
+
+ for i := 12 to 27 do 42;
+ /* <- keyword.repeat */
+ /* ^ keyword.repeat */
+ /* ^ keyword.repeat */
+
+ while 12 do break
+ /* <- keyword.repeat */
+ /* ^ keyword.repeat */
+ /* ^ keyword */
+
+end
+/* <- keyword */
diff --git a/tests/query/highlights/tiger/literals.tig b/tests/query/highlights/tiger/literals.tig
new file mode 100644
index 000000000..029ac8742
--- /dev/null
+++ b/tests/query/highlights/tiger/literals.tig
@@ -0,0 +1,8 @@
+nil
+/* <- constant.builtin */
+42
+/* <- number */
+"Hello World!\n"
+/* <- string
+ ^ string.escape
+*/
diff --git a/tests/query/highlights/tiger/meta-variables.tig b/tests/query/highlights/tiger/meta-variables.tig
new file mode 100644
index 000000000..5c239cc52
--- /dev/null
+++ b/tests/query/highlights/tiger/meta-variables.tig
@@ -0,0 +1,13 @@
+let
+ _chunks(42)
+ /* <- keyword */
+
+in
+ _lvalue(12) : _namety(42) := _cast("I'm So Meta Even This Acronym", string);
+ /* <- keyword */
+ /* ^ keyword */
+ /* ^ keyword */
+
+ _exp(42)
+ /* <- keyword */
+end
diff --git a/tests/query/highlights/tiger/object-oriented.tig b/tests/query/highlights/tiger/object-oriented.tig
new file mode 100644
index 000000000..930eabf00
--- /dev/null
+++ b/tests/query/highlights/tiger/object-oriented.tig
@@ -0,0 +1,28 @@
+let
+ class A extends Object {}
+ /* <- keyword */
+ /* ^ keyword */
+ /* ^ type.builtin */
+
+ type B = class extends A {
+ /* ^ keyword */
+ /* ^ keyword */
+ /* ^ type */
+
+ var a := 12
+
+ method meth() : int = self.a
+ /* <- keyword.method */
+ /* ^ method */
+ /* ^ variable.builtin */
+ }
+
+ var object := new B
+ /* ^ keyword.constructor */
+in
+ object.a := 27;
+ /* ^ property */
+
+ object.meth()
+ /* ^ method */
+end
diff --git a/tests/query/highlights/tiger/operators.tig b/tests/query/highlights/tiger/operators.tig
new file mode 100644
index 000000000..21e600903
--- /dev/null
+++ b/tests/query/highlights/tiger/operators.tig
@@ -0,0 +1,48 @@
+let
+ var a : int := 42
+ /* ^ punctuation.delimiter */
+ /* ^ operator */
+in
+ (
+ /* <- punctuation.bracket */
+
+ -1 | 2 & 3 + 4 * 5;
+ /* <- operator */
+ /* ^ operator */
+ /* ^ operator */
+ /* ^ operator */
+ /* ^ operator */
+ /* ^ punctuation.delimiter */
+
+ 12 >= 27;
+ /* ^ operator */
+ 12 <= 27;
+ /* ^ operator */
+ 12 = 27;
+ /* ^ operator */
+ 12 <> 27;
+ /* ^ operator */
+ 12 < 27;
+ /* ^ operator */
+ 12 > 27;
+ /* ^ operator */
+
+ record.field;
+ /* ^ punctuation.delimiter */
+
+ func(a, b);
+ /* ^ punctuation.bracket */
+ /* ^ punctuation.bracket */
+ /* ^ punctuation.delimiter */
+
+ record_type { };
+ /* ^ punctuation.bracket */
+ /* ^ punctuation.bracket */
+
+ array[42]
+ /* ^ punctuation.bracket */
+ /* ^ punctuation.bracket */
+
+ )
+ /* <- punctuation.bracket */
+end