mirror of
https://github.com/ziglang/zig.git
synced 2025-12-26 16:13:07 +00:00
Revert collateral changes, clarify abortAnonDecl()
This commit is contained in:
parent
53a36eacfa
commit
01e08c92b3
@ -617,15 +617,17 @@ pub const Decl = struct {
|
||||
return tree.tokens.items(.start)[decl.srcToken()];
|
||||
}
|
||||
|
||||
pub fn renderFullyQualifiedName(decl: *const Decl, writer: anytype) @TypeOf(writer).Error!void {
|
||||
return try decl.src_namespace.renderFullyQualifiedName(mem.spanZ(decl.name), writer);
|
||||
pub fn renderFullyQualifiedName(decl: Decl, writer: anytype) !void {
|
||||
const unqualified_name = mem.spanZ(decl.name);
|
||||
return decl.src_namespace.renderFullyQualifiedName(unqualified_name, writer);
|
||||
}
|
||||
|
||||
pub fn renderFullyQualifiedDebugName(decl: *const Decl, writer: anytype) @TypeOf(writer).Error!void {
|
||||
return try decl.src_namespace.renderFullyQualifiedDebugName(mem.spanZ(decl.name), writer);
|
||||
pub fn renderFullyQualifiedDebugName(decl: Decl, writer: anytype) !void {
|
||||
const unqualified_name = mem.spanZ(decl.name);
|
||||
return decl.src_namespace.renderFullyQualifiedDebugName(unqualified_name, writer);
|
||||
}
|
||||
|
||||
pub fn getFullyQualifiedName(decl: *const Decl, gpa: *Allocator) ![:0]u8 {
|
||||
pub fn getFullyQualifiedName(decl: Decl, gpa: *Allocator) ![:0]u8 {
|
||||
var buffer = std.ArrayList(u8).init(gpa);
|
||||
defer buffer.deinit();
|
||||
try decl.renderFullyQualifiedName(buffer.writer());
|
||||
@ -1246,7 +1248,7 @@ pub const Scope = struct {
|
||||
}
|
||||
}
|
||||
|
||||
// This renders e.g. "std.fs:Dir.OpenOptions"
|
||||
/// This renders e.g. "std/fs.zig:Dir.OpenOptions"
|
||||
pub fn renderFullyQualifiedDebugName(
|
||||
ns: Namespace,
|
||||
name: []const u8,
|
||||
@ -4055,16 +4057,17 @@ pub fn deleteUnusedDecl(mod: *Module, decl: *Decl) void {
|
||||
decl.destroy(mod);
|
||||
}
|
||||
|
||||
/// Cancel the creation of an anon decl and delete any references to it.
|
||||
/// If other decls depend on this decl, they must be aborted first.
|
||||
pub fn abortAnonDecl(mod: *Module, decl: *Decl) void {
|
||||
log.debug("abortAnonDecl {*} ({s})", .{ decl, decl.name });
|
||||
|
||||
assert(!decl.isRoot());
|
||||
assert(decl.src_namespace.anon_decls.swapRemove(decl));
|
||||
|
||||
const dependants = decl.dependants.keys();
|
||||
for (dependants) |dep| {
|
||||
dep.removeDependency(decl);
|
||||
}
|
||||
// An aborted decl must not have dependants -- they must have
|
||||
// been aborted first and removed from this list.
|
||||
assert(decl.dependants.count() == 0);
|
||||
|
||||
for (decl.dependencies.keys()) |dep| {
|
||||
dep.removeDependant(decl);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user