| author | |
| committer | |
| log | 7b2a936173165002105ba5e76bed69654e132fea |
| tree | 54a77e6d627b2cdec08b57d4402f35011fd064df |
| parent | 4832677c3bce61725c67306c4683921296abdff9 |
16 files changed, 145 insertions(+), 211 deletions(-)
doc/langref.html.in+30-37| ... | @@ -4275,7 +4275,7 @@ test "using @typeInfo with runtime values" { | ... | @@ -4275,7 +4275,7 @@ test "using @typeInfo with runtime values" { |
| 4275 | } | 4275 | } |
| 4276 | 4276 | ||
| 4277 | // Calls to `isFieldOptional` on `Struct1` get unrolled to an equivalent | 4277 | // Calls to `isFieldOptional` on `Struct1` get unrolled to an equivalent |
| 4278 | // of this function: | 4278 | // of this function: |
| 4279 | fn isFieldOptionalUnrolled(field_index: usize) !bool { | 4279 | fn isFieldOptionalUnrolled(field_index: usize) !bool { |
| 4280 | return switch (field_index) { | 4280 | return switch (field_index) { |
| 4281 | 0 => false, | 4281 | 0 => false, |
| ... | @@ -7800,7 +7800,7 @@ comptime { | ... | @@ -7800,7 +7800,7 @@ comptime { |
| 7800 | {#header_close#} | 7800 | {#header_close#} |
| 7801 | 7801 | ||
| 7802 | {#header_open|@call#} | 7802 | {#header_open|@call#} |
| 7803 | <pre>{#syntax#}@call(options: std.builtin.CallOptions, function: anytype, args: anytype) anytype{#endsyntax#}</pre> | 7803 | <pre>{#syntax#}@call(modifier: std.builtin.CallModifier, function: anytype, args: anytype) anytype{#endsyntax#}</pre> |
| 7804 | <p> | 7804 | <p> |
| 7805 | Calls a function, in the same way that invoking an expression with parentheses does: | 7805 | Calls a function, in the same way that invoking an expression with parentheses does: |
| 7806 | </p> | 7806 | </p> |
| ... | @@ -7808,7 +7808,7 @@ comptime { | ... | @@ -7808,7 +7808,7 @@ comptime { |
| 7808 | const expect = @import("std").testing.expect; | 7808 | const expect = @import("std").testing.expect; |
| 7809 | 7809 | ||
| 7810 | test "noinline function call" { | 7810 | test "noinline function call" { |
| 7811 | try expect(@call(.{}, add, .{3, 9}) == 12); | 7811 | try expect(@call(.auto, add, .{3, 9}) == 12); |
| 7812 | } | 7812 | } |
| 7813 | 7813 | ||
| 7814 | fn add(a: i32, b: i32) i32 { | 7814 | fn add(a: i32, b: i32) i32 { |
| ... | @@ -7817,48 +7817,41 @@ fn add(a: i32, b: i32) i32 { | ... | @@ -7817,48 +7817,41 @@ fn add(a: i32, b: i32) i32 { |
| 7817 | {#code_end#} | 7817 | {#code_end#} |
| 7818 | <p> | 7818 | <p> |
| 7819 | {#syntax#}@call{#endsyntax#} allows more flexibility than normal function call syntax does. The | 7819 | {#syntax#}@call{#endsyntax#} allows more flexibility than normal function call syntax does. The |
| 7820 | {#syntax#}CallOptions{#endsyntax#} struct is reproduced here: | 7820 | {#syntax#}CallModifier{#endsyntax#} enum is reproduced here: |
| 7821 | </p> | 7821 | </p> |
| 7822 | {#syntax_block|zig|builtin.CallOptions struct#} | 7822 | {#syntax_block|zig|builtin.CallModifier struct#} |
| 7823 | pub const CallOptions = struct { | 7823 | pub const CallModifier = enum { |
| 7824 | modifier: Modifier = .auto, | 7824 | /// Equivalent to function call syntax. |
| 7825 | 7825 | auto, | |
| 7826 | /// Only valid when `Modifier` is `Modifier.async_kw`. | ||
| 7827 | stack: ?[]align(std.Target.stack_align) u8 = null, | ||
| 7828 | |||
| 7829 | pub const Modifier = enum { | ||
| 7830 | /// Equivalent to function call syntax. | ||
| 7831 | auto, | ||
| 7832 | 7826 | ||
| 7833 | /// Equivalent to async keyword used with function call syntax. | 7827 | /// Equivalent to async keyword used with function call syntax. |
| 7834 | async_kw, | 7828 | async_kw, |
| 7835 | 7829 | ||
| 7836 | /// Prevents tail call optimization. This guarantees that the return | 7830 | /// Prevents tail call optimization. This guarantees that the return |
| 7837 | /// address will point to the callsite, as opposed to the callsite's | 7831 | /// address will point to the callsite, as opposed to the callsite's |
| 7838 | /// callsite. If the call is otherwise required to be tail-called | 7832 | /// callsite. If the call is otherwise required to be tail-called |
| 7839 | /// or inlined, a compile error is emitted instead. | 7833 | /// or inlined, a compile error is emitted instead. |
| 7840 | never_tail, | 7834 | never_tail, |
| 7841 | 7835 | ||
| 7842 | /// Guarantees that the call will not be inlined. If the call is | 7836 | /// Guarantees that the call will not be inlined. If the call is |
| 7843 | /// otherwise required to be inlined, a compile error is emitted instead. | 7837 | /// otherwise required to be inlined, a compile error is emitted instead. |
| 7844 | never_inline, | 7838 | never_inline, |
| 7845 | 7839 | ||
| 7846 | /// Asserts that the function call will not suspend. This allows a | 7840 | /// Asserts that the function call will not suspend. This allows a |
| 7847 | /// non-async function to call an async function. | 7841 | /// non-async function to call an async function. |
| 7848 | no_async, | 7842 | no_async, |
| 7849 | 7843 | ||
| 7850 | /// Guarantees that the call will be generated with tail call optimization. | 7844 | /// Guarantees that the call will be generated with tail call optimization. |
| 7851 | /// If this is not possible, a compile error is emitted instead. | 7845 | /// If this is not possible, a compile error is emitted instead. |
| 7852 | always_tail, | 7846 | always_tail, |
| 7853 | 7847 | ||
| 7854 | /// Guarantees that the call will inlined at the callsite. | 7848 | /// Guarantees that the call will inlined at the callsite. |
| 7855 | /// If this is not possible, a compile error is emitted instead. | 7849 | /// If this is not possible, a compile error is emitted instead. |
| 7856 | always_inline, | 7850 | always_inline, |
| 7857 | 7851 | ||
| 7858 | /// Evaluates the call at compile-time. If the call cannot be completed at | 7852 | /// Evaluates the call at compile-time. If the call cannot be completed at |
| 7859 | /// compile-time, a compile error is emitted instead. | 7853 | /// compile-time, a compile error is emitted instead. |
| 7860 | compile_time, | 7854 | compile_time, |
| 7861 | }; | ||
| 7862 | }; | 7855 | }; |
| 7863 | {#end_syntax_block#} | 7856 | {#end_syntax_block#} |
| 7864 | {#header_close#} | 7857 | {#header_close#} |
lib/std/builtin.zig+32-39| ... | @@ -591,45 +591,38 @@ fn testVersionParse() !void { | ... | @@ -591,45 +591,38 @@ fn testVersionParse() !void { |
| 591 | 591 | ||
| 592 | /// This data structure is used by the Zig language code generation and | 592 | /// This data structure is used by the Zig language code generation and |
| 593 | /// therefore must be kept in sync with the compiler implementation. | 593 | /// therefore must be kept in sync with the compiler implementation. |
| 594 | pub const CallOptions = struct { | 594 | pub const CallModifier = enum { |
| 595 | modifier: Modifier = .auto, | 595 | /// Equivalent to function call syntax. |
| 596 | 596 | auto, | |
| 597 | /// Only valid when `Modifier` is `Modifier.async_kw`. | 597 | |
| 598 | stack: ?[]align(std.Target.stack_align) u8 = null, | 598 | /// Equivalent to async keyword used with function call syntax. |
| 599 | 599 | async_kw, | |
| 600 | pub const Modifier = enum { | 600 | |
| 601 | /// Equivalent to function call syntax. | 601 | /// Prevents tail call optimization. This guarantees that the return |
| 602 | auto, | 602 | /// address will point to the callsite, as opposed to the callsite's |
| 603 | 603 | /// callsite. If the call is otherwise required to be tail-called | |
| 604 | /// Equivalent to async keyword used with function call syntax. | 604 | /// or inlined, a compile error is emitted instead. |
| 605 | async_kw, | 605 | never_tail, |
| 606 | 606 | ||
| 607 | /// Prevents tail call optimization. This guarantees that the return | 607 | /// Guarantees that the call will not be inlined. If the call is |
| 608 | /// address will point to the callsite, as opposed to the callsite's | 608 | /// otherwise required to be inlined, a compile error is emitted instead. |
| 609 | /// callsite. If the call is otherwise required to be tail-called | 609 | never_inline, |
| 610 | /// or inlined, a compile error is emitted instead. | 610 | |
| 611 | never_tail, | 611 | /// Asserts that the function call will not suspend. This allows a |
| 612 | 612 | /// non-async function to call an async function. | |
| 613 | /// Guarantees that the call will not be inlined. If the call is | 613 | no_async, |
| 614 | /// otherwise required to be inlined, a compile error is emitted instead. | 614 | |
| 615 | never_inline, | 615 | /// Guarantees that the call will be generated with tail call optimization. |
| 616 | 616 | /// If this is not possible, a compile error is emitted instead. | |
| 617 | /// Asserts that the function call will not suspend. This allows a | 617 | always_tail, |
| 618 | /// non-async function to call an async function. | 618 | |
| 619 | no_async, | 619 | /// Guarantees that the call will inlined at the callsite. |
| 620 | 620 | /// If this is not possible, a compile error is emitted instead. | |
| 621 | /// Guarantees that the call will be generated with tail call optimization. | 621 | always_inline, |
| 622 | /// If this is not possible, a compile error is emitted instead. | 622 | |
| 623 | always_tail, | 623 | /// Evaluates the call at compile-time. If the call cannot be completed at |
| 624 | 624 | /// compile-time, a compile error is emitted instead. | |
| 625 | /// Guarantees that the call will inlined at the callsite. | 625 | compile_time, |
| 626 | /// If this is not possible, a compile error is emitted instead. | ||
| 627 | always_inline, | ||
| 628 | |||
| 629 | /// Evaluates the call at compile-time. If the call cannot be completed at | ||
| 630 | /// compile-time, a compile error is emitted instead. | ||
| 631 | compile_time, | ||
| 632 | }; | ||
| 633 | }; | 626 | }; |
| 634 | 627 | ||
| 635 | /// This data structure is used by the Zig language code generation and | 628 | /// This data structure is used by the Zig language code generation and |
src/AstGen.zig+3-3| ... | @@ -8297,11 +8297,11 @@ fn builtinCall( | ... | @@ -8297,11 +8297,11 @@ fn builtinCall( |
| 8297 | return rvalue(gz, ri, result, node); | 8297 | return rvalue(gz, ri, result, node); |
| 8298 | }, | 8298 | }, |
| 8299 | .call => { | 8299 | .call => { |
| 8300 | const options = try comptimeExpr(gz, scope, .{ .rl = .{ .ty = .call_options_type } }, params[0]); | 8300 | const modifier = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .modifier_type } }, params[0]); |
| 8301 | const callee = try calleeExpr(gz, scope, params[1]); | 8301 | const callee = try calleeExpr(gz, scope, params[1]); |
| 8302 | const args = try expr(gz, scope, .{ .rl = .none }, params[2]); | 8302 | const args = try expr(gz, scope, .{ .rl = .none }, params[2]); |
| 8303 | const result = try gz.addPlNode(.builtin_call, node, Zir.Inst.BuiltinCall{ | 8303 | const result = try gz.addPlNode(.builtin_call, node, Zir.Inst.BuiltinCall{ |
| 8304 | .options = options, | 8304 | .modifier = modifier, |
| 8305 | .callee = callee, | 8305 | .callee = callee, |
| 8306 | .args = args, | 8306 | .args = args, |
| 8307 | .flags = .{ | 8307 | .flags = .{ |
| ... | @@ -8674,7 +8674,7 @@ fn callExpr( | ... | @@ -8674,7 +8674,7 @@ fn callExpr( |
| 8674 | const astgen = gz.astgen; | 8674 | const astgen = gz.astgen; |
| 8675 | 8675 | ||
| 8676 | const callee = try calleeExpr(gz, scope, call.ast.fn_expr); | 8676 | const callee = try calleeExpr(gz, scope, call.ast.fn_expr); |
| 8677 | const modifier: std.builtin.CallOptions.Modifier = blk: { | 8677 | const modifier: std.builtin.CallModifier = blk: { |
| 8678 | if (gz.force_comptime) { | 8678 | if (gz.force_comptime) { |
| 8679 | break :blk .compile_time; | 8679 | break :blk .compile_time; |
| 8680 | } | 8680 | } |
src/Sema.zig+37-89| ... | @@ -5986,7 +5986,7 @@ fn zirCall( | ... | @@ -5986,7 +5986,7 @@ fn zirCall( |
| 5986 | const extra = sema.code.extraData(Zir.Inst.Call, inst_data.payload_index); | 5986 | const extra = sema.code.extraData(Zir.Inst.Call, inst_data.payload_index); |
| 5987 | const args_len = extra.data.flags.args_len; | 5987 | const args_len = extra.data.flags.args_len; |
| 5988 | 5988 | ||
| 5989 | const modifier = @intToEnum(std.builtin.CallOptions.Modifier, extra.data.flags.packed_modifier); | 5989 | const modifier = @intToEnum(std.builtin.CallModifier, extra.data.flags.packed_modifier); |
| 5990 | const ensure_result_used = extra.data.flags.ensure_result_used; | 5990 | const ensure_result_used = extra.data.flags.ensure_result_used; |
| 5991 | const pop_error_return_trace = extra.data.flags.pop_error_return_trace; | 5991 | const pop_error_return_trace = extra.data.flags.pop_error_return_trace; |
| 5992 | 5992 | ||
| ... | @@ -6222,7 +6222,7 @@ fn analyzeCall( | ... | @@ -6222,7 +6222,7 @@ fn analyzeCall( |
| 6222 | func: Air.Inst.Ref, | 6222 | func: Air.Inst.Ref, |
| 6223 | func_src: LazySrcLoc, | 6223 | func_src: LazySrcLoc, |
| 6224 | call_src: LazySrcLoc, | 6224 | call_src: LazySrcLoc, |
| 6225 | modifier: std.builtin.CallOptions.Modifier, | 6225 | modifier: std.builtin.CallModifier, |
| 6226 | ensure_result_used: bool, | 6226 | ensure_result_used: bool, |
| 6227 | uncasted_args: []const Air.Inst.Ref, | 6227 | uncasted_args: []const Air.Inst.Ref, |
| 6228 | bound_arg_src: ?LazySrcLoc, | 6228 | bound_arg_src: ?LazySrcLoc, |
| ... | @@ -20751,118 +20751,66 @@ fn zirMulAdd(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air. | ... | @@ -20751,118 +20751,66 @@ fn zirMulAdd(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air. |
| 20751 | }); | 20751 | }); |
| 20752 | } | 20752 | } |
| 20753 | 20753 | ||
| 20754 | fn resolveCallOptions( | 20754 | fn zirBuiltinCall(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 20755 | sema: *Sema, | 20755 | const tracy = trace(@src()); |
| 20756 | block: *Block, | 20756 | defer tracy.end(); |
| 20757 | src: LazySrcLoc, | ||
| 20758 | zir_ref: Zir.Inst.Ref, | ||
| 20759 | is_comptime: bool, | ||
| 20760 | is_nosuspend: bool, | ||
| 20761 | func: Air.Inst.Ref, | ||
| 20762 | func_src: LazySrcLoc, | ||
| 20763 | ) CompileError!std.builtin.CallOptions.Modifier { | ||
| 20764 | const call_options_ty = try sema.getBuiltinType("CallOptions"); | ||
| 20765 | const air_ref = try sema.resolveInst(zir_ref); | ||
| 20766 | const options = try sema.coerce(block, call_options_ty, air_ref, src); | ||
| 20767 | |||
| 20768 | const modifier_src = sema.maybeOptionsSrc(block, src, "modifier"); | ||
| 20769 | const stack_src = sema.maybeOptionsSrc(block, src, "stack"); | ||
| 20770 | |||
| 20771 | const modifier = try sema.fieldVal(block, src, options, "modifier", modifier_src); | ||
| 20772 | const modifier_val = try sema.resolveConstValue(block, modifier_src, modifier, "call modifier must be comptime-known"); | ||
| 20773 | const wanted_modifier = modifier_val.toEnum(std.builtin.CallOptions.Modifier); | ||
| 20774 | 20757 | ||
| 20775 | const stack = try sema.fieldVal(block, src, options, "stack", stack_src); | 20758 | const inst_data = sema.code.instructions.items(.data)[inst].pl_node; |
| 20776 | const stack_val = try sema.resolveConstValue(block, stack_src, stack, "call stack value must be comptime-known"); | 20759 | const modifier_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 20760 | const func_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; | ||
| 20761 | const args_src: LazySrcLoc = .{ .node_offset_builtin_call_arg2 = inst_data.src_node }; | ||
| 20762 | const call_src = inst_data.src(); | ||
| 20777 | 20763 | ||
| 20778 | if (!stack_val.isNull()) { | 20764 | const extra = sema.code.extraData(Zir.Inst.BuiltinCall, inst_data.payload_index).data; |
| 20779 | return sema.fail(block, stack_src, "TODO: implement @call with stack", .{}); | 20765 | var func = try sema.resolveInst(extra.callee); |
| 20780 | } | ||
| 20781 | 20766 | ||
| 20782 | switch (wanted_modifier) { | 20767 | const modifier_ty = try sema.getBuiltinType("CallModifier"); |
| 20768 | const air_ref = try sema.resolveInst(extra.modifier); | ||
| 20769 | const modifier_ref = try sema.coerce(block, modifier_ty, air_ref, modifier_src); | ||
| 20770 | const modifier_val = try sema.resolveConstValue(block, modifier_src, modifier_ref, "call modifier must be comptime-known"); | ||
| 20771 | var modifier = modifier_val.toEnum(std.builtin.CallModifier); | ||
| 20772 | switch (modifier) { | ||
| 20783 | // These can be upgraded to comptime or nosuspend calls. | 20773 | // These can be upgraded to comptime or nosuspend calls. |
| 20784 | .auto, .never_tail, .no_async => { | 20774 | .auto, .never_tail, .no_async => { |
| 20785 | if (is_comptime) { | 20775 | if (extra.flags.is_comptime) { |
| 20786 | if (wanted_modifier == .never_tail) { | 20776 | if (modifier == .never_tail) { |
| 20787 | return sema.fail(block, modifier_src, "unable to perform 'never_tail' call at compile-time", .{}); | 20777 | return sema.fail(block, modifier_src, "unable to perform 'never_tail' call at compile-time", .{}); |
| 20788 | } | 20778 | } |
| 20789 | return .compile_time; | 20779 | modifier = .compile_time; |
| 20790 | } | 20780 | } else if (extra.flags.is_nosuspend) { |
| 20791 | if (is_nosuspend) { | 20781 | modifier = .no_async; |
| 20792 | return .no_async; | ||
| 20793 | } | 20782 | } |
| 20794 | return wanted_modifier; | ||
| 20795 | }, | 20783 | }, |
| 20796 | // These can be upgraded to comptime. nosuspend bit can be safely ignored. | 20784 | // These can be upgraded to comptime. nosuspend bit can be safely ignored. |
| 20797 | .always_inline, .compile_time => { | 20785 | .always_inline, .compile_time => { |
| 20798 | _ = (try sema.resolveDefinedValue(block, func_src, func)) orelse { | 20786 | _ = (try sema.resolveDefinedValue(block, func_src, func)) orelse { |
| 20799 | return sema.fail(block, func_src, "modifier '{s}' requires a comptime-known function", .{@tagName(wanted_modifier)}); | 20787 | return sema.fail(block, func_src, "modifier '{s}' requires a comptime-known function", .{@tagName(modifier)}); |
| 20800 | }; | 20788 | }; |
| 20801 | 20789 | ||
| 20802 | if (is_comptime) { | 20790 | if (extra.flags.is_comptime) { |
| 20803 | return .compile_time; | 20791 | modifier = .compile_time; |
| 20804 | } | 20792 | } |
| 20805 | return wanted_modifier; | ||
| 20806 | }, | 20793 | }, |
| 20807 | .always_tail => { | 20794 | .always_tail => { |
| 20808 | if (is_comptime) { | 20795 | if (extra.flags.is_comptime) { |
| 20809 | return .compile_time; | 20796 | modifier = .compile_time; |
| 20810 | } | 20797 | } |
| 20811 | return wanted_modifier; | ||
| 20812 | }, | 20798 | }, |
| 20813 | .async_kw => { | 20799 | .async_kw => { |
| 20814 | if (is_nosuspend) { | 20800 | if (extra.flags.is_nosuspend) { |
| 20815 | return sema.fail(block, modifier_src, "modifier 'async_kw' cannot be used inside nosuspend block", .{}); | 20801 | return sema.fail(block, modifier_src, "modifier 'async_kw' cannot be used inside nosuspend block", .{}); |
| 20816 | } | 20802 | } |
| 20817 | if (is_comptime) { | 20803 | if (extra.flags.is_comptime) { |
| 20818 | return sema.fail(block, modifier_src, "modifier 'async_kw' cannot be used in combination with comptime function call", .{}); | 20804 | return sema.fail(block, modifier_src, "modifier 'async_kw' cannot be used in combination with comptime function call", .{}); |
| 20819 | } | 20805 | } |
| 20820 | return wanted_modifier; | ||
| 20821 | }, | 20806 | }, |
| 20822 | .never_inline => { | 20807 | .never_inline => { |
| 20823 | if (is_comptime) { | 20808 | if (extra.flags.is_comptime) { |
| 20824 | return sema.fail(block, modifier_src, "unable to perform 'never_inline' call at compile-time", .{}); | 20809 | return sema.fail(block, modifier_src, "unable to perform 'never_inline' call at compile-time", .{}); |
| 20825 | } | 20810 | } |
| 20826 | return wanted_modifier; | ||
| 20827 | }, | 20811 | }, |
| 20828 | } | 20812 | } |
| 20829 | } | ||
| 20830 | |||
| 20831 | fn zirBuiltinCall(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { | ||
| 20832 | const tracy = trace(@src()); | ||
| 20833 | defer tracy.end(); | ||
| 20834 | 20813 | ||
| 20835 | const inst_data = sema.code.instructions.items(.data)[inst].pl_node; | ||
| 20836 | const options_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; | ||
| 20837 | const func_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; | ||
| 20838 | const args_src: LazySrcLoc = .{ .node_offset_builtin_call_arg2 = inst_data.src_node }; | ||
| 20839 | const call_src = inst_data.src(); | ||
| 20840 | |||
| 20841 | const extra = sema.code.extraData(Zir.Inst.BuiltinCall, inst_data.payload_index).data; | ||
| 20842 | var func = try sema.resolveInst(extra.callee); | ||
| 20843 | const modifier = sema.resolveCallOptions( | ||
| 20844 | block, | ||
| 20845 | .unneeded, | ||
| 20846 | extra.options, | ||
| 20847 | extra.flags.is_comptime, | ||
| 20848 | extra.flags.is_nosuspend, | ||
| 20849 | func, | ||
| 20850 | func_src, | ||
| 20851 | ) catch |err| switch (err) { | ||
| 20852 | error.NeededSourceLocation => { | ||
| 20853 | _ = try sema.resolveCallOptions( | ||
| 20854 | block, | ||
| 20855 | options_src, | ||
| 20856 | extra.options, | ||
| 20857 | extra.flags.is_comptime, | ||
| 20858 | extra.flags.is_nosuspend, | ||
| 20859 | func, | ||
| 20860 | func_src, | ||
| 20861 | ); | ||
| 20862 | return error.AnalysisFail; | ||
| 20863 | }, | ||
| 20864 | else => |e| return e, | ||
| 20865 | }; | ||
| 20866 | const args = try sema.resolveInst(extra.args); | 20814 | const args = try sema.resolveInst(extra.args); |
| 20867 | 20815 | ||
| 20868 | const args_ty = sema.typeOf(args); | 20816 | const args_ty = sema.typeOf(args); |
| ... | @@ -29558,7 +29506,7 @@ pub fn resolveTypeRequiresComptime(sema: *Sema, ty: Type) CompileError!bool { | ... | @@ -29558,7 +29506,7 @@ pub fn resolveTypeRequiresComptime(sema: *Sema, ty: Type) CompileError!bool { |
| 29558 | .address_space, | 29506 | .address_space, |
| 29559 | .float_mode, | 29507 | .float_mode, |
| 29560 | .reduce_op, | 29508 | .reduce_op, |
| 29561 | .call_options, | 29509 | .modifier, |
| 29562 | .prefetch_options, | 29510 | .prefetch_options, |
| 29563 | .export_options, | 29511 | .export_options, |
| 29564 | .extern_options, | 29512 | .extern_options, |
| ... | @@ -29823,7 +29771,7 @@ pub fn resolveTypeFields(sema: *Sema, ty: Type) CompileError!Type { | ... | @@ -29823,7 +29771,7 @@ pub fn resolveTypeFields(sema: *Sema, ty: Type) CompileError!Type { |
| 29823 | .address_space => return sema.getBuiltinType("AddressSpace"), | 29771 | .address_space => return sema.getBuiltinType("AddressSpace"), |
| 29824 | .float_mode => return sema.getBuiltinType("FloatMode"), | 29772 | .float_mode => return sema.getBuiltinType("FloatMode"), |
| 29825 | .reduce_op => return sema.getBuiltinType("ReduceOp"), | 29773 | .reduce_op => return sema.getBuiltinType("ReduceOp"), |
| 29826 | .call_options => return sema.getBuiltinType("CallOptions"), | 29774 | .modifier => return sema.getBuiltinType("CallModifier"), |
| 29827 | .prefetch_options => return sema.getBuiltinType("PrefetchOptions"), | 29775 | .prefetch_options => return sema.getBuiltinType("PrefetchOptions"), |
| 29828 | 29776 | ||
| 29829 | else => return ty, | 29777 | else => return ty, |
| ... | @@ -30841,7 +30789,7 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value { | ... | @@ -30841,7 +30789,7 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value { |
| 30841 | .address_space, | 30789 | .address_space, |
| 30842 | .float_mode, | 30790 | .float_mode, |
| 30843 | .reduce_op, | 30791 | .reduce_op, |
| 30844 | .call_options, | 30792 | .modifier, |
| 30845 | .prefetch_options, | 30793 | .prefetch_options, |
| 30846 | .export_options, | 30794 | .export_options, |
| 30847 | .extern_options, | 30795 | .extern_options, |
| ... | @@ -31164,7 +31112,7 @@ pub fn addType(sema: *Sema, ty: Type) !Air.Inst.Ref { | ... | @@ -31164,7 +31112,7 @@ pub fn addType(sema: *Sema, ty: Type) !Air.Inst.Ref { |
| 31164 | .address_space => return .address_space_type, | 31112 | .address_space => return .address_space_type, |
| 31165 | .float_mode => return .float_mode_type, | 31113 | .float_mode => return .float_mode_type, |
| 31166 | .reduce_op => return .reduce_op_type, | 31114 | .reduce_op => return .reduce_op_type, |
| 31167 | .call_options => return .call_options_type, | 31115 | .modifier => return .modifier_type, |
| 31168 | .prefetch_options => return .prefetch_options_type, | 31116 | .prefetch_options => return .prefetch_options_type, |
| 31169 | .export_options => return .export_options_type, | 31117 | .export_options => return .export_options_type, |
| 31170 | .extern_options => return .extern_options_type, | 31118 | .extern_options => return .extern_options_type, |
| ... | @@ -31557,7 +31505,7 @@ pub fn typeRequiresComptime(sema: *Sema, ty: Type) CompileError!bool { | ... | @@ -31557,7 +31505,7 @@ pub fn typeRequiresComptime(sema: *Sema, ty: Type) CompileError!bool { |
| 31557 | .address_space, | 31505 | .address_space, |
| 31558 | .float_mode, | 31506 | .float_mode, |
| 31559 | .reduce_op, | 31507 | .reduce_op, |
| 31560 | .call_options, | 31508 | .modifier, |
| 31561 | .prefetch_options, | 31509 | .prefetch_options, |
| 31562 | .export_options, | 31510 | .export_options, |
| 31563 | .extern_options, | 31511 | .extern_options, |
| ... | @@ -32387,7 +32335,7 @@ fn enumHasInt( | ... | @@ -32387,7 +32335,7 @@ fn enumHasInt( |
| 32387 | .address_space, | 32335 | .address_space, |
| 32388 | .float_mode, | 32336 | .float_mode, |
| 32389 | .reduce_op, | 32337 | .reduce_op, |
| 32390 | .call_options, | 32338 | .modifier, |
| 32391 | .prefetch_options, | 32339 | .prefetch_options, |
| 32392 | .export_options, | 32340 | .export_options, |
| 32393 | .extern_options, | 32341 | .extern_options, |
src/TypedValue.zig+1-1| ... | @@ -136,7 +136,7 @@ pub fn print( | ... | @@ -136,7 +136,7 @@ pub fn print( |
| 136 | .address_space_type => return writer.writeAll("std.builtin.AddressSpace"), | 136 | .address_space_type => return writer.writeAll("std.builtin.AddressSpace"), |
| 137 | .float_mode_type => return writer.writeAll("std.builtin.FloatMode"), | 137 | .float_mode_type => return writer.writeAll("std.builtin.FloatMode"), |
| 138 | .reduce_op_type => return writer.writeAll("std.builtin.ReduceOp"), | 138 | .reduce_op_type => return writer.writeAll("std.builtin.ReduceOp"), |
| 139 | .call_options_type => return writer.writeAll("std.builtin.CallOptions"), | 139 | .modifier_type => return writer.writeAll("std.builtin.CallModifier"), |
| 140 | .prefetch_options_type => return writer.writeAll("std.builtin.PrefetchOptions"), | 140 | .prefetch_options_type => return writer.writeAll("std.builtin.PrefetchOptions"), |
| 141 | .export_options_type => return writer.writeAll("std.builtin.ExportOptions"), | 141 | .export_options_type => return writer.writeAll("std.builtin.ExportOptions"), |
| 142 | .extern_options_type => return writer.writeAll("std.builtin.ExternOptions"), | 142 | .extern_options_type => return writer.writeAll("std.builtin.ExternOptions"), |
src/Zir.zig+6-6| ... | @@ -2070,7 +2070,7 @@ pub const Inst = struct { | ... | @@ -2070,7 +2070,7 @@ pub const Inst = struct { |
| 2070 | address_space_type, | 2070 | address_space_type, |
| 2071 | float_mode_type, | 2071 | float_mode_type, |
| 2072 | reduce_op_type, | 2072 | reduce_op_type, |
| 2073 | call_options_type, | 2073 | modifier_type, |
| 2074 | prefetch_options_type, | 2074 | prefetch_options_type, |
| 2075 | export_options_type, | 2075 | export_options_type, |
| 2076 | extern_options_type, | 2076 | extern_options_type, |
| ... | @@ -2345,9 +2345,9 @@ pub const Inst = struct { | ... | @@ -2345,9 +2345,9 @@ pub const Inst = struct { |
| 2345 | .ty = Type.initTag(.type), | 2345 | .ty = Type.initTag(.type), |
| 2346 | .val = Value.initTag(.reduce_op_type), | 2346 | .val = Value.initTag(.reduce_op_type), |
| 2347 | }, | 2347 | }, |
| 2348 | .call_options_type = .{ | 2348 | .modifier_type = .{ |
| 2349 | .ty = Type.initTag(.type), | 2349 | .ty = Type.initTag(.type), |
| 2350 | .val = Value.initTag(.call_options_type), | 2350 | .val = Value.initTag(.modifier_type), |
| 2351 | }, | 2351 | }, |
| 2352 | .prefetch_options_type = .{ | 2352 | .prefetch_options_type = .{ |
| 2353 | .ty = Type.initTag(.type), | 2353 | .ty = Type.initTag(.type), |
| ... | @@ -2832,7 +2832,7 @@ pub const Inst = struct { | ... | @@ -2832,7 +2832,7 @@ pub const Inst = struct { |
| 2832 | callee: Ref, | 2832 | callee: Ref, |
| 2833 | 2833 | ||
| 2834 | pub const Flags = packed struct { | 2834 | pub const Flags = packed struct { |
| 2835 | /// std.builtin.CallOptions.Modifier in packed form | 2835 | /// std.builtin.CallModifier in packed form |
| 2836 | pub const PackedModifier = u3; | 2836 | pub const PackedModifier = u3; |
| 2837 | pub const PackedArgsLen = u27; | 2837 | pub const PackedArgsLen = u27; |
| 2838 | 2838 | ||
| ... | @@ -2844,7 +2844,7 @@ pub const Inst = struct { | ... | @@ -2844,7 +2844,7 @@ pub const Inst = struct { |
| 2844 | comptime { | 2844 | comptime { |
| 2845 | if (@sizeOf(Flags) != 4 or @bitSizeOf(Flags) != 32) | 2845 | if (@sizeOf(Flags) != 4 or @bitSizeOf(Flags) != 32) |
| 2846 | @compileError("Layout of Call.Flags needs to be updated!"); | 2846 | @compileError("Layout of Call.Flags needs to be updated!"); |
| 2847 | if (@bitSizeOf(std.builtin.CallOptions.Modifier) != @bitSizeOf(PackedModifier)) | 2847 | if (@bitSizeOf(std.builtin.CallModifier) != @bitSizeOf(PackedModifier)) |
| 2848 | @compileError("Call.Flags.PackedModifier needs to be updated!"); | 2848 | @compileError("Call.Flags.PackedModifier needs to be updated!"); |
| 2849 | } | 2849 | } |
| 2850 | }; | 2850 | }; |
| ... | @@ -2860,7 +2860,7 @@ pub const Inst = struct { | ... | @@ -2860,7 +2860,7 @@ pub const Inst = struct { |
| 2860 | // Note: Flags *must* come first so that unusedResultExpr | 2860 | // Note: Flags *must* come first so that unusedResultExpr |
| 2861 | // can find it when it goes to modify them. | 2861 | // can find it when it goes to modify them. |
| 2862 | flags: Flags, | 2862 | flags: Flags, |
| 2863 | options: Ref, | 2863 | modifier: Ref, |
| 2864 | callee: Ref, | 2864 | callee: Ref, |
| 2865 | args: Ref, | 2865 | args: Ref, |
| 2866 | 2866 |
src/arch/aarch64/CodeGen.zig+1-1| ... | @@ -4110,7 +4110,7 @@ fn airFence(self: *Self) !void { | ... | @@ -4110,7 +4110,7 @@ fn airFence(self: *Self) !void { |
| 4110 | //return self.finishAirBookkeeping(); | 4110 | //return self.finishAirBookkeeping(); |
| 4111 | } | 4111 | } |
| 4112 | 4112 | ||
| 4113 | fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallOptions.Modifier) !void { | 4113 | fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier) !void { |
| 4114 | if (modifier == .always_tail) return self.fail("TODO implement tail calls for aarch64", .{}); | 4114 | if (modifier == .always_tail) return self.fail("TODO implement tail calls for aarch64", .{}); |
| 4115 | const pl_op = self.air.instructions.items(.data)[inst].pl_op; | 4115 | const pl_op = self.air.instructions.items(.data)[inst].pl_op; |
| 4116 | const callee = pl_op.operand; | 4116 | const callee = pl_op.operand; |
src/arch/arm/CodeGen.zig+1-1| ... | @@ -4097,7 +4097,7 @@ fn airFence(self: *Self) !void { | ... | @@ -4097,7 +4097,7 @@ fn airFence(self: *Self) !void { |
| 4097 | //return self.finishAirBookkeeping(); | 4097 | //return self.finishAirBookkeeping(); |
| 4098 | } | 4098 | } |
| 4099 | 4099 | ||
| 4100 | fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallOptions.Modifier) !void { | 4100 | fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier) !void { |
| 4101 | if (modifier == .always_tail) return self.fail("TODO implement tail calls for arm", .{}); | 4101 | if (modifier == .always_tail) return self.fail("TODO implement tail calls for arm", .{}); |
| 4102 | const pl_op = self.air.instructions.items(.data)[inst].pl_op; | 4102 | const pl_op = self.air.instructions.items(.data)[inst].pl_op; |
| 4103 | const callee = pl_op.operand; | 4103 | const callee = pl_op.operand; |
src/arch/riscv64/CodeGen.zig+1-1| ... | @@ -1672,7 +1672,7 @@ fn airFence(self: *Self) !void { | ... | @@ -1672,7 +1672,7 @@ fn airFence(self: *Self) !void { |
| 1672 | //return self.finishAirBookkeeping(); | 1672 | //return self.finishAirBookkeeping(); |
| 1673 | } | 1673 | } |
| 1674 | 1674 | ||
| 1675 | fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallOptions.Modifier) !void { | 1675 | fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier) !void { |
| 1676 | if (modifier == .always_tail) return self.fail("TODO implement tail calls for riscv64", .{}); | 1676 | if (modifier == .always_tail) return self.fail("TODO implement tail calls for riscv64", .{}); |
| 1677 | const pl_op = self.air.instructions.items(.data)[inst].pl_op; | 1677 | const pl_op = self.air.instructions.items(.data)[inst].pl_op; |
| 1678 | const fn_ty = self.air.typeOf(pl_op.operand); | 1678 | const fn_ty = self.air.typeOf(pl_op.operand); |
src/arch/sparc64/CodeGen.zig+1-1| ... | @@ -1155,7 +1155,7 @@ fn airBreakpoint(self: *Self) !void { | ... | @@ -1155,7 +1155,7 @@ fn airBreakpoint(self: *Self) !void { |
| 1155 | return self.finishAirBookkeeping(); | 1155 | return self.finishAirBookkeeping(); |
| 1156 | } | 1156 | } |
| 1157 | 1157 | ||
| 1158 | fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallOptions.Modifier) !void { | 1158 | fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier) !void { |
| 1159 | if (modifier == .always_tail) return self.fail("TODO implement tail calls for {}", .{self.target.cpu.arch}); | 1159 | if (modifier == .always_tail) return self.fail("TODO implement tail calls for {}", .{self.target.cpu.arch}); |
| 1160 | 1160 | ||
| 1161 | const pl_op = self.air.instructions.items(.data)[inst].pl_op; | 1161 | const pl_op = self.air.instructions.items(.data)[inst].pl_op; |
src/arch/wasm/CodeGen.zig+1-1| ... | @@ -2003,7 +2003,7 @@ fn airRetLoad(func: *CodeGen, inst: Air.Inst.Index) InnerError!void { | ... | @@ -2003,7 +2003,7 @@ fn airRetLoad(func: *CodeGen, inst: Air.Inst.Index) InnerError!void { |
| 2003 | return func.finishAir(inst, .none, &.{un_op}); | 2003 | return func.finishAir(inst, .none, &.{un_op}); |
| 2004 | } | 2004 | } |
| 2005 | 2005 | ||
| 2006 | fn airCall(func: *CodeGen, inst: Air.Inst.Index, modifier: std.builtin.CallOptions.Modifier) InnerError!void { | 2006 | fn airCall(func: *CodeGen, inst: Air.Inst.Index, modifier: std.builtin.CallModifier) InnerError!void { |
| 2007 | if (modifier == .always_tail) return func.fail("TODO implement tail calls for wasm", .{}); | 2007 | if (modifier == .always_tail) return func.fail("TODO implement tail calls for wasm", .{}); |
| 2008 | const pl_op = func.air.instructions.items(.data)[inst].pl_op; | 2008 | const pl_op = func.air.instructions.items(.data)[inst].pl_op; |
| 2009 | const extra = func.air.extraData(Air.Call, pl_op.payload); | 2009 | const extra = func.air.extraData(Air.Call, pl_op.payload); |
src/arch/x86_64/CodeGen.zig+1-1| ... | @@ -3899,7 +3899,7 @@ fn airFence(self: *Self) !void { | ... | @@ -3899,7 +3899,7 @@ fn airFence(self: *Self) !void { |
| 3899 | //return self.finishAirBookkeeping(); | 3899 | //return self.finishAirBookkeeping(); |
| 3900 | } | 3900 | } |
| 3901 | 3901 | ||
| 3902 | fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallOptions.Modifier) !void { | 3902 | fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier) !void { |
| 3903 | if (modifier == .always_tail) return self.fail("TODO implement tail calls for x86_64", .{}); | 3903 | if (modifier == .always_tail) return self.fail("TODO implement tail calls for x86_64", .{}); |
| 3904 | const pl_op = self.air.instructions.items(.data)[inst].pl_op; | 3904 | const pl_op = self.air.instructions.items(.data)[inst].pl_op; |
| 3905 | const callee = pl_op.operand; | 3905 | const callee = pl_op.operand; |
src/codegen/c.zig+1-1| ... | @@ -3874,7 +3874,7 @@ fn airSlice(f: *Function, inst: Air.Inst.Index) !CValue { | ... | @@ -3874,7 +3874,7 @@ fn airSlice(f: *Function, inst: Air.Inst.Index) !CValue { |
| 3874 | fn airCall( | 3874 | fn airCall( |
| 3875 | f: *Function, | 3875 | f: *Function, |
| 3876 | inst: Air.Inst.Index, | 3876 | inst: Air.Inst.Index, |
| 3877 | modifier: std.builtin.CallOptions.Modifier, | 3877 | modifier: std.builtin.CallModifier, |
| 3878 | ) !CValue { | 3878 | ) !CValue { |
| 3879 | // Not even allowed to call panic in a naked function. | 3879 | // Not even allowed to call panic in a naked function. |
| 3880 | if (f.object.dg.decl.ty.fnCallingConvention() == .Naked) return .none; | 3880 | if (f.object.dg.decl.ty.fnCallingConvention() == .Naked) return .none; |
src/print_zir.zig+2-2| ... | @@ -801,7 +801,7 @@ const Writer = struct { | ... | @@ -801,7 +801,7 @@ const Writer = struct { |
| 801 | try self.writeFlag(stream, "nosuspend ", extra.flags.is_nosuspend); | 801 | try self.writeFlag(stream, "nosuspend ", extra.flags.is_nosuspend); |
| 802 | try self.writeFlag(stream, "comptime ", extra.flags.is_comptime); | 802 | try self.writeFlag(stream, "comptime ", extra.flags.is_comptime); |
| 803 | 803 | ||
| 804 | try self.writeInstRef(stream, extra.options); | 804 | try self.writeInstRef(stream, extra.modifier); |
| 805 | try stream.writeAll(", "); | 805 | try stream.writeAll(", "); |
| 806 | try self.writeInstRef(stream, extra.callee); | 806 | try self.writeInstRef(stream, extra.callee); |
| 807 | try stream.writeAll(", "); | 807 | try stream.writeAll(", "); |
| ... | @@ -1170,7 +1170,7 @@ const Writer = struct { | ... | @@ -1170,7 +1170,7 @@ const Writer = struct { |
| 1170 | if (extra.data.flags.ensure_result_used) { | 1170 | if (extra.data.flags.ensure_result_used) { |
| 1171 | try stream.writeAll("nodiscard "); | 1171 | try stream.writeAll("nodiscard "); |
| 1172 | } | 1172 | } |
| 1173 | try stream.print(".{s}, ", .{@tagName(@intToEnum(std.builtin.CallOptions.Modifier, extra.data.flags.packed_modifier))}); | 1173 | try stream.print(".{s}, ", .{@tagName(@intToEnum(std.builtin.CallModifier, extra.data.flags.packed_modifier))}); |
| 1174 | try self.writeInstRef(stream, extra.data.callee); | 1174 | try self.writeInstRef(stream, extra.data.callee); |
| 1175 | try stream.writeAll(", ["); | 1175 | try stream.writeAll(", ["); |
| 1176 | 1176 |
src/type.zig+22-22| ... | @@ -129,7 +129,6 @@ pub const Type = extern union { | ... | @@ -129,7 +129,6 @@ pub const Type = extern union { |
| 129 | .empty_struct, | 129 | .empty_struct, |
| 130 | .empty_struct_literal, | 130 | .empty_struct_literal, |
| 131 | .@"struct", | 131 | .@"struct", |
| 132 | .call_options, | ||
| 133 | .prefetch_options, | 132 | .prefetch_options, |
| 134 | .export_options, | 133 | .export_options, |
| 135 | .extern_options, | 134 | .extern_options, |
| ... | @@ -147,6 +146,7 @@ pub const Type = extern union { | ... | @@ -147,6 +146,7 @@ pub const Type = extern union { |
| 147 | .address_space, | 146 | .address_space, |
| 148 | .float_mode, | 147 | .float_mode, |
| 149 | .reduce_op, | 148 | .reduce_op, |
| 149 | .modifier, | ||
| 150 | => return .Enum, | 150 | => return .Enum, |
| 151 | 151 | ||
| 152 | .@"union", | 152 | .@"union", |
| ... | @@ -885,7 +885,6 @@ pub const Type = extern union { | ... | @@ -885,7 +885,6 @@ pub const Type = extern union { |
| 885 | 885 | ||
| 886 | // we can't compare these based on tags because it wouldn't detect if, | 886 | // we can't compare these based on tags because it wouldn't detect if, |
| 887 | // for example, a was resolved into .@"struct" but b was one of these tags. | 887 | // for example, a was resolved into .@"struct" but b was one of these tags. |
| 888 | .call_options, | ||
| 889 | .prefetch_options, | 888 | .prefetch_options, |
| 890 | .export_options, | 889 | .export_options, |
| 891 | .extern_options, | 890 | .extern_options, |
| ... | @@ -914,6 +913,7 @@ pub const Type = extern union { | ... | @@ -914,6 +913,7 @@ pub const Type = extern union { |
| 914 | .address_space, | 913 | .address_space, |
| 915 | .float_mode, | 914 | .float_mode, |
| 916 | .reduce_op, | 915 | .reduce_op, |
| 916 | .modifier, | ||
| 917 | => unreachable, // needed to resolve the type before now | 917 | => unreachable, // needed to resolve the type before now |
| 918 | 918 | ||
| 919 | .@"union", .union_safety_tagged, .union_tagged => { | 919 | .@"union", .union_safety_tagged, .union_tagged => { |
| ... | @@ -1194,7 +1194,6 @@ pub const Type = extern union { | ... | @@ -1194,7 +1194,6 @@ pub const Type = extern union { |
| 1194 | }, | 1194 | }, |
| 1195 | 1195 | ||
| 1196 | // we can't hash these based on tags because they wouldn't match the expanded version. | 1196 | // we can't hash these based on tags because they wouldn't match the expanded version. |
| 1197 | .call_options, | ||
| 1198 | .prefetch_options, | 1197 | .prefetch_options, |
| 1199 | .export_options, | 1198 | .export_options, |
| 1200 | .extern_options, | 1199 | .extern_options, |
| ... | @@ -1222,6 +1221,7 @@ pub const Type = extern union { | ... | @@ -1222,6 +1221,7 @@ pub const Type = extern union { |
| 1222 | .address_space, | 1221 | .address_space, |
| 1223 | .float_mode, | 1222 | .float_mode, |
| 1224 | .reduce_op, | 1223 | .reduce_op, |
| 1224 | .modifier, | ||
| 1225 | => unreachable, // needed to resolve the type before now | 1225 | => unreachable, // needed to resolve the type before now |
| 1226 | 1226 | ||
| 1227 | .@"union", .union_safety_tagged, .union_tagged => { | 1227 | .@"union", .union_safety_tagged, .union_tagged => { |
| ... | @@ -1333,7 +1333,7 @@ pub const Type = extern union { | ... | @@ -1333,7 +1333,7 @@ pub const Type = extern union { |
| 1333 | .address_space, | 1333 | .address_space, |
| 1334 | .float_mode, | 1334 | .float_mode, |
| 1335 | .reduce_op, | 1335 | .reduce_op, |
| 1336 | .call_options, | 1336 | .modifier, |
| 1337 | .prefetch_options, | 1337 | .prefetch_options, |
| 1338 | .export_options, | 1338 | .export_options, |
| 1339 | .extern_options, | 1339 | .extern_options, |
| ... | @@ -1665,7 +1665,7 @@ pub const Type = extern union { | ... | @@ -1665,7 +1665,7 @@ pub const Type = extern union { |
| 1665 | .address_space => return writer.writeAll("std.builtin.AddressSpace"), | 1665 | .address_space => return writer.writeAll("std.builtin.AddressSpace"), |
| 1666 | .float_mode => return writer.writeAll("std.builtin.FloatMode"), | 1666 | .float_mode => return writer.writeAll("std.builtin.FloatMode"), |
| 1667 | .reduce_op => return writer.writeAll("std.builtin.ReduceOp"), | 1667 | .reduce_op => return writer.writeAll("std.builtin.ReduceOp"), |
| 1668 | .call_options => return writer.writeAll("std.builtin.CallOptions"), | 1668 | .modifier => return writer.writeAll("std.builtin.CallModifier"), |
| 1669 | .prefetch_options => return writer.writeAll("std.builtin.PrefetchOptions"), | 1669 | .prefetch_options => return writer.writeAll("std.builtin.PrefetchOptions"), |
| 1670 | .export_options => return writer.writeAll("std.builtin.ExportOptions"), | 1670 | .export_options => return writer.writeAll("std.builtin.ExportOptions"), |
| 1671 | .extern_options => return writer.writeAll("std.builtin.ExternOptions"), | 1671 | .extern_options => return writer.writeAll("std.builtin.ExternOptions"), |
| ... | @@ -1943,7 +1943,7 @@ pub const Type = extern union { | ... | @@ -1943,7 +1943,7 @@ pub const Type = extern union { |
| 1943 | .address_space => unreachable, | 1943 | .address_space => unreachable, |
| 1944 | .float_mode => unreachable, | 1944 | .float_mode => unreachable, |
| 1945 | .reduce_op => unreachable, | 1945 | .reduce_op => unreachable, |
| 1946 | .call_options => unreachable, | 1946 | .modifier => unreachable, |
| 1947 | .prefetch_options => unreachable, | 1947 | .prefetch_options => unreachable, |
| 1948 | .export_options => unreachable, | 1948 | .export_options => unreachable, |
| 1949 | .extern_options => unreachable, | 1949 | .extern_options => unreachable, |
| ... | @@ -2311,7 +2311,7 @@ pub const Type = extern union { | ... | @@ -2311,7 +2311,7 @@ pub const Type = extern union { |
| 2311 | .address_space => return Value.initTag(.address_space_type), | 2311 | .address_space => return Value.initTag(.address_space_type), |
| 2312 | .float_mode => return Value.initTag(.float_mode_type), | 2312 | .float_mode => return Value.initTag(.float_mode_type), |
| 2313 | .reduce_op => return Value.initTag(.reduce_op_type), | 2313 | .reduce_op => return Value.initTag(.reduce_op_type), |
| 2314 | .call_options => return Value.initTag(.call_options_type), | 2314 | .modifier => return Value.initTag(.modifier_type), |
| 2315 | .prefetch_options => return Value.initTag(.prefetch_options_type), | 2315 | .prefetch_options => return Value.initTag(.prefetch_options_type), |
| 2316 | .export_options => return Value.initTag(.export_options_type), | 2316 | .export_options => return Value.initTag(.export_options_type), |
| 2317 | .extern_options => return Value.initTag(.extern_options_type), | 2317 | .extern_options => return Value.initTag(.extern_options_type), |
| ... | @@ -2385,7 +2385,7 @@ pub const Type = extern union { | ... | @@ -2385,7 +2385,7 @@ pub const Type = extern union { |
| 2385 | .address_space, | 2385 | .address_space, |
| 2386 | .float_mode, | 2386 | .float_mode, |
| 2387 | .reduce_op, | 2387 | .reduce_op, |
| 2388 | .call_options, | 2388 | .modifier, |
| 2389 | .prefetch_options, | 2389 | .prefetch_options, |
| 2390 | .export_options, | 2390 | .export_options, |
| 2391 | .extern_options, | 2391 | .extern_options, |
| ... | @@ -2631,7 +2631,7 @@ pub const Type = extern union { | ... | @@ -2631,7 +2631,7 @@ pub const Type = extern union { |
| 2631 | .address_space, | 2631 | .address_space, |
| 2632 | .float_mode, | 2632 | .float_mode, |
| 2633 | .reduce_op, | 2633 | .reduce_op, |
| 2634 | .call_options, | 2634 | .modifier, |
| 2635 | .prefetch_options, | 2635 | .prefetch_options, |
| 2636 | .export_options, | 2636 | .export_options, |
| 2637 | .extern_options, | 2637 | .extern_options, |
| ... | @@ -2873,7 +2873,7 @@ pub const Type = extern union { | ... | @@ -2873,7 +2873,7 @@ pub const Type = extern union { |
| 2873 | .address_space, | 2873 | .address_space, |
| 2874 | .float_mode, | 2874 | .float_mode, |
| 2875 | .reduce_op, | 2875 | .reduce_op, |
| 2876 | .call_options, | 2876 | .modifier, |
| 2877 | .prefetch_options, | 2877 | .prefetch_options, |
| 2878 | .export_options, | 2878 | .export_options, |
| 2879 | .extern_options, | 2879 | .extern_options, |
| ... | @@ -3257,7 +3257,7 @@ pub const Type = extern union { | ... | @@ -3257,7 +3257,7 @@ pub const Type = extern union { |
| 3257 | .inferred_alloc_mut => unreachable, | 3257 | .inferred_alloc_mut => unreachable, |
| 3258 | .var_args_param => unreachable, | 3258 | .var_args_param => unreachable, |
| 3259 | .generic_poison => unreachable, | 3259 | .generic_poison => unreachable, |
| 3260 | .call_options => unreachable, // missing call to resolveTypeFields | 3260 | .modifier => unreachable, // missing call to resolveTypeFields |
| 3261 | .prefetch_options => unreachable, // missing call to resolveTypeFields | 3261 | .prefetch_options => unreachable, // missing call to resolveTypeFields |
| 3262 | .export_options => unreachable, // missing call to resolveTypeFields | 3262 | .export_options => unreachable, // missing call to resolveTypeFields |
| 3263 | .extern_options => unreachable, // missing call to resolveTypeFields | 3263 | .extern_options => unreachable, // missing call to resolveTypeFields |
| ... | @@ -3753,7 +3753,7 @@ pub const Type = extern union { | ... | @@ -3753,7 +3753,7 @@ pub const Type = extern union { |
| 3753 | .address_space, | 3753 | .address_space, |
| 3754 | .float_mode, | 3754 | .float_mode, |
| 3755 | .reduce_op, | 3755 | .reduce_op, |
| 3756 | .call_options, | 3756 | .modifier, |
| 3757 | .prefetch_options, | 3757 | .prefetch_options, |
| 3758 | .export_options, | 3758 | .export_options, |
| 3759 | .extern_options, | 3759 | .extern_options, |
| ... | @@ -4279,7 +4279,7 @@ pub const Type = extern union { | ... | @@ -4279,7 +4279,7 @@ pub const Type = extern union { |
| 4279 | .address_space, | 4279 | .address_space, |
| 4280 | .float_mode, | 4280 | .float_mode, |
| 4281 | .reduce_op, | 4281 | .reduce_op, |
| 4282 | .call_options, | 4282 | .modifier, |
| 4283 | .prefetch_options, | 4283 | .prefetch_options, |
| 4284 | .export_options, | 4284 | .export_options, |
| 4285 | .extern_options, | 4285 | .extern_options, |
| ... | @@ -4306,7 +4306,7 @@ pub const Type = extern union { | ... | @@ -4306,7 +4306,7 @@ pub const Type = extern union { |
| 4306 | .address_space, | 4306 | .address_space, |
| 4307 | .float_mode, | 4307 | .float_mode, |
| 4308 | .reduce_op, | 4308 | .reduce_op, |
| 4309 | .call_options, | 4309 | .modifier, |
| 4310 | .prefetch_options, | 4310 | .prefetch_options, |
| 4311 | .export_options, | 4311 | .export_options, |
| 4312 | .extern_options, | 4312 | .extern_options, |
| ... | @@ -4990,7 +4990,7 @@ pub const Type = extern union { | ... | @@ -4990,7 +4990,7 @@ pub const Type = extern union { |
| 4990 | .address_space, | 4990 | .address_space, |
| 4991 | .float_mode, | 4991 | .float_mode, |
| 4992 | .reduce_op, | 4992 | .reduce_op, |
| 4993 | .call_options, | 4993 | .modifier, |
| 4994 | .prefetch_options, | 4994 | .prefetch_options, |
| 4995 | .export_options, | 4995 | .export_options, |
| 4996 | .extern_options, | 4996 | .extern_options, |
| ... | @@ -5165,7 +5165,7 @@ pub const Type = extern union { | ... | @@ -5165,7 +5165,7 @@ pub const Type = extern union { |
| 5165 | .address_space, | 5165 | .address_space, |
| 5166 | .float_mode, | 5166 | .float_mode, |
| 5167 | .reduce_op, | 5167 | .reduce_op, |
| 5168 | .call_options, | 5168 | .modifier, |
| 5169 | .prefetch_options, | 5169 | .prefetch_options, |
| 5170 | .export_options, | 5170 | .export_options, |
| 5171 | .extern_options, | 5171 | .extern_options, |
| ... | @@ -5483,7 +5483,7 @@ pub const Type = extern union { | ... | @@ -5483,7 +5483,7 @@ pub const Type = extern union { |
| 5483 | .address_space, | 5483 | .address_space, |
| 5484 | .float_mode, | 5484 | .float_mode, |
| 5485 | .reduce_op, | 5485 | .reduce_op, |
| 5486 | .call_options, | 5486 | .modifier, |
| 5487 | .prefetch_options, | 5487 | .prefetch_options, |
| 5488 | .export_options, | 5488 | .export_options, |
| 5489 | .extern_options, | 5489 | .extern_options, |
| ... | @@ -5565,7 +5565,7 @@ pub const Type = extern union { | ... | @@ -5565,7 +5565,7 @@ pub const Type = extern union { |
| 5565 | .address_space, | 5565 | .address_space, |
| 5566 | .float_mode, | 5566 | .float_mode, |
| 5567 | .reduce_op, | 5567 | .reduce_op, |
| 5568 | .call_options, | 5568 | .modifier, |
| 5569 | .prefetch_options, | 5569 | .prefetch_options, |
| 5570 | .export_options, | 5570 | .export_options, |
| 5571 | .extern_options, | 5571 | .extern_options, |
| ... | @@ -5878,7 +5878,7 @@ pub const Type = extern union { | ... | @@ -5878,7 +5878,7 @@ pub const Type = extern union { |
| 5878 | .address_space, | 5878 | .address_space, |
| 5879 | .float_mode, | 5879 | .float_mode, |
| 5880 | .reduce_op, | 5880 | .reduce_op, |
| 5881 | .call_options, | 5881 | .modifier, |
| 5882 | .prefetch_options, | 5882 | .prefetch_options, |
| 5883 | .export_options, | 5883 | .export_options, |
| 5884 | .extern_options, | 5884 | .extern_options, |
| ... | @@ -5926,7 +5926,7 @@ pub const Type = extern union { | ... | @@ -5926,7 +5926,7 @@ pub const Type = extern union { |
| 5926 | .address_space, | 5926 | .address_space, |
| 5927 | .float_mode, | 5927 | .float_mode, |
| 5928 | .reduce_op, | 5928 | .reduce_op, |
| 5929 | .call_options, | 5929 | .modifier, |
| 5930 | .prefetch_options, | 5930 | .prefetch_options, |
| 5931 | .export_options, | 5931 | .export_options, |
| 5932 | .extern_options, | 5932 | .extern_options, |
| ... | @@ -5991,7 +5991,7 @@ pub const Type = extern union { | ... | @@ -5991,7 +5991,7 @@ pub const Type = extern union { |
| 5991 | address_space, | 5991 | address_space, |
| 5992 | float_mode, | 5992 | float_mode, |
| 5993 | reduce_op, | 5993 | reduce_op, |
| 5994 | call_options, | 5994 | modifier, |
| 5995 | prefetch_options, | 5995 | prefetch_options, |
| 5996 | export_options, | 5996 | export_options, |
| 5997 | extern_options, | 5997 | extern_options, |
| ... | @@ -6131,7 +6131,7 @@ pub const Type = extern union { | ... | @@ -6131,7 +6131,7 @@ pub const Type = extern union { |
| 6131 | .address_space, | 6131 | .address_space, |
| 6132 | .float_mode, | 6132 | .float_mode, |
| 6133 | .reduce_op, | 6133 | .reduce_op, |
| 6134 | .call_options, | 6134 | .modifier, |
| 6135 | .prefetch_options, | 6135 | .prefetch_options, |
| 6136 | .export_options, | 6136 | .export_options, |
| 6137 | .extern_options, | 6137 | .extern_options, |
src/value.zig+5-5| ... | @@ -71,7 +71,7 @@ pub const Value = extern union { | ... | @@ -71,7 +71,7 @@ pub const Value = extern union { |
| 71 | address_space_type, | 71 | address_space_type, |
| 72 | float_mode_type, | 72 | float_mode_type, |
| 73 | reduce_op_type, | 73 | reduce_op_type, |
| 74 | call_options_type, | 74 | modifier_type, |
| 75 | prefetch_options_type, | 75 | prefetch_options_type, |
| 76 | export_options_type, | 76 | export_options_type, |
| 77 | extern_options_type, | 77 | extern_options_type, |
| ... | @@ -264,7 +264,7 @@ pub const Value = extern union { | ... | @@ -264,7 +264,7 @@ pub const Value = extern union { |
| 264 | .address_space_type, | 264 | .address_space_type, |
| 265 | .float_mode_type, | 265 | .float_mode_type, |
| 266 | .reduce_op_type, | 266 | .reduce_op_type, |
| 267 | .call_options_type, | 267 | .modifier_type, |
| 268 | .prefetch_options_type, | 268 | .prefetch_options_type, |
| 269 | .export_options_type, | 269 | .export_options_type, |
| 270 | .extern_options_type, | 270 | .extern_options_type, |
| ... | @@ -467,7 +467,7 @@ pub const Value = extern union { | ... | @@ -467,7 +467,7 @@ pub const Value = extern union { |
| 467 | .address_space_type, | 467 | .address_space_type, |
| 468 | .float_mode_type, | 468 | .float_mode_type, |
| 469 | .reduce_op_type, | 469 | .reduce_op_type, |
| 470 | .call_options_type, | 470 | .modifier_type, |
| 471 | .prefetch_options_type, | 471 | .prefetch_options_type, |
| 472 | .export_options_type, | 472 | .export_options_type, |
| 473 | .extern_options_type, | 473 | .extern_options_type, |
| ... | @@ -723,7 +723,7 @@ pub const Value = extern union { | ... | @@ -723,7 +723,7 @@ pub const Value = extern union { |
| 723 | .address_space_type => return out_stream.writeAll("std.builtin.AddressSpace"), | 723 | .address_space_type => return out_stream.writeAll("std.builtin.AddressSpace"), |
| 724 | .float_mode_type => return out_stream.writeAll("std.builtin.FloatMode"), | 724 | .float_mode_type => return out_stream.writeAll("std.builtin.FloatMode"), |
| 725 | .reduce_op_type => return out_stream.writeAll("std.builtin.ReduceOp"), | 725 | .reduce_op_type => return out_stream.writeAll("std.builtin.ReduceOp"), |
| 726 | .call_options_type => return out_stream.writeAll("std.builtin.CallOptions"), | 726 | .modifier_type => return out_stream.writeAll("std.builtin.CallModifier"), |
| 727 | .prefetch_options_type => return out_stream.writeAll("std.builtin.PrefetchOptions"), | 727 | .prefetch_options_type => return out_stream.writeAll("std.builtin.PrefetchOptions"), |
| 728 | .export_options_type => return out_stream.writeAll("std.builtin.ExportOptions"), | 728 | .export_options_type => return out_stream.writeAll("std.builtin.ExportOptions"), |
| 729 | .extern_options_type => return out_stream.writeAll("std.builtin.ExternOptions"), | 729 | .extern_options_type => return out_stream.writeAll("std.builtin.ExternOptions"), |
| ... | @@ -963,7 +963,7 @@ pub const Value = extern union { | ... | @@ -963,7 +963,7 @@ pub const Value = extern union { |
| 963 | .address_space_type => Type.initTag(.address_space), | 963 | .address_space_type => Type.initTag(.address_space), |
| 964 | .float_mode_type => Type.initTag(.float_mode), | 964 | .float_mode_type => Type.initTag(.float_mode), |
| 965 | .reduce_op_type => Type.initTag(.reduce_op), | 965 | .reduce_op_type => Type.initTag(.reduce_op), |
| 966 | .call_options_type => Type.initTag(.call_options), | 966 | .modifier_type => Type.initTag(.modifier), |
| 967 | .prefetch_options_type => Type.initTag(.prefetch_options), | 967 | .prefetch_options_type => Type.initTag(.prefetch_options), |
| 968 | .export_options_type => Type.initTag(.export_options), | 968 | .export_options_type => Type.initTag(.export_options), |
| 969 | .extern_options_type => Type.initTag(.extern_options), | 969 | .extern_options_type => Type.initTag(.extern_options), |