alex

/

v Public
0 Issues 1 Contributor 0 Releases 4 Branches
Additions: 32 Deletions: 4 View patch
1 }
2 }
3 tmp_var := g.new_tmp_var()
4+ is_opt_or_result := node.typ.has_flag(.option) || node.typ.has_flag(.result)
5 line := if node.is_expr {
6 stmt_str := g.go_before_stmt(0)
7 g.write(util.tabs(g.indent))
8 g.set_current_pos_as_last_stmt_pos()
9 prev_skip_stmt_pos := g.skip_stmt_pos
10 g.skip_stmt_pos = true
11- g.write('\t${tmp_var} = ')
12- g.stmt(last)
13+ if is_opt_or_result {
14+ tmp_var2 := g.new_tmp_var()
15+ g.write('{ ${g.base_type(node.typ)} ${tmp_var2} = ')
16+ g.stmt(last)
17+ g.writeln('_result_ok(&(${g.base_type(node.typ)}[]) { ${tmp_var2} }, (_result*)(&${tmp_var}), sizeof(${g.base_type(node.typ)}));')
18+ g.writeln('}')
19+ } else {
20+ g.write('\t${tmp_var} = ')
21+ g.stmt(last)
22+ }
23 g.skip_stmt_pos = prev_skip_stmt_pos
24 g.writeln(';')
25 g.writeln('}')
26 g.set_current_pos_as_last_stmt_pos()
27 prev_skip_stmt_pos := g.skip_stmt_pos
28 g.skip_stmt_pos = true
29- g.write('${tmp_var} = ')
30- g.stmt(last)
31+ if is_opt_or_result {
32+ tmp_var2 := g.new_tmp_var()
33+ g.write('{ ${g.base_type(node.typ)} ${tmp_var2} = ')
34+ g.stmt(last)
35+ g.writeln('_result_ok(&(${g.base_type(node.typ)}[]) { ${tmp_var2} }, (_result*)(&${tmp_var}), sizeof(${g.base_type(node.typ)}));')
36+ g.writeln('}')
37+ } else {
38+ g.write('${tmp_var} = ')
39+ g.stmt(last)
40+ }
41 g.skip_stmt_pos = prev_skip_stmt_pos
42 g.writeln(';')
43 g.indent--
44
1new file mode 100644
2+fn comptime_ret_result() !string {
3+ return $if debug {
4+ 'debug'
5+ } $else {
6+ 'not debug'
7+ }
8+}
9+
10+fn test_main() {
11+ assert comptime_ret_result()? == 'not debug'
12+}
13