authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-06 17:13:45-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-06 17:13:45-05:00
log3b5c71d2a501e1423d064ca9a2300e2e898a4fd4
tree05591d777d8bcd375d05c7df3bca0e5eef0d4c1a
parent53913acaf70f14c519b0fa0e3771d3dc641ac86b
signaturelock-open Commit is signed but in an unrecognized format.

fix regression with `@TypeInfo`


2 files changed, 20 insertions(+), 20 deletions(-)

src/ir.cpp+18-18
...@@ -22601,40 +22601,40 @@ static Error ir_make_type_info_decls(IrAnalyze *ira, IrInstruction *source_instr...@@ -22601,40 +22601,40 @@ static Error ir_make_type_info_decls(IrAnalyze *ira, IrInstruction *source_instr
22601 // is_var_args: bool22601 // is_var_args: bool
22602 ensure_field_index(fn_decl_val->type, "is_var_args", 2);22602 ensure_field_index(fn_decl_val->type, "is_var_args", 2);
22603 bool is_varargs = fn_node->is_var_args;22603 bool is_varargs = fn_node->is_var_args;
22604 fn_decl_fields[3]->special = ConstValSpecialStatic;22604 fn_decl_fields[2]->special = ConstValSpecialStatic;
22605 fn_decl_fields[3]->type = ira->codegen->builtin_types.entry_bool;22605 fn_decl_fields[2]->type = ira->codegen->builtin_types.entry_bool;
22606 fn_decl_fields[3]->data.x_bool = is_varargs;22606 fn_decl_fields[2]->data.x_bool = is_varargs;
22607 // is_extern: bool22607 // is_extern: bool
22608 ensure_field_index(fn_decl_val->type, "is_extern", 3);22608 ensure_field_index(fn_decl_val->type, "is_extern", 3);
22609 fn_decl_fields[4]->special = ConstValSpecialStatic;22609 fn_decl_fields[3]->special = ConstValSpecialStatic;
22610 fn_decl_fields[4]->type = ira->codegen->builtin_types.entry_bool;22610 fn_decl_fields[3]->type = ira->codegen->builtin_types.entry_bool;
22611 fn_decl_fields[4]->data.x_bool = fn_node->is_extern;22611 fn_decl_fields[3]->data.x_bool = fn_node->is_extern;
22612 // is_export: bool22612 // is_export: bool
22613 ensure_field_index(fn_decl_val->type, "is_export", 4);22613 ensure_field_index(fn_decl_val->type, "is_export", 4);
22614 fn_decl_fields[5]->special = ConstValSpecialStatic;22614 fn_decl_fields[4]->special = ConstValSpecialStatic;
22615 fn_decl_fields[5]->type = ira->codegen->builtin_types.entry_bool;22615 fn_decl_fields[4]->type = ira->codegen->builtin_types.entry_bool;
22616 fn_decl_fields[5]->data.x_bool = fn_node->is_export;22616 fn_decl_fields[4]->data.x_bool = fn_node->is_export;
22617 // lib_name: ?[]const u822617 // lib_name: ?[]const u8
22618 ensure_field_index(fn_decl_val->type, "lib_name", 5);22618 ensure_field_index(fn_decl_val->type, "lib_name", 5);
22619 fn_decl_fields[6]->special = ConstValSpecialStatic;22619 fn_decl_fields[5]->special = ConstValSpecialStatic;
22620 ZigType *u8_ptr = get_pointer_to_type_extra(22620 ZigType *u8_ptr = get_pointer_to_type_extra(
22621 ira->codegen, ira->codegen->builtin_types.entry_u8,22621 ira->codegen, ira->codegen->builtin_types.entry_u8,
22622 true, false, PtrLenUnknown,22622 true, false, PtrLenUnknown,
22623 0, 0, 0, false);22623 0, 0, 0, false);
22624 fn_decl_fields[6]->type = get_optional_type(ira->codegen, get_slice_type(ira->codegen, u8_ptr));22624 fn_decl_fields[5]->type = get_optional_type(ira->codegen, get_slice_type(ira->codegen, u8_ptr));
22625 if (fn_node->is_extern && fn_node->lib_name != nullptr && buf_len(fn_node->lib_name) > 0) {22625 if (fn_node->is_extern && fn_node->lib_name != nullptr && buf_len(fn_node->lib_name) > 0) {
22626 fn_decl_fields[6]->data.x_optional = create_const_vals(1);22626 fn_decl_fields[5]->data.x_optional = create_const_vals(1);
22627 ZigValue *lib_name = create_const_str_lit(ira->codegen, fn_node->lib_name)->data.x_ptr.data.ref.pointee;22627 ZigValue *lib_name = create_const_str_lit(ira->codegen, fn_node->lib_name)->data.x_ptr.data.ref.pointee;
22628 init_const_slice(ira->codegen, fn_decl_fields[6]->data.x_optional, lib_name, 0,22628 init_const_slice(ira->codegen, fn_decl_fields[5]->data.x_optional, lib_name, 0,
22629 buf_len(fn_node->lib_name), true);22629 buf_len(fn_node->lib_name), true);
22630 } else {22630 } else {
22631 fn_decl_fields[6]->data.x_optional = nullptr;22631 fn_decl_fields[5]->data.x_optional = nullptr;
22632 }22632 }
22633 // return_type: type22633 // return_type: type
22634 ensure_field_index(fn_decl_val->type, "return_type", 6);22634 ensure_field_index(fn_decl_val->type, "return_type", 6);
22635 fn_decl_fields[7]->special = ConstValSpecialStatic;22635 fn_decl_fields[6]->special = ConstValSpecialStatic;
22636 fn_decl_fields[7]->type = ira->codegen->builtin_types.entry_type;22636 fn_decl_fields[6]->type = ira->codegen->builtin_types.entry_type;
22637 fn_decl_fields[7]->data.x_type = fn_entry->type_entry->data.fn.fn_type_id.return_type;22637 fn_decl_fields[6]->data.x_type = fn_entry->type_entry->data.fn.fn_type_id.return_type;
22638 // arg_names: [][] const u822638 // arg_names: [][] const u8
22639 ensure_field_index(fn_decl_val->type, "arg_names", 7);22639 ensure_field_index(fn_decl_val->type, "arg_names", 7);
22640 size_t fn_arg_count = fn_entry->variable_list.length;22640 size_t fn_arg_count = fn_entry->variable_list.length;
...@@ -22645,7 +22645,7 @@ static Error ir_make_type_info_decls(IrAnalyze *ira, IrInstruction *source_instr...@@ -22645,7 +22645,7 @@ static Error ir_make_type_info_decls(IrAnalyze *ira, IrInstruction *source_instr
22645 fn_arg_name_array->data.x_array.special = ConstArraySpecialNone;22645 fn_arg_name_array->data.x_array.special = ConstArraySpecialNone;
22646 fn_arg_name_array->data.x_array.data.s_none.elements = create_const_vals(fn_arg_count);22646 fn_arg_name_array->data.x_array.data.s_none.elements = create_const_vals(fn_arg_count);
2264722647
22648 init_const_slice(ira->codegen, fn_decl_fields[8], fn_arg_name_array, 0, fn_arg_count, false);22648 init_const_slice(ira->codegen, fn_decl_fields[7], fn_arg_name_array, 0, fn_arg_count, false);
2264922649
22650 for (size_t fn_arg_index = 0; fn_arg_index < fn_arg_count; fn_arg_index++) {22650 for (size_t fn_arg_index = 0; fn_arg_index < fn_arg_count; fn_arg_index++) {
22651 ZigVar *arg_var = fn_entry->variable_list.at(fn_arg_index);22651 ZigVar *arg_var = fn_entry->variable_list.at(fn_arg_index);
test/stage1/behavior/fn.zig+2-2
...@@ -186,9 +186,9 @@ test "return inner function which references comptime variable of outer function...@@ -186,9 +186,9 @@ test "return inner function which references comptime variable of outer function
186186
187test "extern struct with stdcallcc fn pointer" {187test "extern struct with stdcallcc fn pointer" {
188 const S = extern struct {188 const S = extern struct {
189 ptr: stdcallcc fn () i32,189 ptr: fn () callconv(.Stdcall) i32,
190190
191 stdcallcc fn foo() i32 {191 fn foo() callconv(.Stdcall) i32 {
192 return 1234;192 return 1234;
193 }193 }
194 };194 };