parent
771dafbaba
commit
ddb87237de
12
src/ir.cpp
12
src/ir.cpp
@ -10120,6 +10120,18 @@ static ZigType *ir_resolve_peer_types(IrAnalyze *ira, AstNode *source_node, ZigT
|
|||||||
} else {
|
} else {
|
||||||
err_set_type = cur_type;
|
err_set_type = cur_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!resolve_inferred_error_set(ira->codegen, err_set_type, cur_inst->source_node)) {
|
||||||
|
return ira->codegen->builtin_types.entry_invalid;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type_is_global_error_set(err_set_type)) {
|
||||||
|
err_set_type = ira->codegen->builtin_types.entry_global_error_set;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
update_errors_helper(ira->codegen, &errors, &errors_count);
|
||||||
|
|
||||||
for (uint32_t i = 0; i < err_set_type->data.error_set.err_count; i += 1) {
|
for (uint32_t i = 0; i < err_set_type->data.error_set.err_count; i += 1) {
|
||||||
ErrorTableEntry *error_entry = err_set_type->data.error_set.errors[i];
|
ErrorTableEntry *error_entry = err_set_type->data.error_set.errors[i];
|
||||||
assert(errors[error_entry->value] == nullptr);
|
assert(errors[error_entry->value] == nullptr);
|
||||||
|
@ -2,6 +2,16 @@ const tests = @import("tests.zig");
|
|||||||
const builtin = @import("builtin");
|
const builtin = @import("builtin");
|
||||||
|
|
||||||
pub fn addCases(cases: *tests.CompileErrorContext) void {
|
pub fn addCases(cases: *tests.CompileErrorContext) void {
|
||||||
|
cases.add(
|
||||||
|
"comparison with error union and error value",
|
||||||
|
\\export fn entry() void {
|
||||||
|
\\ var number_or_error: anyerror!i32 = error.SomethingAwful;
|
||||||
|
\\ _ = number_or_error == error.SomethingAwful;
|
||||||
|
\\}
|
||||||
|
,
|
||||||
|
"tmp.zig:3:25: error: operator not allowed for type 'anyerror!i32'",
|
||||||
|
);
|
||||||
|
|
||||||
cases.add(
|
cases.add(
|
||||||
"switch with overlapping case ranges",
|
"switch with overlapping case ranges",
|
||||||
\\export fn entry() void {
|
\\export fn entry() void {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user