| ... | @@ -576,3 +576,37 @@ test "comptime modification of const struct field" { | ... | @@ -576,3 +576,37 @@ test "comptime modification of const struct field" { |
| 576 | assert(res.version == 1); | 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 | } |