mirror of
https://github.com/ziglang/zig.git
synced 2025-12-19 20:53:14 +00:00
minor clean ups from previous commit
This commit is contained in:
parent
3266585606
commit
c7852bd596
8
.vscode/settings.json
vendored
8
.vscode/settings.json
vendored
@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"files.associations": {
|
|
||||||
"*.zig": "c",
|
|
||||||
"type_traits": "cpp",
|
|
||||||
"*.inc": "cpp",
|
|
||||||
"thread": "cpp"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
41
src/ir.cpp
41
src/ir.cpp
@ -5827,12 +5827,25 @@ static bool ir_num_lit_fits_in_other_type(IrAnalyze *ira, IrInstruction *instruc
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} else if ((other_type->id == TypeTableEntryIdNumLitFloat && const_val->data.x_bignum.kind == BigNumKindFloat) ||
|
} else if ((other_type->id == TypeTableEntryIdNumLitFloat && const_val->data.x_bignum.kind == BigNumKindFloat) ||
|
||||||
(other_type->id == TypeTableEntryIdNumLitInt && const_val->data.x_bignum.kind == BigNumKindInt )) {
|
(other_type->id == TypeTableEntryIdNumLitInt && const_val->data.x_bignum.kind == BigNumKindInt ))
|
||||||
return true;
|
{
|
||||||
} else if ((other_type->id == TypeTableEntryIdMaybe &&
|
|
||||||
other_type->data.maybe.child_type->id == TypeTableEntryIdInt &&
|
|
||||||
const_val->data.x_bignum.kind == BigNumKindInt)) {
|
|
||||||
return true;
|
return true;
|
||||||
|
} else if (other_type->id == TypeTableEntryIdMaybe) {
|
||||||
|
TypeTableEntry *child_type = other_type->data.maybe.child_type;
|
||||||
|
if ((child_type->id == TypeTableEntryIdNumLitFloat && const_val->data.x_bignum.kind == BigNumKindFloat) ||
|
||||||
|
(child_type->id == TypeTableEntryIdNumLitInt && const_val->data.x_bignum.kind == BigNumKindInt ))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
} else if (child_type->id == TypeTableEntryIdInt && const_val->data.x_bignum.kind == BigNumKindInt) {
|
||||||
|
if (bignum_fits_in_bits(&const_val->data.x_bignum,
|
||||||
|
child_type->data.integral.bit_count,
|
||||||
|
child_type->data.integral.is_signed))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (child_type->id == TypeTableEntryIdFloat && const_val->data.x_bignum.kind == BigNumKindFloat) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *num_lit_str = (const_val->data.x_bignum.kind == BigNumKindFloat) ? "float" : "integer";
|
const char *num_lit_str = (const_val->data.x_bignum.kind == BigNumKindFloat) ? "float" : "integer";
|
||||||
@ -5898,11 +5911,9 @@ static ImplicitCastMatchResult ir_types_match_with_implicit_cast(IrAnalyze *ira,
|
|||||||
// implicit conversion from T to %?T
|
// implicit conversion from T to %?T
|
||||||
if (expected_type->id == TypeTableEntryIdErrorUnion &&
|
if (expected_type->id == TypeTableEntryIdErrorUnion &&
|
||||||
expected_type->data.error.child_type->id == TypeTableEntryIdMaybe &&
|
expected_type->data.error.child_type->id == TypeTableEntryIdMaybe &&
|
||||||
ir_types_match_with_implicit_cast(
|
ir_types_match_with_implicit_cast(ira,
|
||||||
ira,
|
|
||||||
expected_type->data.error.child_type->data.maybe.child_type,
|
expected_type->data.error.child_type->data.maybe.child_type,
|
||||||
actual_type,
|
actual_type, value))
|
||||||
value))
|
|
||||||
{
|
{
|
||||||
return ImplicitCastMatchResultYes;
|
return ImplicitCastMatchResultYes;
|
||||||
}
|
}
|
||||||
@ -7083,10 +7094,14 @@ static IrInstruction *ir_analyze_cast(IrAnalyze *ira, IrInstruction *source_inst
|
|||||||
// explicit cast from T to %?T
|
// explicit cast from T to %?T
|
||||||
if (wanted_type->id == TypeTableEntryIdErrorUnion &&
|
if (wanted_type->id == TypeTableEntryIdErrorUnion &&
|
||||||
wanted_type->data.error.child_type->id == TypeTableEntryIdMaybe &&
|
wanted_type->data.error.child_type->id == TypeTableEntryIdMaybe &&
|
||||||
actual_type->id != TypeTableEntryIdMaybe) {
|
actual_type->id != TypeTableEntryIdMaybe)
|
||||||
if (types_match_const_cast_only(wanted_type->data.error.child_type->data.maybe.child_type, actual_type) ||
|
{
|
||||||
|
TypeTableEntry *wanted_child_type = wanted_type->data.error.child_type->data.maybe.child_type;
|
||||||
|
if (types_match_const_cast_only(wanted_child_type, actual_type) ||
|
||||||
actual_type->id == TypeTableEntryIdNullLit ||
|
actual_type->id == TypeTableEntryIdNullLit ||
|
||||||
actual_type->id == TypeTableEntryIdNumLitInt ) {
|
actual_type->id == TypeTableEntryIdNumLitInt ||
|
||||||
|
actual_type->id == TypeTableEntryIdNumLitFloat)
|
||||||
|
{
|
||||||
IrInstruction *cast1 = ir_analyze_cast(ira, source_instr, wanted_type->data.error.child_type, value);
|
IrInstruction *cast1 = ir_analyze_cast(ira, source_instr, wanted_type->data.error.child_type, value);
|
||||||
if (type_is_invalid(cast1->value.type))
|
if (type_is_invalid(cast1->value.type))
|
||||||
return ira->codegen->invalid_instruction;
|
return ira->codegen->invalid_instruction;
|
||||||
@ -7094,7 +7109,7 @@ static IrInstruction *ir_analyze_cast(IrAnalyze *ira, IrInstruction *source_inst
|
|||||||
IrInstruction *cast2 = ir_analyze_cast(ira, source_instr, wanted_type, cast1);
|
IrInstruction *cast2 = ir_analyze_cast(ira, source_instr, wanted_type, cast1);
|
||||||
if (type_is_invalid(cast2->value.type))
|
if (type_is_invalid(cast2->value.type))
|
||||||
return ira->codegen->invalid_instruction;
|
return ira->codegen->invalid_instruction;
|
||||||
|
|
||||||
return cast2;
|
return cast2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user