mirror of
https://github.com/ziglang/zig.git
synced 2026-01-27 09:45:27 +00:00
remove compile error for peer result comptime_int and null
closes #2763
This commit is contained in:
parent
ecb77af534
commit
edebe0586b
@ -11438,13 +11438,7 @@ static ZigType *ir_resolve_peer_types(IrAnalyze *ira, AstNode *source_node, ZigT
|
||||
}
|
||||
}
|
||||
} else if (any_are_null && prev_inst->value->type->id != ZigTypeIdNull) {
|
||||
if (prev_inst->value->type->id == ZigTypeIdComptimeInt ||
|
||||
prev_inst->value->type->id == ZigTypeIdComptimeFloat)
|
||||
{
|
||||
ir_add_error_node(ira, source_node,
|
||||
buf_sprintf("unable to make maybe out of number literal"));
|
||||
return ira->codegen->builtin_types.entry_invalid;
|
||||
} else if (prev_inst->value->type->id == ZigTypeIdOptional) {
|
||||
if (prev_inst->value->type->id == ZigTypeIdOptional) {
|
||||
return prev_inst->value->type;
|
||||
} else {
|
||||
if ((err = type_resolve(ira->codegen, prev_inst->value->type, ResolveStatusSizeKnown)))
|
||||
|
||||
@ -710,3 +710,24 @@ test "return u8 coercing into ?u32 return type" {
|
||||
S.doTheTest();
|
||||
comptime S.doTheTest();
|
||||
}
|
||||
|
||||
test "peer result null and comptime_int" {
|
||||
const S = struct {
|
||||
fn blah(n: i32) ?i32 {
|
||||
if (n == 0) {
|
||||
return null;
|
||||
} else if (n < 0) {
|
||||
return -1;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
expect(S.blah(0) == null);
|
||||
comptime expect(S.blah(0) == null);
|
||||
expect(S.blah(10).? == 1);
|
||||
comptime expect(S.blah(10).? == 1);
|
||||
expect(S.blah(-10).? == -1);
|
||||
comptime expect(S.blah(-10).? == -1);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user