| ... | ... | @@ -576,3 +576,37 @@ test "comptime modification of const struct field" { |
| 576 | 576 | assert(res.version == 1); |
| 577 | 577 | } |
| 578 | 578 | } |
| 579 | |
| 580 | test "pointer to type" { |
| 581 | comptime { |
| 582 | var T: type = i32; |
| 583 | assert(T == i32); |
| 584 | var ptr = &T; |
| 585 | assert(@typeOf(ptr) == *type); |
| 586 | ptr.* = f32; |
| 587 | assert(T == f32); |
| 588 | assert(*T == *f32); |
| 589 | } |
| 590 | } |
| 591 | |
| 592 | test "slice of type" { |
| 593 | comptime { |
| 594 | var types_array = []type{ i32, f64, type }; |
| 595 | for (types_array) |T, i| { |
| 596 | switch (i) { |
| 597 | 0 => assert(T == i32), |
| 598 | 1 => assert(T == f64), |
| 599 | 2 => assert(T == type), |
| 600 | else => unreachable, |
| 601 | } |
| 602 | } |
| 603 | for (types_array[0..]) |T, i| { |
| 604 | switch (i) { |
| 605 | 0 => assert(T == i32), |
| 606 | 1 => assert(T == f64), |
| 607 | 2 => assert(T == type), |
| 608 | else => unreachable, |
| 609 | } |
| 610 | } |
| 611 | } |
| 612 | } |