Skip to content

Commit cd629cf

Browse files
authored
cgen: do not generate the stringified values for assert x in y, for the pass case (#17908)
1 parent ebfc4b4 commit cd629cf

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

vlib/v/gen/c/assert.v

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ module c
55

66
import v.ast
77

8+
enum AssertMetainfoKind {
9+
pass
10+
fail
11+
panic
12+
}
13+
814
fn (mut g Gen) assert_stmt(original_assert_statement ast.AssertStmt) {
915
if !original_assert_statement.is_used {
1016
return
@@ -29,10 +35,10 @@ fn (mut g Gen) assert_stmt(original_assert_statement ast.AssertStmt) {
2935
g.write(')')
3036
g.decrement_inside_ternary()
3137
g.writeln(' {')
32-
metaname_ok := g.gen_assert_metainfo(node)
38+
metaname_ok := g.gen_assert_metainfo(node, .pass)
3339
g.writeln('\tmain__TestRunner_name_table[test_runner._typ]._method_assert_pass(test_runner._object, &${metaname_ok});')
3440
g.writeln('} else {')
35-
metaname_fail := g.gen_assert_metainfo(node)
41+
metaname_fail := g.gen_assert_metainfo(node, .fail)
3642
g.writeln('\tmain__TestRunner_name_table[test_runner._typ]._method_assert_fail(test_runner._object, &${metaname_fail});')
3743
g.gen_assert_postfailure_mode(node)
3844
g.writeln('}')
@@ -45,7 +51,7 @@ fn (mut g Gen) assert_stmt(original_assert_statement ast.AssertStmt) {
4551
g.write('))')
4652
g.decrement_inside_ternary()
4753
g.writeln(' {')
48-
metaname_panic := g.gen_assert_metainfo(node)
54+
metaname_panic := g.gen_assert_metainfo(node, .panic)
4955
g.writeln('\t__print_assert_failure(&${metaname_panic});')
5056
g.gen_assert_postfailure_mode(node)
5157
g.writeln('}')
@@ -107,7 +113,7 @@ fn (mut g Gen) gen_assert_postfailure_mode(node ast.AssertStmt) {
107113
}
108114
}
109115

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 {
111117
mod_path := cestring(g.file.path)
112118
fn_name := g.fn_decl.name
113119
line_nr := node.pos.line_nr
@@ -131,12 +137,14 @@ fn (mut g Gen) gen_assert_metainfo(node ast.AssertStmt) string {
131137
g.writeln('\t${metaname}.op = ${expr_op_str};')
132138
g.writeln('\t${metaname}.llabel = ${expr_left_str};')
133139
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+
}
140148
}
141149
ast.CallExpr {
142150
g.writeln('\t${metaname}.op = _SLIT("call");')

0 commit comments

Comments
 (0)