| ... | ... | @@ -11861,10 +11861,14 @@ fn zirBuiltinSrc( |
| 11861 | 11861 | const file_name_val = blk: { |
| 11862 | 11862 | var anon_decl = try block.startAnonDecl(src); |
| 11863 | 11863 | defer anon_decl.deinit(); |
| 11864 | | const name = try fn_owner_decl.getFileScope().fullPathZ(anon_decl.arena()); |
| 11864 | const relative_path = try fn_owner_decl.getFileScope().fullPath(sema.arena); |
| 11865 | const absolute_path = std.fs.realpathAlloc(sema.arena, relative_path) catch |err| { |
| 11866 | return sema.fail(block, src, "failed to get absolute path of file '{s}': {s}", .{ relative_path, @errorName(err) }); |
| 11867 | }; |
| 11868 | const aboslute_duped = try anon_decl.arena().dupeZ(u8, absolute_path); |
| 11865 | 11869 | const new_decl = try anon_decl.finish( |
| 11866 | | try Type.Tag.array_u8_sentinel_0.create(anon_decl.arena(), name.len), |
| 11867 | | try Value.Tag.bytes.create(anon_decl.arena(), name[0 .. name.len + 1]), |
| 11870 | try Type.Tag.array_u8_sentinel_0.create(anon_decl.arena(), aboslute_duped.len), |
| 11871 | try Value.Tag.bytes.create(anon_decl.arena(), aboslute_duped[0 .. aboslute_duped.len + 1]), |
| 11868 | 11872 | 0, // default alignment |
| 11869 | 11873 | ); |
| 11870 | 11874 | break :blk try Value.Tag.decl_ref.create(sema.arena, new_decl); |
| ... | ... | @@ -11875,6 +11879,7 @@ fn zirBuiltinSrc( |
| 11875 | 11879 | field_values[0] = file_name_val; |
| 11876 | 11880 | // fn_name: [:0]const u8, |
| 11877 | 11881 | field_values[1] = func_name_val; |
| 11882 | // TODO these should be runtime only! |
| 11878 | 11883 | // line: u32 |
| 11879 | 11884 | field_values[2] = try Value.Tag.int_u64.create(sema.arena, extra.line + 1); |
| 11880 | 11885 | // column: u32, |