std: update std.builtin.Type fields to follow naming conventions
The compiler actually doesn't need any functional changes for this: Sema does reification based on the tag indices of `std.builtin.Type` already! So, no zig1.wasm update is necessary. This change is necessary to disallow name clashes between fields and decls on a type, which is a prerequisite of #9938.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
fn isFieldOptional(comptime T: type, field_index: usize) !bool {
|
||||
const fields = @typeInfo(T).Struct.fields;
|
||||
const fields = @typeInfo(T).@"struct".fields;
|
||||
return switch (field_index) {
|
||||
inline 0...fields.len - 1 => |idx| @typeInfo(fields[idx].type) == .Optional,
|
||||
inline 0...fields.len - 1 => |idx| @typeInfo(fields[idx].type) == .optional,
|
||||
else => return error.IndexOutOfBounds,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
const Writer = struct {
|
||||
pub fn printValue(self: *Writer, value: anytype) !void {
|
||||
switch (@typeInfo(@TypeOf(value))) {
|
||||
.Int => {
|
||||
.int => {
|
||||
return self.writeInt(value);
|
||||
},
|
||||
.Float => {
|
||||
.float => {
|
||||
return self.writeFloat(value);
|
||||
},
|
||||
.Pointer => {
|
||||
.pointer => {
|
||||
return self.write(value);
|
||||
},
|
||||
else => {
|
||||
|
||||
@@ -95,13 +95,13 @@ const Small = enum {
|
||||
four,
|
||||
};
|
||||
test "std.meta.Tag" {
|
||||
try expect(@typeInfo(Small).Enum.tag_type == u2);
|
||||
try expect(@typeInfo(Small).@"enum".tag_type == u2);
|
||||
}
|
||||
|
||||
// @typeInfo tells us the field count and the fields names:
|
||||
test "@typeInfo" {
|
||||
try expect(@typeInfo(Small).Enum.fields.len == 4);
|
||||
try expect(mem.eql(u8, @typeInfo(Small).Enum.fields[1].name, "two"));
|
||||
try expect(@typeInfo(Small).@"enum".fields.len == 4);
|
||||
try expect(mem.eql(u8, @typeInfo(Small).@"enum".fields[1].name, "two"));
|
||||
}
|
||||
|
||||
// @tagName gives a [:0]const u8 representation of an enum value:
|
||||
|
||||
@@ -10,10 +10,10 @@ test "error union" {
|
||||
foo = error.SomeError;
|
||||
|
||||
// Use compile-time reflection to access the payload type of an error union:
|
||||
try comptime expect(@typeInfo(@TypeOf(foo)).ErrorUnion.payload == i32);
|
||||
try comptime expect(@typeInfo(@TypeOf(foo)).error_union.payload == i32);
|
||||
|
||||
// Use compile-time reflection to access the error set type of an error union:
|
||||
try comptime expect(@typeInfo(@TypeOf(foo)).ErrorUnion.error_set == anyerror);
|
||||
try comptime expect(@typeInfo(@TypeOf(foo)).error_union.error_set == anyerror);
|
||||
}
|
||||
|
||||
// test
|
||||
|
||||
@@ -3,10 +3,10 @@ const math = std.math;
|
||||
const testing = std.testing;
|
||||
|
||||
test "fn reflection" {
|
||||
try testing.expect(@typeInfo(@TypeOf(testing.expect)).Fn.params[0].type.? == bool);
|
||||
try testing.expect(@typeInfo(@TypeOf(testing.tmpDir)).Fn.return_type.? == testing.TmpDir);
|
||||
try testing.expect(@typeInfo(@TypeOf(testing.expect)).@"fn".params[0].type.? == bool);
|
||||
try testing.expect(@typeInfo(@TypeOf(testing.tmpDir)).@"fn".return_type.? == testing.TmpDir);
|
||||
|
||||
try testing.expect(@typeInfo(@TypeOf(math.Log2Int)).Fn.is_generic);
|
||||
try testing.expect(@typeInfo(@TypeOf(math.Log2Int)).@"fn".is_generic);
|
||||
}
|
||||
|
||||
// test
|
||||
|
||||
@@ -17,8 +17,8 @@ const AnySlice = union(enum) {
|
||||
};
|
||||
|
||||
fn withFor(any: AnySlice) usize {
|
||||
const Tag = @typeInfo(AnySlice).Union.tag_type.?;
|
||||
inline for (@typeInfo(Tag).Enum.fields) |field| {
|
||||
const Tag = @typeInfo(AnySlice).@"union".tag_type.?;
|
||||
inline for (@typeInfo(Tag).@"enum".fields) |field| {
|
||||
// With `inline for` the function gets generated as
|
||||
// a series of `if` statements relying on the optimizer
|
||||
// to convert it to a switch.
|
||||
|
||||
@@ -3,11 +3,11 @@ const expect = std.testing.expect;
|
||||
const expectError = std.testing.expectError;
|
||||
|
||||
fn isFieldOptional(comptime T: type, field_index: usize) !bool {
|
||||
const fields = @typeInfo(T).Struct.fields;
|
||||
const fields = @typeInfo(T).@"struct".fields;
|
||||
return switch (field_index) {
|
||||
// This prong is analyzed twice with `idx` being a
|
||||
// comptime-known value each time.
|
||||
inline 0, 1 => |idx| @typeInfo(fields[idx].type) == .Optional,
|
||||
inline 0, 1 => |idx| @typeInfo(fields[idx].type) == .optional,
|
||||
else => return error.IndexOutOfBounds,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ test "optional type" {
|
||||
foo = 1234;
|
||||
|
||||
// Use compile-time reflection to access the child type of the optional:
|
||||
try comptime expect(@typeInfo(@TypeOf(foo)).Optional.child == i32);
|
||||
try comptime expect(@typeInfo(@TypeOf(foo)).optional.child == i32);
|
||||
}
|
||||
|
||||
// test
|
||||
|
||||
@@ -17,7 +17,7 @@ test "pointer casting" {
|
||||
|
||||
test "pointer child type" {
|
||||
// pointer types have a `child` field which tells you the type they point to.
|
||||
try expect(@typeInfo(*u32).Pointer.child == u32);
|
||||
try expect(@typeInfo(*u32).pointer.child == u32);
|
||||
}
|
||||
|
||||
// test
|
||||
|
||||
@@ -8,7 +8,7 @@ test "variable alignment" {
|
||||
try expect(@TypeOf(&x) == *i32);
|
||||
try expect(*i32 == *align(align_of_i32) i32);
|
||||
if (builtin.target.cpu.arch == .x86_64) {
|
||||
try expect(@typeInfo(*i32).Pointer.alignment == 4);
|
||||
try expect(@typeInfo(*i32).pointer.alignment == 4);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ const expect = @import("std").testing.expect;
|
||||
var foo: u8 align(4) = 100;
|
||||
|
||||
test "global variable alignment" {
|
||||
try expect(@typeInfo(@TypeOf(&foo)).Pointer.alignment == 4);
|
||||
try expect(@typeInfo(@TypeOf(&foo)).pointer.alignment == 4);
|
||||
try expect(@TypeOf(&foo) == *align(4) u8);
|
||||
const as_pointer_to_array: *align(4) [1]u8 = &foo;
|
||||
const as_slice: []align(4) u8 = as_pointer_to_array;
|
||||
|
||||
@@ -5,7 +5,7 @@ pub extern "c" fn printf(format: [*:0]const u8, ...) c_int;
|
||||
|
||||
test "variadic function" {
|
||||
try testing.expect(printf("Hello, world!\n") == 14);
|
||||
try testing.expect(@typeInfo(@TypeOf(printf)).Fn.is_var_args);
|
||||
try testing.expect(@typeInfo(@TypeOf(printf)).@"fn".is_var_args);
|
||||
}
|
||||
|
||||
// test
|
||||
|
||||
Reference in New Issue
Block a user