summaryrefslogtreecommitdiff
path: root/spec/inputs/attrib.yue
blob: 7e9a42c51eb7fb30cad668377a1247eea4910521 (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
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"

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