Add facet type values and an instruction that produces them (#4460)

Still to do:
* Represent facet type values in a canonical form
* Produce & consume facet type values instead of interface values
* `type` should be associated with a canonical facet type value
* Support `&` on facet type values
* Type check and enforce requirements in facet types

---------

Co-authored-by: Josh L <josh11b@users.noreply.github.com>
This commit is contained in:
josh11b
2024-11-04 21:43:55 +00:00
committed by GitHub
co-authored by Josh L
parent 607522c7de
commit ea0b0b4b48
18 changed files with 495 additions and 253 deletions
+2 -2
View File
@@ -1060,8 +1060,8 @@ class TypeCompleter {
template <typename InstT>
requires(
InstT::Kind
.template IsAnyOf<SemIR::AssociatedEntityType, SemIR::FunctionType,
SemIR::GenericClassType,
.template IsAnyOf<SemIR::AssociatedEntityType, SemIR::FacetType,
SemIR::FunctionType, SemIR::GenericClassType,
SemIR::GenericInterfaceType, SemIR::InterfaceType,
SemIR::UnboundElementType, SemIR::WhereExpr>())
auto BuildValueReprForInst(SemIR::TypeId /*type_id*/, InstT /*inst*/) const