tree-sitter-elixir/test/corpus/do_end.txt

581 lines
8.3 KiB
Plaintext

=====================================
call without arguments
=====================================
fun do
a
end
---
(source
(call
(identifier)
(do_block
(identifier))))
=====================================
call with arguments in parentheses
=====================================
fun(a, b) do
c
end
---
(source
(call
(identifier)
(arguments
(identifier)
(identifier))
(do_block
(identifier))))
=====================================
call with arguments without parentheses
=====================================
fun a, b do
c
end
---
(source
(call
(identifier)
(arguments
(identifier)
(identifier))
(do_block
(identifier))))
=====================================
remote call
=====================================
Mod.fun do
a
end
---
(source
(call
(dot
(alias)
(identifier))
(do_block
(identifier))))
=====================================
sticks to the outermost call
=====================================
outer_fun inner_fun arg do
a
end
---
(source
(call
(identifier)
(arguments
(call
(identifier)
(arguments
(identifier)))
(do_block
(identifier))))
=====================================
newline before do
=====================================
fun x
do
x
end
---
(source
(call
(identifier)
(arguments
(identifier))
(do_block
(identifier))))
=====================================
stab clause / no arguments
=====================================
fun do
() -> x
end
---
(source
(call
(identifier)
(do_block
(stab_clause
(arguments)
(body
(identifier))))))
=====================================
stab clause / no arguments without parentheses
=====================================
fun do
-> x
end
---
(source
(call
(identifier)
(do_block
(stab_clause
(body
(identifier))))))
=====================================
stab clause / one argument
=====================================
fun do
x -> x
end
---
(source
(call
(identifier)
(do_block
(stab_clause
(arguments
(identifier))
(body
(identifier))))))
=====================================
stab clause / many arguments
=====================================
fun do
x, y, 1 -> :ok
end
---
(source
(call
(identifier)
(do_block
(stab_clause
(arguments
(identifier)
(identifier)
(integer))
(body
(atom
(atom_literal)))))))
=====================================
stab clause / arguments in parentheses
=====================================
fun do
(x, y) -> :ok
end
---
(source
(call
(identifier)
(do_block
(stab_clause
(arguments
(identifier)
(identifier))
(body
(atom
(atom_literal)))))))
=====================================
stab clause / many clauses
=====================================
fun do
1 -> :yes
2 -> :no
other -> :maybe
end
---
(source
(call
(identifier)
(do_block
(stab_clause
(arguments
(integer))
(body
(atom
(atom_literal))))
(stab_clause
(arguments
(integer))
(body
(atom
(atom_literal))))
(stab_clause
(arguments
(identifier))
(body
(atom
(atom_literal)))))))
=====================================
stab clause / multiline expression
=====================================
fun do
x ->
y
x
end
---
(source
(call
(identifier)
(do_block
(stab_clause
(arguments
(integer))
(body
(identifier)
(identifier))))))
=====================================
stab clause / with guard / no arguments
=====================================
fun do
() when node() == :nonode@nohost -> true
end
---
(source
(call
(identifier)
(do_block
(stab_clause
(binary_operator
(arguments)
(binary_operator
(call
(identifier)
(arguments))
(atom
(atom_literal))))
(body
(boolean))))))
=====================================
stab clause / with guard / one argument
=====================================
fun do
x when x == [] -> x
end
---
(source
(call
(identifier)
(do_block
(stab_clause
(binary_operator
(arguments
(identifier))
(binary_operator
(identifier)
(list)))
(body
(atom
(atom_literal)))))))
=====================================
stab clause / with guard / multiple arguments
=====================================
fun do
x, y when x == [] -> x
end
---
(source
(call
(identifier)
(do_block
(stab_clause
(binary_operator
(arguments
(identifier)
(identifier))
(binary_operator
(identifier)
(list)))
(body
(atom
(atom_literal)))))))
=====================================
stab clause / with guard / arguments in parentheses
=====================================
fun do
(x, y) when y == [] -> y
end
---
(source
(call
(identifier)
(do_block
(stab_clause
(binary_operator
(arguments
(identifier)
(identifier))
(binary_operator
(identifier)
(list)))
(body
(atom
(atom_literal)))))))
=====================================
stab clause / with guard / multiple guards
=====================================
fun do
x when x > 10 when x < 5 -> x
end
---
(source
(call
(identifier)
(do_block
(stab_clause
(binary_operator
(arguments
(identifier))
(binary_operator
(binary_operator
(identifier)
(identifier))
(binary_operator
(identifier)
(identifier))))
(body
(atom
(atom_literal)))))))
=====================================
pattern matching
=====================================
fun do
[h | tail] -> {h, tail}
end
---
(source
(call
(identifier)
(do_block
(stab_clause
(arguments
(list
(binary_operator
(identifier)
(identifier))))
(body
(atom
(atom_literal)))))))
=====================================
child blocks / after
=====================================
fun do
x
after
y
end
---
(source
(call
(identifier)
(do_block
(identifier)
(after_block
(identifier)))))
=====================================
child blocks / catch
=====================================
fun do
x
catch
y
end
---
(source
(call
(identifier)
(do_block
(identifier)
(catch_block
(identifier)))))
=====================================
child blocks / else
=====================================
fun do
x
else
y
end
---
(source
(call
(identifier)
(do_block
(identifier)
(else_block
(identifier)))))
=====================================
child blocks / rescue
=====================================
fun do
x
rescue
y
end
---
(source
(call
(identifier)
(do_block
(identifier)
(rescue_block
(identifier)))))
=====================================
child blocks / duplicated
=====================================
fun do
x
after
y
after
z
end
---
(source
(call
(identifier)
(do_block
(identifier)
(after_block
(identifier))
(after_block
(identifier)))))
=====================================
child blocks / mixed
=====================================
fun do
x
else
y
after
z
end
---
(source
(call
(identifier)
(do_block
(identifier)
(else_block
(identifier))
(after_block
(identifier)))))
=====================================
child blocks / stab clause
=====================================
fun do
x
rescue
y -> y
end
---
(source
(call
(identifier)
(do_block
(identifier)
(rescue_block
(stab_clause
(arguments
(identifier))
(body
(identifier)))))))