mirror of
https://github.com/ziglang/zig.git
synced 2026-02-02 20:53:44 +00:00
error sets - fix bad value for constant error literal
This commit is contained in:
parent
fee875770c
commit
57edd4dcb3
@ -12308,7 +12308,7 @@ static TypeTableEntry *ir_analyze_instruction_field_ptr(IrAnalyze *ira, IrInstru
|
||||
if (!resolve_inferred_error_set(ira, child_type, field_ptr_instruction->base.source_node)) {
|
||||
return ira->codegen->builtin_types.entry_invalid;
|
||||
}
|
||||
ErrorTableEntry *err_entry = find_err_table_entry(child_type, field_name);
|
||||
err_entry = find_err_table_entry(child_type, field_name);
|
||||
if (err_entry == nullptr) {
|
||||
ir_add_error(ira, &field_ptr_instruction->base,
|
||||
buf_sprintf("no error named '%s' in '%s'", buf_ptr(field_name), buf_ptr(&child_type->name)));
|
||||
|
||||
@ -108,3 +108,18 @@ fn testErrorSetType() void {
|
||||
error.FileNotFound => unreachable,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
test "explicit error set cast" {
|
||||
testExplicitErrorSetCast(Set1.A);
|
||||
comptime testExplicitErrorSetCast(Set1.A);
|
||||
}
|
||||
|
||||
const Set1 = error{A, B};
|
||||
const Set2 = error{A, C};
|
||||
|
||||
fn testExplicitErrorSetCast(set1: Set1) void {
|
||||
var x = Set2(set1);
|
||||
var y = Set1(x);
|
||||
assert(y == error.A);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user