aboutsummaryrefslogtreecommitdiff
path: root/src/AstGen.zig
diff options
context:
space:
mode:
authorRobin Voetter <robin@voetter.nl>2022-01-08 04:29:49 +0100
committerAndrew Kelley <andrew@ziglang.org>2022-01-08 14:32:40 -0500
commitcc5c25d48b5331396bfa5218dc7f29dff26e20f9 (patch)
tree08767d5933f36d6bc57cc284ed62ac9ca0d625c4 /src/AstGen.zig
parent4931b8dc93ee4a99a415dffab03d400e95d1a90a (diff)
downloadzig-cc5c25d48b5331396bfa5218dc7f29dff26e20f9.tar.gz
zig-cc5c25d48b5331396bfa5218dc7f29dff26e20f9.zip
stage2: implement @src
Diffstat (limited to 'src/AstGen.zig')
-rw-r--r--src/AstGen.zig15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/AstGen.zig b/src/AstGen.zig
index 7ff3d75682..87cc07fae8 100644
--- a/src/AstGen.zig
+++ b/src/AstGen.zig
@@ -6918,12 +6918,25 @@ fn builtinCall(
return rvalue(gz, rl, result, node);
},
+ .src => {
+ const token_starts = tree.tokens.items(.start);
+ const node_start = token_starts[tree.firstToken(node)];
+
+ astgen.advanceSourceCursor(tree.source, node_start);
+
+ const result = try gz.addExtendedPayload(.builtin_src, Zir.Inst.LineColumn{
+ .line = @intCast(u32, astgen.source_line),
+ .column = @intCast(u32, astgen.source_column),
+ });
+
+ return rvalue(gz, rl, result, node);
+ },
+
.breakpoint => return simpleNoOpVoid(gz, rl, node, .breakpoint),
// zig fmt: off
.This => return rvalue(gz, rl, try gz.addNodeExtended(.this, node), node),
.return_address => return rvalue(gz, rl, try gz.addNodeExtended(.ret_addr, node), node),
- .src => return rvalue(gz, rl, try gz.addNodeExtended(.builtin_src, node), node),
.error_return_trace => return rvalue(gz, rl, try gz.addNodeExtended(.error_return_trace, node), node),
.frame => return rvalue(gz, rl, try gz.addNodeExtended(.frame, node), node),
.frame_address => return rvalue(gz, rl, try gz.addNodeExtended(.frame_address, node), node),