all integers returned by @typeInfo are now comptime_int

This commit is contained in:
Sahnvour 2019-03-02 18:12:56 +01:00 committed by Andrew Kelley
parent 67b4de33d2
commit 4bac22e888
4 changed files with 25 additions and 25 deletions

View File

@ -6827,18 +6827,18 @@ pub const TypeInfo = union(TypeId) {
pub const Int = struct {
is_signed: bool,
bits: u8,
bits: comptime_int,
};
pub const Float = struct {
bits: u8,
bits: comptime_int,
};
pub const Pointer = struct {
size: Size,
is_const: bool,
is_volatile: bool,
alignment: u32,
alignment: comptime_int,
child: type,
pub const Size = enum {
@ -6849,7 +6849,7 @@ pub const TypeInfo = union(TypeId) {
};
pub const Array = struct {
len: usize,
len: comptime_int,
child: type,
};
@ -6861,7 +6861,7 @@ pub const TypeInfo = union(TypeId) {
pub const StructField = struct {
name: []const u8,
offset: ?usize,
offset: ?comptime_int,
field_type: type,
};
@ -6882,7 +6882,7 @@ pub const TypeInfo = union(TypeId) {
pub const Error = struct {
name: []const u8,
value: usize,
value: comptime_int,
};
pub const ErrorSet = struct {
@ -6891,7 +6891,7 @@ pub const TypeInfo = union(TypeId) {
pub const EnumField = struct {
name: []const u8,
value: usize,
value: comptime_int,
};
pub const Enum = struct {

View File

@ -7492,18 +7492,18 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
"\n\n"
" pub const Int = struct {\n"
" is_signed: bool,\n"
" bits: u8,\n"
" bits: comptime_int,\n"
" };\n"
"\n"
" pub const Float = struct {\n"
" bits: u8,\n"
" bits: comptime_int,\n"
" };\n"
"\n"
" pub const Pointer = struct {\n"
" size: Size,\n"
" is_const: bool,\n"
" is_volatile: bool,\n"
" alignment: u32,\n"
" alignment: comptime_int,\n"
" child: type,\n"
"\n"
" pub const Size = enum {\n"
@ -7515,7 +7515,7 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
" };\n"
"\n"
" pub const Array = struct {\n"
" len: usize,\n"
" len: comptime_int,\n"
" child: type,\n"
" };\n"
"\n"
@ -7527,7 +7527,7 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
"\n"
" pub const StructField = struct {\n"
" name: []const u8,\n"
" offset: ?usize,\n"
" offset: ?comptime_int,\n"
" field_type: type,\n"
" };\n"
"\n"
@ -7548,7 +7548,7 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
"\n"
" pub const Error = struct {\n"
" name: []const u8,\n"
" value: usize,\n"
" value: comptime_int,\n"
" };\n"
"\n"
" pub const ErrorSet = struct {\n"
@ -7557,7 +7557,7 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
"\n"
" pub const EnumField = struct {\n"
" name: []const u8,\n"
" value: usize,\n"
" value: comptime_int,\n"
" };\n"
"\n"
" pub const Enum = struct {\n"
@ -7609,7 +7609,7 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
" };\n"
"\n"
" pub const Vector = struct {\n"
" len: u32,\n"
" len: comptime_int,\n"
" child: type,\n"
" };\n"
"\n"

View File

@ -17997,7 +17997,7 @@ static ConstExprValue *create_ptr_like_type_info(IrAnalyze *ira, ZigType *ptr_ty
// alignment: u32
ensure_field_index(result->type, "alignment", 3);
fields[3].special = ConstValSpecialStatic;
fields[3].type = get_int_type(ira->codegen, false, 29);
fields[3].type = ira->codegen->builtin_types.entry_num_lit_int;
bigint_init_unsigned(&fields[3].data.x_bigint, get_ptr_align(ira->codegen, attrs_type));
// child: type
ensure_field_index(result->type, "child", 4);
@ -18016,7 +18016,7 @@ static void make_enum_field_val(IrAnalyze *ira, ConstExprValue *enum_field_val,
ConstExprValue *inner_fields = create_const_vals(2);
inner_fields[1].special = ConstValSpecialStatic;
inner_fields[1].type = ira->codegen->builtin_types.entry_usize;
inner_fields[1].type = ira->codegen->builtin_types.entry_num_lit_int;
ConstExprValue *name = create_const_str_lit(ira->codegen, enum_field->name);
init_const_slice(ira->codegen, &inner_fields[0], name, 0, buf_len(enum_field->name), true);
@ -18080,7 +18080,7 @@ static Error ir_make_type_info_value(IrAnalyze *ira, IrInstruction *source_instr
// bits: u8
ensure_field_index(result->type, "bits", 1);
fields[1].special = ConstValSpecialStatic;
fields[1].type = ira->codegen->builtin_types.entry_u8;
fields[1].type = ira->codegen->builtin_types.entry_num_lit_int;
bigint_init_unsigned(&fields[1].data.x_bigint, type_entry->data.integral.bit_count);
break;
@ -18097,7 +18097,7 @@ static Error ir_make_type_info_value(IrAnalyze *ira, IrInstruction *source_instr
// bits: u8
ensure_field_index(result->type, "bits", 0);
fields[0].special = ConstValSpecialStatic;
fields[0].type = ira->codegen->builtin_types.entry_u8;
fields[0].type = ira->codegen->builtin_types.entry_num_lit_int;
bigint_init_unsigned(&fields->data.x_bigint, type_entry->data.floating.bit_count);
break;
@ -18121,7 +18121,7 @@ static Error ir_make_type_info_value(IrAnalyze *ira, IrInstruction *source_instr
// len: usize
ensure_field_index(result->type, "len", 0);
fields[0].special = ConstValSpecialStatic;
fields[0].type = ira->codegen->builtin_types.entry_usize;
fields[0].type = ira->codegen->builtin_types.entry_num_lit_int;
bigint_init_unsigned(&fields[0].data.x_bigint, type_entry->data.array.len);
// child: type
ensure_field_index(result->type, "child", 1);
@ -18142,7 +18142,7 @@ static Error ir_make_type_info_value(IrAnalyze *ira, IrInstruction *source_instr
// len: usize
ensure_field_index(result->type, "len", 0);
fields[0].special = ConstValSpecialStatic;
fields[0].type = ira->codegen->builtin_types.entry_u32;
fields[0].type = ira->codegen->builtin_types.entry_num_lit_int;
bigint_init_unsigned(&fields[0].data.x_bigint, type_entry->data.vector.len);
// child: type
ensure_field_index(result->type, "child", 1);
@ -18286,7 +18286,7 @@ static Error ir_make_type_info_value(IrAnalyze *ira, IrInstruction *source_instr
ConstExprValue *inner_fields = create_const_vals(2);
inner_fields[1].special = ConstValSpecialStatic;
inner_fields[1].type = ira->codegen->builtin_types.entry_usize;
inner_fields[1].type = ira->codegen->builtin_types.entry_num_lit_int;
ConstExprValue *name = nullptr;
if (error->cached_error_name_val != nullptr)
@ -18458,7 +18458,7 @@ static Error ir_make_type_info_value(IrAnalyze *ira, IrInstruction *source_instr
ConstExprValue *inner_fields = create_const_vals(3);
inner_fields[1].special = ConstValSpecialStatic;
inner_fields[1].type = get_optional_type(ira->codegen, ira->codegen->builtin_types.entry_usize);
inner_fields[1].type = get_optional_type(ira->codegen, ira->codegen->builtin_types.entry_num_lit_int);
if (!type_has_bits(struct_field->type_entry)) {
inner_fields[1].data.x_optional = nullptr;

View File

@ -738,14 +738,14 @@ test "math.f64_min" {
pub fn maxInt(comptime T: type) comptime_int {
const info = @typeInfo(T);
const bit_count = comptime_int(info.Int.bits); // TODO #1683
const bit_count = info.Int.bits;
if (bit_count == 0) return 0;
return (1 << (bit_count - @boolToInt(info.Int.is_signed))) - 1;
}
pub fn minInt(comptime T: type) comptime_int {
const info = @typeInfo(T);
const bit_count = comptime_int(info.Int.bits); // TODO #1683
const bit_count = info.Int.bits;
if (!info.Int.is_signed) return 0;
if (bit_count == 0) return 0;
return -(1 << (bit_count - 1));