aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-01-06 16:32:23 -0800
committerGitHub <noreply@github.com>2021-01-06 16:32:23 -0800
commitd7d905696c3e3b0e2b8c691317cb696be940b9a3 (patch)
tree3bdc251c196100d2bca29b14d38ded9f342ddaf1 /src/Module.zig
parent76870a2265410dc8790b9383cf39610f4b33e3ee (diff)
parentd92ea56884c4cdc3a0cff8b6ed1e31f959ee0fa8 (diff)
downloadzig-d7d905696c3e3b0e2b8c691317cb696be940b9a3.tar.gz
zig-d7d905696c3e3b0e2b8c691317cb696be940b9a3.zip
Merge pull request #7622 from tetsuo-cpp/array-hash-map-improvements
std: Support equivalent ArrayList operations in ArrayHashMap
Diffstat (limited to 'src/Module.zig')
-rw-r--r--src/Module.zig16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/Module.zig b/src/Module.zig
index c53efb7a2d..0856b7a606 100644
--- a/src/Module.zig
+++ b/src/Module.zig
@@ -594,7 +594,7 @@ pub const Scope = struct {
}
pub fn removeDecl(self: *Container, child: *Decl) void {
- _ = self.decls.remove(child);
+ _ = self.decls.swapRemove(child);
}
pub fn fullyQualifiedNameHash(self: *Container, name: []const u8) NameHash {
@@ -1710,7 +1710,7 @@ pub fn analyzeContainer(self: *Module, container_scope: *Scope.Container) !void
// Update the AST Node index of the decl, even if its contents are unchanged, it may
// have been re-ordered.
decl.src_index = decl_i;
- if (deleted_decls.remove(decl) == null) {
+ if (deleted_decls.swapRemove(decl) == null) {
decl.analysis = .sema_failure;
const err_msg = try Compilation.ErrorMsg.create(self.gpa, tree.token_locs[name_tok].start, "redefinition of '{s}'", .{decl.name});
errdefer err_msg.destroy(self.gpa);
@@ -1752,7 +1752,7 @@ pub fn analyzeContainer(self: *Module, container_scope: *Scope.Container) !void
// Update the AST Node index of the decl, even if its contents are unchanged, it may
// have been re-ordered.
decl.src_index = decl_i;
- if (deleted_decls.remove(decl) == null) {
+ if (deleted_decls.swapRemove(decl) == null) {
decl.analysis = .sema_failure;
const err_msg = try Compilation.ErrorMsg.create(self.gpa, name_loc.start, "redefinition of '{s}'", .{decl.name});
errdefer err_msg.destroy(self.gpa);
@@ -1882,7 +1882,7 @@ pub fn deleteDecl(self: *Module, decl: *Decl) !void {
try self.markOutdatedDecl(dep);
}
}
- if (self.failed_decls.remove(decl)) |entry| {
+ if (self.failed_decls.swapRemove(decl)) |entry| {
entry.value.destroy(self.gpa);
}
if (self.emit_h_failed_decls.remove(decl)) |entry| {
@@ -1900,7 +1900,7 @@ pub fn deleteDecl(self: *Module, decl: *Decl) !void {
/// Delete all the Export objects that are caused by this Decl. Re-analysis of
/// this Decl will cause them to be re-created (or not).
fn deleteDeclExports(self: *Module, decl: *Decl) void {
- const kv = self.export_owners.remove(decl) orelse return;
+ const kv = self.export_owners.swapRemove(decl) orelse return;
for (kv.value) |exp| {
if (self.decl_exports.getEntry(exp.exported_decl)) |decl_exports_kv| {
@@ -1927,10 +1927,10 @@ fn deleteDeclExports(self: *Module, decl: *Decl) void {
if (self.comp.bin_file.cast(link.File.MachO)) |macho| {
macho.deleteExport(exp.link.macho);
}
- if (self.failed_exports.remove(exp)) |entry| {
+ if (self.failed_exports.swapRemove(exp)) |entry| {
entry.value.destroy(self.gpa);
}
- _ = self.symbol_exports.remove(exp.options.name);
+ _ = self.symbol_exports.swapRemove(exp.options.name);
self.gpa.free(exp.options.name);
self.gpa.destroy(exp);
}
@@ -1975,7 +1975,7 @@ pub fn analyzeFnBody(self: *Module, decl: *Decl, func: *Fn) !void {
fn markOutdatedDecl(self: *Module, decl: *Decl) !void {
log.debug("mark {s} outdated\n", .{decl.name});
try self.comp.work_queue.writeItem(.{ .analyze_decl = decl });
- if (self.failed_decls.remove(decl)) |entry| {
+ if (self.failed_decls.swapRemove(decl)) |entry| {
entry.value.destroy(self.gpa);
}
if (self.emit_h_failed_decls.remove(decl)) |entry| {