@@ -5,6 +5,12 @@ module c
5
5
6
6
import v.ast
7
7
8
+ enum AssertMetainfoKind {
9
+ pass
10
+ fail
11
+ panic
12
+ }
13
+
8
14
fn (mut g Gen) assert_stmt (original_assert_statement ast.AssertStmt) {
9
15
if ! original_assert_statement.is_used {
10
16
return
@@ -29,10 +35,10 @@ fn (mut g Gen) assert_stmt(original_assert_statement ast.AssertStmt) {
29
35
g.write (')' )
30
36
g.decrement_inside_ternary ()
31
37
g.writeln (' {' )
32
- metaname_ok := g.gen_assert_metainfo (node)
38
+ metaname_ok := g.gen_assert_metainfo (node, .pass )
33
39
g.writeln ('\t main__TestRunner_name_table[test_runner._typ]._method_assert_pass(test_runner._object, &${metaname_ok} );' )
34
40
g.writeln ('} else {' )
35
- metaname_fail := g.gen_assert_metainfo (node)
41
+ metaname_fail := g.gen_assert_metainfo (node, .fail )
36
42
g.writeln ('\t main__TestRunner_name_table[test_runner._typ]._method_assert_fail(test_runner._object, &${metaname_fail} );' )
37
43
g.gen_assert_postfailure_mode (node)
38
44
g.writeln ('}' )
@@ -45,7 +51,7 @@ fn (mut g Gen) assert_stmt(original_assert_statement ast.AssertStmt) {
45
51
g.write ('))' )
46
52
g.decrement_inside_ternary ()
47
53
g.writeln (' {' )
48
- metaname_panic := g.gen_assert_metainfo (node)
54
+ metaname_panic := g.gen_assert_metainfo (node, .panic )
49
55
g.writeln ('\t __print_assert_failure(&${metaname_panic} );' )
50
56
g.gen_assert_postfailure_mode (node)
51
57
g.writeln ('}' )
@@ -107,7 +113,7 @@ fn (mut g Gen) gen_assert_postfailure_mode(node ast.AssertStmt) {
107
113
}
108
114
}
109
115
110
- fn (mut g Gen) gen_assert_metainfo (node ast.AssertStmt) string {
116
+ fn (mut g Gen) gen_assert_metainfo (node ast.AssertStmt, kind AssertMetainfoKind ) string {
111
117
mod_path := cestring (g.file.path)
112
118
fn_name := g.fn_decl.name
113
119
line_nr := node.pos.line_nr
@@ -131,12 +137,14 @@ fn (mut g Gen) gen_assert_metainfo(node ast.AssertStmt) string {
131
137
g.writeln ('\t ${metaname} .op = ${expr_op_str} ;' )
132
138
g.writeln ('\t ${metaname} .llabel = ${expr_left_str} ;' )
133
139
g.writeln ('\t ${metaname} .rlabel = ${expr_right_str} ;' )
134
- g.write ('\t ${metaname} .lvalue = ' )
135
- g.gen_assert_single_expr (node.expr.left, node.expr.left_type)
136
- g.writeln (';' )
137
- g.write ('\t ${metaname} .rvalue = ' )
138
- g.gen_assert_single_expr (node.expr.right, node.expr.right_type)
139
- g.writeln (';' )
140
+ if kind != .pass {
141
+ g.write ('\t ${metaname} .lvalue = ' )
142
+ g.gen_assert_single_expr (node.expr.left, node.expr.left_type)
143
+ g.writeln (';' )
144
+ g.write ('\t ${metaname} .rvalue = ' )
145
+ g.gen_assert_single_expr (node.expr.right, node.expr.right_type)
146
+ g.writeln (';' )
147
+ }
140
148
}
141
149
ast.CallExpr {
142
150
g.writeln ('\t ${metaname} .op = _SLIT("call");' )
0 commit comments