Skip to content

Commit baa6dc5

Browse files
Move tests to top level scope
1 parent ea83b1a commit baa6dc5

2 files changed

Lines changed: 147 additions & 184 deletions

File tree

tests/analysis/arithmetic.zig

Lines changed: 57 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,108 +1,81 @@
1-
pub fn main() void {
2-
var some_u4: u4 = 4;
3-
var some_u8: u8 = 8;
4-
var some_u16: u16 = 16;
5-
var some_i16: i16 = -16;
1+
const add_u8_i16 = runtime_u8 + runtime_i16;
2+
// ^^^^^^^^^^ (i16)()
63

7-
const add_u8_i16 = some_u8 + some_i16;
8-
// ^^^^^^^^^^ (i16)()
4+
const add_wrap_u8_i16 = runtime_u8 +% runtime_i16;
5+
// ^^^^^^^^^^^^^^^ (i16)()
96

10-
const add_wrap_u8_i16 = some_u8 +% some_i16;
11-
// ^^^^^^^^^^^^^^^ (i16)()
7+
const add_sat_u8_i16 = runtime_u8 +| runtime_i16;
8+
// ^^^^^^^^^^^^^^ (i16)()
129

13-
const add_sat_u8_i16 = some_u8 +| some_i16;
14-
// ^^^^^^^^^^^^^^ (i16)()
10+
const sub_u8_i16 = runtime_u8 - runtime_i16;
11+
// ^^^^^^^^^^ (i16)()
1512

16-
const sub_u8_i16 = some_u8 - some_i16;
17-
// ^^^^^^^^^^ (i16)()
13+
const sub_wrap_u8_i16 = runtime_u8 -% runtime_i16;
14+
// ^^^^^^^^^^^^^^^ (i16)()
1815

19-
const sub_wrap_u8_i16 = some_u8 -% some_i16;
20-
// ^^^^^^^^^^^^^^^ (i16)()
16+
const sub_sat_u8_i16 = runtime_u8 -| runtime_i16;
17+
// ^^^^^^^^^^^^^^ (i16)()
2118

22-
const sub_sat_u8_i16 = some_u8 -| some_i16;
23-
// ^^^^^^^^^^^^^^ (i16)()
19+
const negation_i16 = -runtime_i16;
20+
// ^^^^^^^^^^^^ (i16)()
2421

25-
const negation_i16 = -some_i16;
26-
// ^^^^^^^^^^^^ (i16)()
22+
const negation_wrap_i16 = -%runtime_i16;
23+
// ^^^^^^^^^^^^^^^^^ (i16)()
2724

28-
const negation_wrap_i16 = -%some_i16;
29-
// ^^^^^^^^^^^^^^^^^ (i16)()
25+
const mul_u8_i16 = runtime_u8 * runtime_i16;
26+
// ^^^^^^^^^^ (i16)()
3027

31-
const mul_u8_i16 = some_u8 * some_i16;
32-
// ^^^^^^^^^^ (i16)()
28+
const mul_wrap_u8_i16 = runtime_u8 *% runtime_i16;
29+
// ^^^^^^^^^^^^^^^ (i16)()
3330

34-
const mul_wrap_u8_i16 = some_u8 *% some_i16;
35-
// ^^^^^^^^^^^^^^^ (i16)()
31+
const mul_sat_u8_i16 = runtime_u8 *| runtime_i16;
32+
// ^^^^^^^^^^^^^^ (i16)()
3633

37-
const mul_sat_u8_i16 = some_u8 *| some_i16;
38-
// ^^^^^^^^^^^^^^ (i16)()
34+
const div_u8_u16 = runtime_u8 / runtime_u16;
35+
// ^^^^^^^^^^ (u16)()
3936

40-
const div_u8_u16 = some_u8 / some_u16;
41-
// ^^^^^^^^^^ (u16)()
37+
// TODO this should be `unknown`
38+
const div_u8_i16 = runtime_u8 / runtime_i16;
39+
// ^^^^^^^^^^ (i16)()
4240

43-
const mod_u8_u16 = some_u8 % some_u16;
44-
// ^^^^^^^^^^ (u16)()
41+
const mod_u8_u16 = runtime_u8 % runtime_u16;
42+
// ^^^^^^^^^^ (u16)()
4543

46-
// TODO this should be `i16`
47-
const shl_i16_u4 = some_i16 << some_u4;
48-
// ^^^^^^^^^^ (unknown)()
44+
// TODO this should be `unknown`
45+
const mod_u8_i16 = runtime_u8 % runtime_i16;
46+
// ^^^^^^^^^^ (i16)()
4947

50-
// TODO this should be `i16`
51-
const shl_sat_i16_u16 = some_i16 <<| some_u16;
52-
// ^^^^^^^^^^^^^^^ (unknown)()
48+
// TODO this should be `i16`
49+
const shl_i16_u4 = runtime_i16 << runtime_u4;
50+
// ^^^^^^^^^^ (unknown)()
5351

54-
// TODO this should be `i16`
55-
const shr_i16_u4 = some_i16 >> some_u4;
56-
// ^^^^^^^^^^ (unknown)()
52+
const shl_i16_u8 = runtime_i16 << runtime_u8;
53+
// ^^^^^^^^^^ (unknown)()
5754

58-
const bit_and_u8_i16 = some_u8 & some_i16;
59-
// ^^^^^^^^^^^^^^ (i16)()
55+
// TODO this should be `i16`
56+
const shl_sat_i16_u16 = runtime_i16 <<| runtime_u16;
57+
// ^^^^^^^^^^^^^^^ (unknown)()
6058

61-
const bit_or_u8_i16 = some_u8 | some_i16;
62-
// ^^^^^^^^^^^^^ (i16)()
59+
// TODO this should be `i16`
60+
const shr_i16_u4 = runtime_i16 >> runtime_u4;
61+
// ^^^^^^^^^^ (unknown)()
6362

64-
const bit_xor_u8_i16 = some_u8 ^ some_i16;
65-
// ^^^^^^^^^^^^^^ (i16)()
63+
const shr_i16_u8 = runtime_i16 >> runtime_u8;
64+
// ^^^^^^^^^^ (unknown)()
6665

67-
const bit_not_u8 = ~some_u8;
68-
// ^^^^^^^^^^ (u8)()
66+
const bit_and_u8_i16 = runtime_u8 & runtime_i16;
67+
// ^^^^^^^^^^^^^^ (i16)()
6968

70-
// Use @compileLog to verify the expected type with the compiler:
71-
// @compileLog(shl_sat_i16_u16);
69+
const bit_or_u8_i16 = runtime_u8 | runtime_i16;
70+
// ^^^^^^^^^^^^^ (i16)()
7271

73-
_ = .{
74-
.{ &some_u4, &some_u8, &some_u16, &some_i16 },
75-
.{ add_u8_i16, add_wrap_u8_i16, add_sat_u8_i16 },
76-
.{ sub_u8_i16, sub_wrap_u8_i16, sub_sat_u8_i16 },
77-
.{ negation_i16, negation_wrap_i16 },
78-
.{ mul_u8_i16, mul_wrap_u8_i16, mul_sat_u8_i16 },
79-
.{ div_u8_u16, mod_u8_u16 },
80-
.{ shl_i16_u4, shl_sat_i16_u16, shr_i16_u4 },
81-
.{ bit_and_u8_i16, bit_or_u8_i16, bit_xor_u8_i16, bit_not_u8 },
82-
};
83-
}
72+
const bit_xor_u8_i16 = runtime_u8 ^ runtime_i16;
73+
// ^^^^^^^^^^^^^^ (i16)()
8474

