summaryrefslogtreecommitdiff
path: root/spec/inputs/attrib.yue
blob: 500ef0ff80940f8e260d817d6ba035679404202f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
do
	close a, b = setmetatable {},__close:=> print "closed"
	const c, d = 123, 'abc'

	close a, b
	const c, d

do
	close v = if flag
		func!
	else
		setmetatable {},__close:=>

	close f = with io.open "file.txt"
		\write "Hello"

do
	const a = 1 if true
	close b = (if x then 1) unless false
	const c = (switch x
		when "abc" then 998) if true
	close d =
		:value if a ?? b

macro defer = (item)-> "close _ = #{item}"
macro defer_f = (func)-> "close _ = setmetatable {},__close:#{func}"

do
	$defer with io.open "file.txt"
		\write "Hello"
	
	$defer setmetatable {},__close:=> print "second"

	$defer_f -> print "first"

_defers = setmetatable {},__close:=>
	@[#@]!
	@[#@] = nil

macro defer_i = (item)-> "
_defers[#_defers + 1] = #{item}
close _ = _defers"

do
	$defer_i -> print 3
	$defer_i -> print 2
	$defer_i -> print 1