diff --git a/test/stage1/behavior.zig b/test/stage1/behavior.zig index 95d2dbac93beaac5c741e429fd6481934fddd340..9f7c484fc5338cef6d82f926c35123aa5c943c92 100644 --- a/test/stage1/behavior.zig +++ b/test/stage1/behavior.zig @@ -32,6 +32,7 @@ comptime { _ = @import("behavior/bugs/2346.zig"); _ = @import("behavior/bugs/2578.zig"); _ = @import("behavior/bugs/2692.zig"); + _ = @import("behavior/bugs/3007.zig"); _ = @import("behavior/bugs/3046.zig"); _ = @import("behavior/bugs/3112.zig"); _ = @import("behavior/bugs/3367.zig"); diff --git a/test/stage1/behavior/bugs/3007.zig b/test/stage1/behavior/bugs/3007.zig new file mode 100644 index 0000000000000000000000000000000000000000..b723ebc0970a1490b429cd864b0708034a081126 --- /dev/null +++ b/test/stage1/behavior/bugs/3007.zig @@ -0,0 +1,23 @@ +const std = @import("std"); + +const Foo = struct { + free: bool, + + pub const FooError = error{NotFree}; +}; + +var foo = Foo{ .free = true }; +var default_foo: ?*Foo = null; + +fn get_foo() Foo.FooError!*Foo { + if (foo.free) { + foo.free = false; + return &foo; + } + return error.NotFree; +} + +test "fixed" { + default_foo = get_foo() catch null; // This Line + std.testing.expect(!default_foo.?.free); +}