85-
fn invalid() void {
86-
var some_u8: u8 = 8;
87-
var some_i16: i16 = -16;
75+
const bit_not_u8 = ~runtime_u8;
76+
// ^^^^^^^^^^ (u8)()
8877

89-
// TODO this should be `unknown`
90-
const div_u8_i16 = some_u8 / some_i16;
91-
// ^^^^^^^^^^ (i16)()
92-
93-
// TODO this should be `unknown`
94-
const mod_u8_i16 = some_u8 % some_i16;
95-
// ^^^^^^^^^^ (i16)()
96-
97-
const shl_i16_u8 = some_i16 << some_u8;
98-
// ^^^^^^^^^^ (unknown)()
99-
100-
const shr_i16_u8 = some_i16 >> some_u8;
101-
// ^^^^^^^^^^ (unknown)()
102-
103-
_ = .{
104-
.{ &some_u8, &some_i16 },
105-
.{ div_u8_i16, mod_u8_i16 },
106-
.{ shl_i16_u8, shr_i16_u8 },
107-
};
108-
}
78+
var runtime_u4: u4 = 4;
79+
var runtime_u8: u8 = 8;
80+
var runtime_u16: u16 = 16;
81+
var runtime_i16: i16 = -16;

tests/analysis/pointer.zig

