From ced5f213ef1ef381f247ea0e2f86a1e835dd769c Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Sat, 30 Sep 2023 08:50:02 +0300 Subject: [PATCH] checker: allow for `const source = $embed_file(@FILE).to_string()` --- vlib/v/checker/comptime.v | 5 +++++ vlib/v/embed_file/tests/embed_file_self_test.v | 8 ++++++++ 2 files changed, 13 insertions(+) create mode 100644 vlib/v/embed_file/tests/embed_file_self_test.v diff --git a/vlib/v/checker/comptime.v b/vlib/v/checker/comptime.v index 7604789892e48b..4449cb28225345 100644 --- a/vlib/v/checker/comptime.v +++ b/vlib/v/checker/comptime.v @@ -71,6 +71,11 @@ fn (mut c Checker) comptime_call(mut node ast.ComptimeCall) ast.Type { if node.args.len == 1 { embed_arg := node.args[0] mut raw_path := '' + if embed_arg.expr is ast.AtExpr { + mut expr := embed_arg.expr + c.at_expr(mut expr) + raw_path = expr.val + } if embed_arg.expr is ast.StringLiteral { raw_path = embed_arg.expr.val } else if embed_arg.expr is ast.Ident { diff --git a/vlib/v/embed_file/tests/embed_file_self_test.v b/vlib/v/embed_file/tests/embed_file_self_test.v new file mode 100644 index 00000000000000..d0eb02c0b8c807 --- /dev/null +++ b/vlib/v/embed_file/tests/embed_file_self_test.v @@ -0,0 +1,8 @@ +const self_file = $embed_file(@FILE) + +fn test_self_file() { + source := self_file.to_string() + assert source.contains('self_file.to_string') + assert source.contains('fn test_self_file() {') + assert source.split_into_lines().len > @LINE.int() +}