diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2017-12-13 21:53:52 -0500 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2017-12-13 21:53:52 -0500 |
| commit | f55fdc00fcde3cd17ed0ddb94c0997c882dbe6b9 (patch) | |
| tree | 911f875f15548275274e6811464850e3191b06b1 /test | |
| parent | 84619abe9f16bc030c5bdb888f47a9b49b87c2ff (diff) | |
| download | zig-f55fdc00fcde3cd17ed0ddb94c0997c882dbe6b9.tar.gz zig-f55fdc00fcde3cd17ed0ddb94c0997c882dbe6b9.zip | |
fix const and volatile qualifiers being dropped sometimes
in the expression `&const a.b`, the const (and/or volatile)
qualifiers would be incorrectly dropped.
closes #655
Diffstat (limited to 'test')
| -rw-r--r-- | test/behavior.zig | 1 | ||||
| -rw-r--r-- | test/cases/bugs/655.zig | 12 | ||||
| -rw-r--r-- | test/cases/bugs/655_other_file.zig | 1 | ||||
| -rw-r--r-- | test/cases/misc.zig | 2 |
4 files changed, 15 insertions, 1 deletions
diff --git a/test/behavior.zig b/test/behavior.zig index bdd428074b..da5b173e17 100644 --- a/test/behavior.zig +++ b/test/behavior.zig @@ -7,6 +7,7 @@ comptime { _ = @import("cases/bitcast.zig"); _ = @import("cases/bool.zig"); _ = @import("cases/bugs/394.zig"); + _ = @import("cases/bugs/655.zig"); _ = @import("cases/cast.zig"); _ = @import("cases/const_slice_child.zig"); _ = @import("cases/defer.zig"); diff --git a/test/cases/bugs/655.zig b/test/cases/bugs/655.zig new file mode 100644 index 0000000000..a0da9d53a2 --- /dev/null +++ b/test/cases/bugs/655.zig @@ -0,0 +1,12 @@ +const std = @import("std"); +const other_file = @import("655_other_file.zig"); + +test "function with &const parameter with type dereferenced by namespace" { + const x: other_file.Integer = 1234; + comptime std.debug.assert(@typeOf(&x) == &const other_file.Integer); + foo(x); +} + +fn foo(x: &const other_file.Integer) { + std.debug.assert(*x == 1234); +} diff --git a/test/cases/bugs/655_other_file.zig b/test/cases/bugs/655_other_file.zig new file mode 100644 index 0000000000..df1df44955 --- /dev/null +++ b/test/cases/bugs/655_other_file.zig @@ -0,0 +1 @@ +pub const Integer = u32; diff --git a/test/cases/misc.zig b/test/cases/misc.zig index 9f4f064f6b..e5e6575fab 100644 --- a/test/cases/misc.zig +++ b/test/cases/misc.zig @@ -504,7 +504,7 @@ test "@typeName" { test "volatile load and store" { var number: i32 = 1234; - const ptr = &volatile number; + const ptr = (&volatile i32)(&number); *ptr += 1; assert(*ptr == 1235); } |