Lines changed: 90 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,30 @@ const one_u32_orelse = one_u32 orelse unreachable;
3838
const one_u32_unwrap = one_u32.?;
3939
// ^^^^^^^^^^^^^^ (unknown)()
4040

41+
const one_minus_one = one_u32 - one_u32;
42+
// ^^^^^^^^^^^^^ (usize)()
43+
44+
const one_minus_many = one_u32 - many_u32;
45+
// ^^^^^^^^^^^^^^ (usize)()
46+
47+
const one_minus_c = one_u32 - c_u32;
48+
// ^^^^^^^^^^^ (usize)()
49+
50+
const one_plus_u8 = one_u32 + runtime_u8;
51+
// ^^^^^^^^^^^ (unknown)()
52+
53+
const one_minus_u8 = one_u32 - runtime_u8;
54+
// ^^^^^^^^^^^^ (unknown)()
55+
56+
const one_minus_slice = one_u32 - slice_u32;
57+
// ^^^^^^^^^^^^^^^ (unknown)()
58+
59+
const many_minus_slice = many_u32 - slice_u32;
60+
// ^^^^^^^^^^^^^^^^ (unknown)()
61+
62+
const c_minus_slice = c_u32 - slice_u32;
63+
// ^^^^^^^^^^^^^ (unknown)()
64+
4165
//
4266
// many item pointer [*]T
4367
//
@@ -66,6 +90,29 @@ const many_u32_orelse = many_u32 orelse unreachable;
6690
const many_u32_unwrap = many_u32.?;
6791
// ^^^^^^^^^^^^^^^ (unknown)()
6892

93+
const many_plus_u8 = many_u32 + runtime_u8;
94+
// ^^^^^^^^^^^^ ([*]const u32)()
95+
96+
const many_minus_u8 = many_u32 - runtime_u8;
97+
// ^^^^^^^^^^^^^ ([*]const u32)()
98+
99+
const many_minus_one = many_u32 - one_u32;
100+
// ^^^^^^^^^^^^^^ (usize)()
101+
102+
const many_minus_many = many_u32 - many_u32;
103+
// ^^^^^^^^^^^^^^^ (usize)()
104+
105+
const many_minus_c = many_u32 - c_u32;
106+
// ^^^^^^^^^^^^ (usize)()
107+
108+
// TODO this should be `unknown`
109+
const many_plus_i8 = many_u32 + runtime_i8;
110+
// ^^^^^^^^^^^^ ([*]const u32)()
111+
112+
// TODO this should be `unknown`
113+
const many_minus_i8 = many_u32 - runtime_i8;
114+
// ^^^^^^^^^^^^^ ([*]const u32)()
115+
69116
//
70117
// slice []T
71118
//
@@ -95,6 +142,24 @@ const slice_u32_orelse = slice_u32 orelse unreachable;
95142
const slice_u32_unwrap = slice_u32.?;
96143
// ^^^^^^^^^^^^^^^^ (unknown)()
97144

