mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 08:51:04 +01:00
Make built-in conversions visible to ImplicitAs. (#2525)
Add a blanket `ImplicitAs` implementation to perform the conversions that explorer can perform as built-in conversions. This allows those conversions to be detected by constraints and to be used as part of other user-defined conversions. For now, a single monolithic conversion is exposed. I intend to split this up into multiple smaller conversion kinds for each kind of conversion in a follow-up change. Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
This commit is contained in:
co-authored by
Jon Ross-Perkins
parent
94872ef6da
commit
0d279b388a
@@ -31,6 +31,8 @@ auto IntrinsicExpression::FindIntrinsic(std::string_view name,
|
||||
{"new", Intrinsic::Alloc},
|
||||
{"delete", Intrinsic::Dealloc},
|
||||
{"rand", Intrinsic::Rand},
|
||||
{"implicit_as", Intrinsic::ImplicitAs},
|
||||
{"implicit_as_convert", Intrinsic::ImplicitAsConvert},
|
||||
{"int_eq", Intrinsic::IntEq},
|
||||
{"int_compare", Intrinsic::IntCompare},
|
||||
{"int_bit_complement", Intrinsic::IntBitComplement},
|
||||
@@ -61,6 +63,10 @@ auto IntrinsicExpression::name() const -> std::string_view {
|
||||
return "__intrinsic_delete";
|
||||
case IntrinsicExpression::Intrinsic::Rand:
|
||||
return "__intrinsic_rand";
|
||||
case IntrinsicExpression::Intrinsic::ImplicitAs:
|
||||
return "__intrinsic_implicit_as";
|
||||
case IntrinsicExpression::Intrinsic::ImplicitAsConvert:
|
||||
return "__intrinsic_implicit_as_convert";
|
||||
case IntrinsicExpression::Intrinsic::IntEq:
|
||||
return "__intrinsic_int_eq";
|
||||
case IntrinsicExpression::Intrinsic::IntCompare:
|
||||
|
||||
Reference in New Issue
Block a user