mirror of
https://github.com/ziglang/zig.git
synced 2025-12-30 01:53:16 +00:00
stage2: ensure 'std', 'builtin', and 'root' is always available to @import
This commit is contained in:
parent
0fc79d602b
commit
02acde99a1
@ -1494,31 +1494,14 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
|
||||
);
|
||||
errdefer test_pkg.destroy(gpa);
|
||||
|
||||
try test_pkg.add(gpa, "builtin", builtin_pkg);
|
||||
try test_pkg.add(gpa, "root", test_pkg);
|
||||
try test_pkg.add(gpa, "std", std_pkg);
|
||||
|
||||
break :root_pkg test_pkg;
|
||||
} else main_pkg;
|
||||
errdefer if (options.is_test) root_pkg.destroy(gpa);
|
||||
|
||||
var other_pkg_iter = main_pkg.table.valueIterator();
|
||||
while (other_pkg_iter.next()) |pkg| {
|
||||
try pkg.*.add(gpa, "builtin", builtin_pkg);
|
||||
try pkg.*.add(gpa, "std", std_pkg);
|
||||
}
|
||||
|
||||
try main_pkg.addAndAdopt(gpa, "builtin", builtin_pkg);
|
||||
try main_pkg.add(gpa, "root", root_pkg);
|
||||
try main_pkg.addAndAdopt(gpa, "std", std_pkg);
|
||||
|
||||
try std_pkg.add(gpa, "builtin", builtin_pkg);
|
||||
try std_pkg.add(gpa, "root", root_pkg);
|
||||
try std_pkg.add(gpa, "std", std_pkg);
|
||||
|
||||
try builtin_pkg.add(gpa, "std", std_pkg);
|
||||
try builtin_pkg.add(gpa, "builtin", builtin_pkg);
|
||||
|
||||
const main_pkg_in_std = m: {
|
||||
const std_path = try std.fs.path.resolve(arena, &[_][]const u8{
|
||||
std_pkg.root_src_directory.path orelse ".",
|
||||
|
||||
@ -4673,6 +4673,15 @@ pub fn importFile(
|
||||
cur_file: *File,
|
||||
import_string: []const u8,
|
||||
) !ImportFileResult {
|
||||
if (std.mem.eql(u8, import_string, "std")) {
|
||||
return mod.importPkg(mod.main_pkg.table.get("std").?);
|
||||
}
|
||||
if (std.mem.eql(u8, import_string, "builtin")) {
|
||||
return mod.importPkg(mod.main_pkg.table.get("builtin").?);
|
||||
}
|
||||
if (std.mem.eql(u8, import_string, "root")) {
|
||||
return mod.importPkg(mod.root_pkg);
|
||||
}
|
||||
if (cur_file.pkg.table.get(import_string)) |pkg| {
|
||||
return mod.importPkg(pkg);
|
||||
}
|
||||
|
||||
@ -4674,10 +4674,6 @@ fn zirCImport(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileEr
|
||||
error.OutOfMemory => return error.OutOfMemory,
|
||||
else => unreachable, // we pass null for root_src_dir_path
|
||||
};
|
||||
const std_pkg = mod.main_pkg.table.get("std").?;
|
||||
const builtin_pkg = mod.main_pkg.table.get("builtin").?;
|
||||
try c_import_pkg.add(sema.gpa, "builtin", builtin_pkg);
|
||||
try c_import_pkg.add(sema.gpa, "std", std_pkg);
|
||||
|
||||
const result = mod.importPkg(c_import_pkg) catch |err|
|
||||
return sema.fail(&child_block, src, "C import failed: {s}", .{@errorName(err)});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user