145+
const slice_plus_u8 = slice_u32 + runtime_u8;
146+
// ^^^^^^^^^^^^^ (unknown)()
147+
148+
const slice_minus_u8 = slice_u32 - runtime_u8;
149+
// ^^^^^^^^^^^^^^ (unknown)()
150+
151+
const slice_minus_one = slice_u32 - one_u32;
152+
// ^^^^^^^^^^^^^^^ (unknown)()
153+
154+
const slice_minus_many = slice_u32 - many_u32;
155+
// ^^^^^^^^^^^^^^^^ (unknown)()
156+
157+
const slice_minus_slice = slice_u32 - slice_u32;
158+
// ^^^^^^^^^^^^^^^^^ (unknown)()
159+
160+
const slice_minus_c = slice_u32 - c_u32;
161+
// ^^^^^^^^^^^^^ (unknown)()
162+
98163
//
99164
// C pointer [*c]T
100165
//
@@ -123,109 +188,34 @@ const c_u32_orelse = c_u32 orelse unreachable;
123188
const c_u32_unwrap = c_u32.?;
124189
// ^^^^^^^^^^^^ ([*c]const u32)()
125190

191+
const c_plus_u8 = c_u32 + runtime_u8;
192+
// ^^^^^^^^^ ([*c]const u32)()
193+
194+
const c_minus_u8 = c_u32 - runtime_u8;
195+
// ^^^^^^^^^^ ([*c]const u32)()
196+
197+
const c_minus_one = c_u32 - one_u32;
198+
// ^^^^^^^^^^^ (usize)()
199+
200+
const c_minus_many = c_u32 - many_u32;
201+
// ^^^^^^^^^^^^ (usize)()
202+
203+
const c_minus_c = c_u32 - c_u32;
204+
// ^^^^^^^^^ (usize)()
205+
206+
// TODO this should be `unknown`
207+
const c_plus_i8 = c_u32 + runtime_i8;
208+
// ^^^^^^^^^ ([*c]const u32)()
209+
210+
// TODO this should be `unknown`
211+
const c_minus_i8 = c_u32 - runtime_i8;
212+
// ^^^^^^^^^^ ([*c]const u32)()
213+
126214
var runtime_index: usize = 5;
215+
var runtime_u8: u8 = 1;
216+
var runtime_i8: i8 = -1;
127217

