comparison test/call_suite_aggrs/mk-cases.lua @ 496:da5232da6270

- test code: rand-sig now spitting out dyncallish sigs (with ')' end delim and rettype at end), purely for consistency
author Tassilo Philipp
date Mon, 21 Mar 2022 18:11:38 +0100
parents 0c68b3f91367
children 7426cfbe92d5
comparison
equal deleted inserted replaced
495:45ac093ca822 496:da5232da6270
13 return c..'A'..t:sub(2) 13 return c..'A'..t:sub(2)
14 end 14 end
15 return t 15 return t
16 end 16 end
17 17
18 function put_sig_rtype_first(sig)
19 return sig:sub(sig:find(')')+1,-1)..sig:sub(1,sig:find(')')-1)
20 end
21
22
18 function trim(l) return l:gsub("^%s+",""):gsub("%s+$","") end 23 function trim(l) return l:gsub("^%s+",""):gsub("%s+$","") end
19 function mkcase(id,sig) 24 function mkcase(id,sig)
20 local sig = trim(sig) 25 local sig = trim(sig)
26 local fsig = put_sig_rtype_first(sig)
21 local h = { "/* ",id,":",sig," */ " } 27 local h = { "/* ",id,":",sig," */ " }
22 local t = { "" } 28 local t = { "" }
23 local pos = 0 29 local pos = 0
24 local n_nest = 0 30 local n_nest = 0
25 local aggr = { } 31 local aggr = { }
26 local aggr_sig = { } 32 local aggr_sig = { }
27 aggr[0] = { } -- non-sequential [0] collects all non-aggr types 33 aggr[0] = { } -- non-sequential [0] collects all non-aggr types
28 aggr_sig[0] = '' 34 aggr_sig[0] = ''
29 for i = 1, #sig do 35 for i = 1, #fsig do
30 local name = "a"..pos 36 local name = "a"..pos
31 local ch = sig:sub(i,i) 37 local ch = fsig:sub(i,i)
32 38
33 39
34 -- aggregate nest level change? 40 -- aggregate nest level change?
35 if ch == '{' or ch == '<' then 41 if ch == '{' or ch == '<' then
36 n_nest = n_nest + 1 42 n_nest = n_nest + 1
138 local sigtab = { } 144 local sigtab = { }
139 local cases = '' 145 local cases = ''
140 for line in io.lines() do 146 for line in io.lines() do
141 local sig = trim(line) 147 local sig = trim(line)
142 cases = cases..mkcase(lineno,sig) 148 cases = cases..mkcase(lineno,sig)
143 sigtab[#sigtab+1] = sig 149 sigtab[#sigtab+1] = put_sig_rtype_first(sig)
144 lineno = lineno + 1 150 lineno = lineno + 1
145 end 151 end
146 152
147 agg_sizes = {} 153 agg_sizes = {}
148 agg_sigs = {} 154 agg_sigs = {}