aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
diff options
context:
space:
mode:
authorLuuk de Gram <luuk@degram.dev>2021-12-04 19:38:56 +0100
committerLuuk de Gram <luuk@degram.dev>2021-12-04 21:17:17 +0100
commit74a5f4d848a48e3dde8bb43cfa5b36e89aa86dfe (patch)
treef1a98dba2f588ea95851a31e4e21c31a91323b8f /src/Module.zig
parentb7fe958f44160af17ef19e8e71f1bfb6930f190a (diff)
downloadzig-74a5f4d848a48e3dde8bb43cfa5b36e89aa86dfe.tar.gz
zig-74a5f4d848a48e3dde8bb43cfa5b36e89aa86dfe.zip
wasm: Initial behavior tests succeeding
Note: This also fixes a memory leak for inferred error sets, and for usingnamespace
Diffstat (limited to 'src/Module.zig')
-rw-r--r--src/Module.zig12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/Module.zig b/src/Module.zig
index 7ef9a02e09..7fa91486d3 100644
--- a/src/Module.zig
+++ b/src/Module.zig
@@ -1226,19 +1226,20 @@ pub const Fn = struct {
};
pub fn deinit(func: *Fn, gpa: Allocator) void {
- if (func.getInferredErrorSet()) |map| {
- map.deinit(gpa);
+ if (func.getInferredErrorSet()) |error_set_data| {
+ error_set_data.map.deinit(gpa);
+ error_set_data.functions.deinit(gpa);
}
}
- pub fn getInferredErrorSet(func: *Fn) ?*std.StringHashMapUnmanaged(void) {
+ pub fn getInferredErrorSet(func: *Fn) ?*Type.Payload.ErrorSetInferred.Data {
const ret_ty = func.owner_decl.ty.fnReturnType();
if (ret_ty.tag() == .generic_poison) {
return null;
}
if (ret_ty.zigTypeTag() == .ErrorUnion) {
if (ret_ty.errorUnionSet().castTag(.error_set_inferred)) |payload| {
- return &payload.data.map;
+ return &payload.data;
}
}
return null;
@@ -1301,6 +1302,7 @@ pub const Namespace = struct {
key.destroy(mod);
}
anon_decls.deinit(gpa);
+ ns.usingnamespace_set.deinit(gpa);
}
pub fn deleteAllDecls(
@@ -1332,6 +1334,8 @@ pub const Namespace = struct {
child_decl.destroy(mod);
}
anon_decls.deinit(gpa);
+
+ ns.usingnamespace_set.deinit(gpa);
}
// This renders e.g. "std.fs.Dir.OpenOptions"