128218
comptime {
129219
// Use @compileLog to verify the expected type with the compiler:
130220
// @compileLog(many_u32_slice_len_comptime);
131221
}
132-
133-
fn pointer_arithmetic() void {
134-
var some_u8: u8 = 1;
135-
var some_i8: i8 = -1;
136-
137-
const many_plus_u8 = many_u32 + some_u8;
138-
// ^^^^^^^^^^^^ ([*]const u32)()
139-
const many_minus_u8 = many_u32 - some_u8;
140-
// ^^^^^^^^^^^^^ ([*]const u32)()
141-
142-
const c_plus_u8 = c_u32 + some_u8;
143-
// ^^^^^^^^^ ([*c]const u32)()
144-
const c_minus_u8 = c_u32 - some_u8;
145-
// ^^^^^^^^^^ ([*c]const u32)()
146-
147-
const one_minus_one = one_u32 - one_u32;
148-
// ^^^^^^^^^^^^^ (usize)()
149-
const one_minus_many = one_u32 - many_u32;
150-
// ^^^^^^^^^^^^^^ (usize)()
151-
const one_minus_c = one_u32 - c_u32;
152-
// ^^^^^^^^^^^ (usize)()
153-
154-
const many_minus_one = many_u32 - one_u32;
155-
// ^^^^^^^^^^^^^^ (usize)()
156-
const many_minus_many = many_u32 - many_u32;
157-
// ^^^^^^^^^^^^^^^ (usize)()
158-
const many_minus_c = many_u32 - c_u32;
159-
// ^^^^^^^^^^^^ (usize)()
160-
161-
const c_minus_one = c_u32 - one_u32;
162-
// ^^^^^^^^^^^ (usize)()
163-
const c_minus_many = c_u32 - many_u32;
164-
// ^^^^^^^^^^^^ (usize)()
165-
const c_minus_c = c_u32 - c_u32;
166-
// ^^^^^^^^^ (usize)()
167-
168-
_ = .{
169-
.{ &some_u8, &some_i8 },
170-
.{ many_plus_u8, many_minus_u8 },
171-
.{ c_plus_u8, c_minus_u8 },
172-
.{ one_minus_one, one_minus_many, one_minus_c },
173-
.{ many_minus_one, many_minus_many, many_minus_c },
174-
.{ c_minus_one, c_minus_many, c_minus_c },
175-
};
176-
}
177-
178-
fn invalid_pointer_arithmetic() void {
179-
var some_u8: u8 = 1;
180-
var some_i8: i8 = -1;
181-
182-
const one_plus_u8 = one_u32 + some_u8;
183-
// ^^^^^^^^^^^ (unknown)()
184-
const one_minus_u8 = one_u32 - some_u8;
185-
// ^^^^^^^^^^^^ (unknown)()
186-
187-
const slice_plus_u8 = slice_u32 + some_u8;
188-
// ^^^^^^^^^^^^^ (unknown)()
189-
const slice_minus_u8 = slice_u32 - some_u8;
190-
// ^^^^^^^^^^^^^^ (unknown)()
191-
192-
// TODO this should be `unknown`
193-
const many_plus_i8 = many_u32 + some_i8;
194-
// ^^^^^^^^^^^^ ([*]const u32)()
195-
// TODO this should be `unknown`
196-
const many_minus_i8 = many_u32 - some_i8;
197-
// ^^^^^^^^^^^^^ ([*]const u32)()
198-
199-
// TODO this should be `unknown`
200-
const c_plus_i8 = c_u32 + some_i8;
201-
// ^^^^^^^^^ ([*c]const u32)()
202-
// TODO this should be `unknown`
203-
const c_minus_i8 = c_u32 - some_i8;
204-
// ^^^^^^^^^^ ([*c]const u32)()
205-
206-
const one_minus_slice = one_u32 - slice_u32;
207-
// ^^^^^^^^^^^^^^^ (unknown)()
208-
const many_minus_slice = many_u32 - slice_u32;
209-
// ^^^^^^^^^^^^^^^^ (unknown)()
210-
const c_minus_slice = c_u32 - slice_u32;
211-
// ^^^^^^^^^^^^^ (unknown)()
212-
213-
const slice_minus_one = slice_u32 - one_u32;
214-
// ^^^^^^^^^^^^^^^ (unknown)()
215-
const slice_minus_many = slice_u32 - many_u32;
216-
// ^^^^^^^^^^^^^^^^ (unknown)()
217-
const slice_minus_slice = slice_u32 - slice_u32;
218-
// ^^^^^^^^^^^^^^^^^ (unknown)()
219-
const slice_minus_c = slice_u32 - c_u32;
220-
// ^^^^^^^^^^^^^ (unknown)()
221-
222-
_ = .{
223-
.{ &some_u8, &some_i8 },
224-
.{ one_plus_u8, one_minus_u8 },
225-
.{ slice_plus_u8, slice_minus_u8 },
226-
.{ many_plus_i8, many_minus_i8 },
227-
.{ c_plus_i8, c_minus_i8 },
228-
.{ one_minus_slice, many_minus_slice, c_minus_slice },
229-
.{ slice_minus_one, slice_minus_many, slice_minus_slice, slice_minus_c },
230-
};
231-
}

0 commit comments

Comments
 (0)