aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
diff options
context:
space:
mode:
authorLuuk de Gram <luuk@degram.dev>2021-12-05 12:34:50 +0100
committerAndrew Kelley <andrew@ziglang.org>2021-12-05 12:19:01 -0800
commit9e03cf948948ea25feb3f413f234e98e71d55786 (patch)
tree79a20fe0103e9615e1193bc2320d95523bf03601 /src/Module.zig
parenta1b79ea5857a52332d9da49d261a7fd04e52a466 (diff)
downloadzig-9e03cf948948ea25feb3f413f234e98e71d55786.tar.gz
zig-9e03cf948948ea25feb3f413f234e98e71d55786.zip
wasm: Initial behavior tests succeeding
- Correctly load slice value on stack - Implement WrapErrorUnionErr and payload - Implement trunc, fix sliceLen and write undefined - Implement slice as return type and argument 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"