add compile error for non-inline for loop on comptime type
parent
2257660916
commit
84195467ad
|
@ -12142,7 +12142,7 @@ static TypeTableEntry *ir_analyze_instruction_decl_var(IrAnalyze *ira, IrInstruc
|
|||
result_type = ira->codegen->builtin_types.entry_invalid;
|
||||
} else if (type_requires_comptime(result_type)) {
|
||||
var_class_requires_const = true;
|
||||
if (!var->src_is_const && !is_comptime_var) {
|
||||
if (!var->gen_is_const && !is_comptime_var) {
|
||||
ir_add_error_node(ira, source_node,
|
||||
buf_sprintf("variable of type '%s' must be const or comptime",
|
||||
buf_ptr(&result_type->name)));
|
||||
|
|
|
@ -1,6 +1,20 @@
|
|||
const tests = @import("tests.zig");
|
||||
|
||||
pub fn addCases(cases: *tests.CompileErrorContext) void {
|
||||
cases.add(
|
||||
"non-inline for loop on a type that requires comptime",
|
||||
\\const Foo = struct {
|
||||
\\ name: []const u8,
|
||||
\\ T: type,
|
||||
\\};
|
||||
\\export fn entry() void {
|
||||
\\ const xx: [2]Foo = undefined;
|
||||
\\ for (xx) |f| {}
|
||||
\\}
|
||||
,
|
||||
".tmp_source.zig:7:15: error: variable of type 'Foo' must be const or comptime",
|
||||
);
|
||||
|
||||
cases.add(
|
||||
"generic fn as parameter without comptime keyword",
|
||||
\\fn f(_: fn (var) void) void {}
|
||||
|
|
Loading…
Reference in New Issue