mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
Sema: make @src give absolute paths
This commit is contained in:
parent
eaa6b04c3c
commit
95ab942184
1 changed files with 8 additions and 3 deletions
11
src/Sema.zig
11
src/Sema.zig
|
|
@ -11861,10 +11861,14 @@ fn zirBuiltinSrc(
|
|||
const file_name_val = blk: {
|
||||
var anon_decl = try block.startAnonDecl(src);
|
||||
defer anon_decl.deinit();
|
||||
const name = try fn_owner_decl.getFileScope().fullPathZ(anon_decl.arena());
|
||||
const relative_path = try fn_owner_decl.getFileScope().fullPath(sema.arena);
|
||||
const absolute_path = std.fs.realpathAlloc(sema.arena, relative_path) catch |err| {
|
||||
return sema.fail(block, src, "failed to get absolute path of file '{s}': {s}", .{ relative_path, @errorName(err) });
|
||||
};
|
||||
const aboslute_duped = try anon_decl.arena().dupeZ(u8, absolute_path);
|
||||
const new_decl = try anon_decl.finish(
|
||||
try Type.Tag.array_u8_sentinel_0.create(anon_decl.arena(), name.len),
|
||||
try Value.Tag.bytes.create(anon_decl.arena(), name[0 .. name.len + 1]),
|
||||
try Type.Tag.array_u8_sentinel_0.create(anon_decl.arena(), aboslute_duped.len),
|
||||
try Value.Tag.bytes.create(anon_decl.arena(), aboslute_duped[0 .. aboslute_duped.len + 1]),
|
||||
0, // default alignment
|
||||
);
|
||||
break :blk try Value.Tag.decl_ref.create(sema.arena, new_decl);
|
||||
|
|
@ -11875,6 +11879,7 @@ fn zirBuiltinSrc(
|
|||
field_values[0] = file_name_val;
|
||||
// fn_name: [:0]const u8,
|
||||
field_values[1] = func_name_val;
|
||||
// TODO these should be runtime only!
|
||||
// line: u32
|
||||
field_values[2] = try Value.Tag.int_u64.create(sema.arena, extra.line + 1);
|
||||
// column: u32,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue