aboutsummaryrefslogtreecommitdiff
path: root/tools/tree-sitter/test/corpus/generic_inference.txt
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-10-05 00:26:05 +0200
committerEugen Wissner <belka@caraus.de>2026-10-05 01:00:50 +0200
commita9f6cfb6a8b6d38057faca067c015da1f72cf62d (patch)
treedb4e740db52df8be62bda5d2101603910107b7d4 /tools/tree-sitter/test/corpus/generic_inference.txt
parent5b7f983b3912a8d0fbeaf22f7fe0e2c5f1e0ff01 (diff)
downloadelna-a9f6cfb6a8b6d38057faca067c015da1f72cf62d.tar.gz
Add a treesitter grammar
Diffstat (limited to 'tools/tree-sitter/test/corpus/generic_inference.txt')
-rw-r--r--tools/tree-sitter/test/corpus/generic_inference.txt157
1 files changed, 157 insertions, 0 deletions
diff --git a/tools/tree-sitter/test/corpus/generic_inference.txt b/tools/tree-sitter/test/corpus/generic_inference.txt
new file mode 100644
index 0000000..ccac55c
--- /dev/null
+++ b/tools/tree-sitter/test/corpus/generic_inference.txt
@@ -0,0 +1,157 @@
+==================
+generic_inference
+==================
+
+program()
+type
+ File = record
+ fd: Int
+ end
+
+ Cell#[T] = record
+ held: ^T
+ end
+
+var
+ files: Cell#[File]
+ bytes: Cell#[Word8]
+ f: File
+ b: Word8
+
+proc store#[T](target: ^Cell#[T]; value: ^T)
+ target^.held := value
+return
+
+proc relay#[T](target: ^Cell#[T]; value: ^T)
+ store(target, value)
+return
+
+begin
+ store(@files, @f);
+ relay(@bytes, @b);
+ store(@files, nil)
+end.
+
+---
+
+(source_file
+ (program_declaration
+ (type_section
+ (type_declaration
+ (identifier_definition
+ (identifier))
+ (record_type
+ (field_declaration
+ (identifier_definition
+ (identifier))
+ (identifier))))
+ (type_declaration
+ (identifier_definition
+ (identifier))
+ (type_parameters
+ (identifier))
+ (record_type
+ (field_declaration
+ (identifier_definition
+ (identifier))
+ (pointer_type
+ (identifier))))))
+ (var_section
+ (variable_declaration
+ (identifier_definition
+ (identifier))
+ (generic_type
+ (identifier)
+ (type_arguments
+ (identifier))))
+ (variable_declaration
+ (identifier_definition
+ (identifier))
+ (generic_type
+ (identifier)
+ (type_arguments
+ (identifier))))
+ (variable_declaration
+ (identifier_definition
+ (identifier))
+ (identifier))
+ (variable_declaration
+ (identifier_definition
+ (identifier))
+ (identifier)))
+ (procedure_declaration
+ (identifier_definition
+ (identifier))
+ (type_parameters
+ (identifier))
+ (parameter_list
+ (field_declaration
+ (identifier_definition
+ (identifier))
+ (pointer_type
+ (generic_type
+ (identifier)
+ (type_arguments
+ (identifier)))))
+ (field_declaration
+ (identifier_definition
+ (identifier))
+ (pointer_type
+ (identifier))))
+ (procedure_body
+ (block
+ (assignment_statement
+ (field_expression
+ (dereference_expression
+ (identifier))
+ (identifier))
+ (identifier)))
+ (return_clause)))
+ (procedure_declaration
+ (identifier_definition
+ (identifier))
+ (type_parameters
+ (identifier))
+ (parameter_list
+ (field_declaration
+ (identifier_definition
+ (identifier))
+ (pointer_type
+ (generic_type
+ (identifier)
+ (type_arguments
+ (identifier)))))
+ (field_declaration
+ (identifier_definition
+ (identifier))
+ (pointer_type
+ (identifier))))
+ (procedure_body
+ (block
+ (call_expression
+ (identifier)
+ (argument_list
+ (identifier)
+ (identifier))))
+ (return_clause)))
+ (call_expression
+ (identifier)
+ (argument_list
+ (unary_expression
+ (identifier))
+ (unary_expression
+ (identifier))))
+ (call_expression
+ (identifier)
+ (argument_list
+ (unary_expression
+ (identifier))
+ (unary_expression
+ (identifier))))
+ (call_expression
+ (identifier)
+ (argument_list
+ (unary_expression
+ (identifier))
+ (literal
+ (nil))))))