compile error for @noInlineCall on an inline fn

closes #1133
This commit is contained in:
Andrew Kelley 2018-09-04 17:38:48 -04:00
parent cbb3f1d76c
commit 869167fc6d
No known key found for this signature in database
GPG Key ID: 4E7CD66038A4D47C
2 changed files with 16 additions and 0 deletions

View File

@ -13644,6 +13644,11 @@ static TypeTableEntry *ir_analyze_fn_call(IrAnalyze *ira, IrInstructionCall *cal
return ir_finish_anal(ira, result->value.type);
}
if (fn_entry != nullptr && fn_entry->fn_inline == FnInlineAlways && fn_inline == FnInlineNever) {
ir_add_error(ira, &call_instruction->base,
buf_sprintf("no-inline call of inline function"));
return ira->codegen->builtin_types.entry_invalid;
}
IrInstruction *new_call_instruction = ir_build_call_from(&ira->new_irb, &call_instruction->base,
fn_entry, fn_ref, call_param_count, casted_args, false, fn_inline, false, nullptr, casted_new_stack);

View File

@ -1,6 +1,17 @@
const tests = @import("tests.zig");
pub fn addCases(cases: *tests.CompileErrorContext) void {
cases.add(
"@noInlineCall on an inline function",
\\inline fn foo() void {}
\\
\\export fn entry() void {
\\ @noInlineCall(foo);
\\}
,
".tmp_source.zig:4:5: error: no-inline call of inline function",
);
cases.add(
"comptime continue inside runtime switch",
\\export fn entry() void {