zig/test/cases/bugs/828.zig
Andrew Kelley a35b366eb6 [breaking] delete ptr deref prefix op
start using zig-fmt-pointer-reform branch build of zig fmt
to fix code to use the new syntax

all of test/cases/* are processed, but there are more left
to be done - all the std lib used by the behavior tests
2018-04-30 20:35:54 -04:00

38 lines
866 B
Zig

const CountBy = struct {
a: usize,
const One = CountBy {
.a = 1,
};
pub fn counter(self: &const CountBy) Counter {
return Counter {
.i = 0,
};
}
};
const Counter = struct {
i: usize,
pub fn count(self: &Counter) bool {
self.i += 1;
return self.i <= 10;
}
};
fn constCount(comptime cb: &const CountBy, comptime unused: u32) void {
comptime {
var cnt = cb.counter();
if (cnt.i != 0) @compileError("Counter instance reused!");
while (cnt.count()) {}
}
}
test "comptime struct return should not return the same instance" {
//the first parameter must be passed by reference to trigger the bug
//a second parameter is required to trigger the bug
const ValA = constCount(&CountBy.One, 12);
const ValB = constCount(&CountBy.One, 15);
}