diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-09-23 12:00:02 +0300 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-09-23 17:39:06 +0300 |
| commit | 8d1fdfc8ede94b1aea524041c1df10c42d4002e4 (patch) | |
| tree | cb57b64f9eb88c2352bc488a6c6ae2ec0b3242bc /test | |
| parent | cae76d8293f6416ff698171c2ae10552fa014587 (diff) | |
| download | zig-8d1fdfc8ede94b1aea524041c1df10c42d4002e4.tar.gz zig-8d1fdfc8ede94b1aea524041c1df10c42d4002e4.zip | |
Sema: preserve volatileness when constructing field pointers
Closes #12928
Diffstat (limited to 'test')
| -rw-r--r-- | test/behavior.zig | 1 | ||||
| -rw-r--r-- | test/behavior/bugs/12928.zig | 26 |
2 files changed, 27 insertions, 0 deletions
diff --git a/test/behavior.zig b/test/behavior.zig index 2f1c609a55..552e68f1f7 100644 --- a/test/behavior.zig +++ b/test/behavior.zig @@ -93,6 +93,7 @@ test { _ = @import("behavior/bugs/12794.zig"); _ = @import("behavior/bugs/12801-1.zig"); _ = @import("behavior/bugs/12801-2.zig"); + _ = @import("behavior/bugs/12928.zig"); _ = @import("behavior/byteswap.zig"); _ = @import("behavior/byval_arg_var.zig"); _ = @import("behavior/call.zig"); diff --git a/test/behavior/bugs/12928.zig b/test/behavior/bugs/12928.zig new file mode 100644 index 0000000000..56eca8cf60 --- /dev/null +++ b/test/behavior/bugs/12928.zig @@ -0,0 +1,26 @@ +const std = @import("std"); +const expect = std.testing.expect; +const A = extern struct { + value: *volatile B, +}; +const B = extern struct { + a: u32, + b: i32, +}; +test { + var a: *A = undefined; + try expect(@TypeOf(&a.value.a) == *volatile u32); + try expect(@TypeOf(&a.value.b) == *volatile i32); +} +const C = extern struct { + value: *volatile D, +}; +const D = extern union { + a: u32, + b: i32, +}; +test { + var c: *C = undefined; + try expect(@TypeOf(&c.value.a) == *volatile u32); + try expect(@TypeOf(&c.value.b) == *volatile i32); +} |
