tree-sitter-hy/test/corpus/structured.txt
2025-05-13 16:17:42 -05:00

287 lines
4.5 KiB
Text

======
import
======
(import sys os.path)
(import os.path [exists isdir :as is-dir isfile])
(import sys :as systest)
(import sys *)
(import tests.resources [kwtest function-with-a-dash]
os.path [exists
isdir :as is-dir
isfile :as is-file]
sys :as systest
math *)
---
(source_file
(import
(module_import
(symbol))
(module_import
(dotted_identifier
(symbol)
(immediate_symbol))))
(import
(named_import
(dotted_identifier
(symbol)
(immediate_symbol))
(symbol)
(aliased_import
(symbol)
(symbol))
(symbol)))
(import
(module_import
(aliased_import
(symbol)
(symbol))))
(import
(module_import
(symbol)))
(import
(named_import
(dotted_identifier
(symbol)
(immediate_symbol))
(symbol)
(symbol))
(named_import
(dotted_identifier
(symbol)
(immediate_symbol))
(symbol)
(aliased_import
(symbol)
(symbol))
(aliased_import
(symbol)
(symbol)))
(module_import
(aliased_import
(symbol)
(symbol)))
(module_import
(symbol))))
=======
require
=======
(require mymodule)
(require mymodule :as M)
(require mymodule [foo])
(require mymodule *)
(require mymodule [foo :as bar])
(require mymodule :macros [foo] :readers [spiff])
(require mymodule
mymodule :readers [spiff])
---
(source_file
(require
(module_import
(symbol)))
(require
(module_import
(aliased_import
(symbol)
(symbol))))
(require
(named_import
(symbol)
(symbol)))
(require
(module_import
(symbol)))
(require
(named_import
(symbol)
(aliased_import
(symbol)
(symbol))))
(require
(namespace_require
(symbol)
(symbol)
(symbol)))
(require
(module_import
(symbol))
(namespace_require
(symbol)
(symbol))))
========
function
========
(defn name [params] bodyform1 bodyform2)
(defn :async [decorator1 decorator2] :tp [T1 T2] #^ annotation name [params])
(defn f [a / b [c 3] * d e #** kwargs]
[a b c d e kwargs])
---
(source_file
(function
(symbol)
(parameter_list
(symbol))
(symbol)
(symbol))
(function
(variable_list
(symbol)
(symbol))
(type_parameters
(symbol)
(symbol))
(type_annotation
(symbol))
(symbol)
(parameter_list
(symbol)))
(function
(symbol)
(parameter_list
(symbol)
(symbol)
(symbol)
(integer)
(symbol)
(symbol)
(symbol))
(list
(symbol)
(symbol)
(symbol)
(symbol)
(symbol)
(symbol))))
======
lambda
======
(fn [x] (print x))
(fn :async [x])
---
(source_file
(lambda
(parameter_list
(symbol))
(expression
(symbol)
(symbol)))
(lambda
(parameter_list
(symbol))))
=====
class
=====
(defclass [decorator1 decorator2] :tp [T1 T2] MyClass [SuperClass1 SuperClass2]
"A class that does things at times."
(setv
attribute1 value1
attribute2 value2)
(defn method1 [self arg1 arg2])
(defn method2 [self arg1 arg2]))
---
(source_file
(class
(variable_list
(symbol)
(symbol))
(type_parameters
(symbol)
(symbol))
(symbol)
(variable_list
(symbol)
(symbol))
(string)
(expression
(symbol)
(symbol)
(symbol)
(symbol)
(symbol))
(function
(symbol)
(parameter_list
(symbol)
(symbol)
(symbol)))
(function
(symbol)
(parameter_list
(symbol)
(symbol)
(symbol)))))
=====
macro
=====
(defmacro hypotenuse [a b]
(import math)
`(math.sqrt (+ (** ~a 2) (** ~b 2))))
---
(source_file
(macro
(symbol)
(parameter_list
(symbol)
(symbol))
(import
(module_import
(symbol)))
(sugar)
(expression
(dotted_identifier
(symbol)
(immediate_symbol))
(expression
(symbol)
(expression
(symbol)
(sugar)
(symbol)
(integer))
(expression
(symbol)
(sugar)
(symbol)
(integer))))))
======
reader
======
(defreader hi
'(print "Hello."))
---
(source_file
(reader
(symbol)
(sugar)
(expression
(symbol)
(string))))