|
|
@@ -166,7 +166,8 @@ struct ArrayType {
|
|
|
static constexpr auto Kind = InstKind::ArrayType.Define<Parse::ArrayExprId>(
|
|
|
{.ir_name = "array_type",
|
|
|
.is_type = InstIsType::Always,
|
|
|
- .constant_kind = InstConstantKind::Conditional});
|
|
|
+ .constant_kind = InstConstantKind::Conditional,
|
|
|
+ .deduce_through = true});
|
|
|
|
|
|
TypeId type_id;
|
|
|
InstId bound_id;
|
|
|
@@ -501,7 +502,8 @@ struct ClassType {
|
|
|
static constexpr auto Kind = InstKind::ClassType.Define<Parse::NodeId>(
|
|
|
{.ir_name = "class_type",
|
|
|
.is_type = InstIsType::Always,
|
|
|
- .constant_kind = InstConstantKind::Always});
|
|
|
+ .constant_kind = InstConstantKind::Always,
|
|
|
+ .deduce_through = true});
|
|
|
|
|
|
TypeId type_id;
|
|
|
ClassId class_id;
|
|
|
@@ -534,7 +536,8 @@ struct ConstType {
|
|
|
InstKind::ConstType.Define<Parse::PrefixOperatorConstId>(
|
|
|
{.ir_name = "const_type",
|
|
|
.is_type = InstIsType::Always,
|
|
|
- .constant_kind = InstConstantKind::Conditional});
|
|
|
+ .constant_kind = InstConstantKind::Conditional,
|
|
|
+ .deduce_through = true});
|
|
|
|
|
|
TypeId type_id;
|
|
|
TypeId inner_id;
|
|
|
@@ -606,7 +609,8 @@ struct FacetType {
|
|
|
static constexpr auto Kind = InstKind::FacetType.Define<Parse::NodeId>(
|
|
|
{.ir_name = "facet_type",
|
|
|
.is_type = InstIsType::Always,
|
|
|
- .constant_kind = InstConstantKind::Always});
|
|
|
+ .constant_kind = InstConstantKind::Always,
|
|
|
+ .deduce_through = true});
|
|
|
|
|
|
TypeId type_id;
|
|
|
FacetTypeId facet_type_id;
|
|
|
@@ -656,7 +660,8 @@ struct FloatType {
|
|
|
static constexpr auto Kind = InstKind::FloatType.Define<Parse::InvalidNodeId>(
|
|
|
{.ir_name = "float_type",
|
|
|
.is_type = InstIsType::Always,
|
|
|
- .constant_kind = InstConstantKind::Conditional});
|
|
|
+ .constant_kind = InstConstantKind::Conditional,
|
|
|
+ .deduce_through = true});
|
|
|
|
|
|
TypeId type_id;
|
|
|
// TODO: Consider adding a more compact way of representing either a small
|
|
|
@@ -879,7 +884,8 @@ struct IntType {
|
|
|
static constexpr auto Kind = InstKind::IntType.Define<Parse::InvalidNodeId>(
|
|
|
{.ir_name = "int_type",
|
|
|
.is_type = InstIsType::Always,
|
|
|
- .constant_kind = InstConstantKind::Conditional});
|
|
|
+ .constant_kind = InstConstantKind::Conditional,
|
|
|
+ .deduce_through = true});
|
|
|
|
|
|
TypeId type_id;
|
|
|
IntKind int_kind;
|
|
|
@@ -1008,7 +1014,8 @@ struct PointerType {
|
|
|
InstKind::PointerType.Define<Parse::PostfixOperatorStarId>(
|
|
|
{.ir_name = "ptr_type",
|
|
|
.is_type = InstIsType::Always,
|
|
|
- .constant_kind = InstConstantKind::Conditional});
|
|
|
+ .constant_kind = InstConstantKind::Conditional,
|
|
|
+ .deduce_through = true});
|
|
|
|
|
|
TypeId type_id;
|
|
|
TypeId pointee_id;
|
|
|
@@ -1233,7 +1240,8 @@ struct StructType {
|
|
|
InstKind::StructType.Define<Parse::StructTypeLiteralId>(
|
|
|
{.ir_name = "struct_type",
|
|
|
.is_type = InstIsType::Always,
|
|
|
- .constant_kind = InstConstantKind::Conditional});
|
|
|
+ .constant_kind = InstConstantKind::Conditional,
|
|
|
+ .deduce_through = true});
|
|
|
|
|
|
TypeId type_id;
|
|
|
StructTypeFieldsId fields_id;
|
|
|
@@ -1307,7 +1315,8 @@ struct TupleType {
|
|
|
static constexpr auto Kind = InstKind::TupleType.Define<Parse::InvalidNodeId>(
|
|
|
{.ir_name = "tuple_type",
|
|
|
.is_type = InstIsType::Always,
|
|
|
- .constant_kind = InstConstantKind::Conditional});
|
|
|
+ .constant_kind = InstConstantKind::Conditional,
|
|
|
+ .deduce_through = true});
|
|
|
|
|
|
TypeId type_id;
|
|
|
TypeBlockId elements_id;
|
|
|
@@ -1317,7 +1326,8 @@ struct TupleType {
|
|
|
struct TupleValue {
|
|
|
static constexpr auto Kind = InstKind::TupleValue.Define<Parse::NodeId>(
|
|
|
{.ir_name = "tuple_value",
|
|
|
- .constant_kind = InstConstantKind::Conditional});
|
|
|
+ .constant_kind = InstConstantKind::Conditional,
|
|
|
+ .deduce_through = true});
|
|
|
|
|
|
TypeId type_id;
|
|
|
InstBlockId elements_id;
|