From 636efb3c2099197abc5469c946828a9a9abfcfae Mon Sep 17 00:00:00 2001 From: yuyi Date: Fri, 27 Nov 2020 17:16:57 +0800 Subject: [PATCH] cgen: fix windows escape errors for comptime @ pseudo vars (#6977) --- vlib/v/gen/comptime.v | 5 +++-- .../comptime_at_test.v} | 19 +++++++------------ 2 files changed, 10 insertions(+), 14 deletions(-) rename vlib/v/{scanner/scanner_at_literals_test.v => tests/comptime_at_test.v} (86%) diff --git a/vlib/v/gen/comptime.v b/vlib/v/gen/comptime.v index 3de5648fa0..48eb62cd8d 100644 --- a/vlib/v/gen/comptime.v +++ b/vlib/v/gen/comptime.v @@ -112,10 +112,11 @@ fn cgen_attrs(attrs []table.Attr) []string { fn (mut g Gen) comp_at(node ast.AtExpr) { if node.kind == .vmod_file { - val := cnewlines(node.val.replace('\r', '')) + val := cnewlines(node.val.replace('\r', '')).replace('\\', '\\\\') g.write('tos_lit("$val")') } else { - g.write('tos_lit("$node.val")') + val := node.val.replace('\\', '\\\\') + g.write('tos_lit("$val")') } } diff --git a/vlib/v/scanner/scanner_at_literals_test.v b/vlib/v/tests/comptime_at_test.v similarity index 86% rename from vlib/v/scanner/scanner_at_literals_test.v rename to vlib/v/tests/comptime_at_test.v index ecbd1bf72d..7590348810 100644 --- a/vlib/v/scanner/scanner_at_literals_test.v +++ b/vlib/v/tests/comptime_at_test.v @@ -1,6 +1,5 @@ -module scanner - import os +import v.pref struct TestStruct { test string @@ -67,15 +66,7 @@ fn fn_name_mod_level_high_order(cb fn (int)) { fn test_at_file() { // Test @FILE f := os.file_name(@FILE) - $if windows { - // TODO all after Drive letter - // no_drive := f.all_after(':') - // TODO assert the variable name on Windows??? - // assert no_drive == 'scanner_at_literals_test.v' - assert true - } $else { - assert f == 'scanner_at_literals_test.v' - } + assert f == 'comptime_at_test.v' } fn test_at_fn() { @@ -96,7 +87,7 @@ fn test_at_fn() { fn test_at_mod() { // Test @MOD - assert @MOD == 'scanner' + assert @MOD == 'main' } fn test_at_struct() { @@ -123,3 +114,7 @@ fn test_vmod_file() { assert content.contains('version:') assert content.contains('description:') } + +fn test_comptime_at() { + assert @VEXE == pref.vexe_path() +}