From adc2aed587d009c0d112063fa0f3d03dedc9e50a Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 16 Apr 2021 15:50:28 -0700 Subject: AstGen: require `@import` operand to be string literal See #2206 --- src/AstGen.zig | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/AstGen.zig') diff --git a/src/AstGen.zig b/src/AstGen.zig index b0f554df5c..7dde9abf61 100644 --- a/src/AstGen.zig +++ b/src/AstGen.zig @@ -4674,8 +4674,17 @@ fn builtinCall( return rvalue(gz, scope, rl, .void_value, node); }, .import => { - const target = try expr(gz, scope, .none, params[0]); - const result = try gz.addUnNode(.import, target, node); + const node_tags = tree.nodes.items(.tag); + const node_datas = tree.nodes.items(.data); + const operand_node = params[0]; + + if (node_tags[operand_node] != .string_literal) { + // Spec reference: https://github.com/ziglang/zig/issues/2206 + return astgen.failNode(operand_node, "@import operand must be a string literal", .{}); + } + const str_lit_token = main_tokens[operand_node]; + const str = try gz.strLitAsString(str_lit_token); + const result = try gz.addStrTok(.import, str.index, str_lit_token); return rvalue(gz, scope, rl, result, node); }, .error_to_int => { -- cgit v1.2.3