From e2505479ee5b3cd8697b8cd08355e088ad637e41 Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Sun, 1 Nov 2020 16:59:26 +0200 Subject: [PATCH] cgen: encode newlines as \n in the assert meta information --- vlib/v/gen/cgen.v | 10 +++++++--- vlib/v/tests/assert_with_newlines_test.v | 8 ++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 vlib/v/tests/assert_with_newlines_test.v diff --git a/vlib/v/gen/cgen.v b/vlib/v/gen/cgen.v index fc3075713a..6e999d619d 100644 --- a/vlib/v/gen/cgen.v +++ b/vlib/v/gen/cgen.v @@ -1313,6 +1313,10 @@ fn (mut g Gen) gen_assert_stmt(original_assert_statement ast.AssertStmt) { g.writeln('}') } +fn cnewlines(s string) string { + return s.replace('\n', r'\n') +} + fn (mut g Gen) gen_assert_metainfo(a ast.AssertStmt) string { mod_path := cestring(g.file.path) fn_name := g.fn_decl.name @@ -1324,12 +1328,12 @@ fn (mut g Gen) gen_assert_metainfo(a ast.AssertStmt) string { g.writeln('\t${metaname}.fpath = ${ctoslit(mod_path)};') g.writeln('\t${metaname}.line_nr = $line_nr;') g.writeln('\t${metaname}.fn_name = ${ctoslit(fn_name)};') - g.writeln('\t${metaname}.src = ${ctoslit(src)};') + g.writeln('\t${metaname}.src = ${cnewlines(ctoslit(src))};') match a.expr { ast.InfixExpr { g.writeln('\t${metaname}.op = ${ctoslit(it.op.str())};') - g.writeln('\t${metaname}.llabel = ${ctoslit(it.left.str())};') - g.writeln('\t${metaname}.rlabel = ${ctoslit(it.right.str())};') + g.writeln('\t${metaname}.llabel = ${cnewlines(ctoslit(it.left.str()))};') + g.writeln('\t${metaname}.rlabel = ${cnewlines(ctoslit(it.right.str()))};') g.write('\t${metaname}.lvalue = ') g.gen_assert_single_expr(it.left, it.left_type) g.writeln(';') diff --git a/vlib/v/tests/assert_with_newlines_test.v b/vlib/v/tests/assert_with_newlines_test.v new file mode 100644 index 0000000000..a0bf5dc7d2 --- /dev/null +++ b/vlib/v/tests/assert_with_newlines_test.v @@ -0,0 +1,8 @@ +fn test_assert_with_newlines_in_the_labels() { + println('start') + s := '123 +456' + assert s == '123 +456' + println('done') +}