where check stage, step 2: SemIR (#4349)

The check stage now produces SemIR instructions to represent a `where`
clause. It still does not check types.

---------

Co-authored-by: Josh L <josh11b@users.noreply.github.com>
Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
This commit is contained in:
josh11b
2024-09-27 01:41:56 +00:00
committed by GitHub
co-authored by Josh L Jon Ross-Perkins
parent 4c9ffb0dee
commit bdbd1079a6
13 changed files with 198 additions and 46 deletions
+6 -4
View File
@@ -1073,10 +1073,12 @@ class TypeCompleter {
}
template <typename InstT>
requires(InstT::Kind.template IsAnyOf<
SemIR::AssociatedEntityType, SemIR::FunctionType,
SemIR::GenericClassType, SemIR::GenericInterfaceType,
SemIR::InterfaceType, SemIR::UnboundElementType>())
requires(
InstT::Kind
.template IsAnyOf<SemIR::AssociatedEntityType, SemIR::FunctionType,
SemIR::GenericClassType,
SemIR::GenericInterfaceType, SemIR::InterfaceType,
SemIR::UnboundElementType, SemIR::WhereExpr>())
auto BuildValueReprForInst(SemIR::TypeId /*type_id*/, InstT /*inst*/) const
-> SemIR::ValueRepr {
// These types have no runtime operations, so we use an empty value