mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
We can't use the instruction from the generic directly, because it doesn't have the right constant value. Instead add an instruction that models the transition from the constant value in the generic to the constant value in the generic instance. Also start associating the self generic instance with unqualified lookups that find results in an enclosing generic, so that we track the information necessary to create the new instruction. --------- Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
101 lines
3.7 KiB
C++
101 lines
3.7 KiB
C++
// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
|
// Exceptions. See /LICENSE for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
// This is an X-macro header. It does not use `#include` guards, and instead is
|
|
// designed to be `#include`ed after the x-macro is defined in order for its
|
|
// inclusion to expand to the desired output. Macro definitions are cleaned up
|
|
// at the end of this file.
|
|
//
|
|
// This macro should be defined before including this header:
|
|
// - CARBON_SEM_IR_INST_KIND(Name)
|
|
// Invoked for each kind of semantic instruction.
|
|
|
|
#ifndef CARBON_SEM_IR_INST_KIND
|
|
#error "Must define the x-macro to use this file."
|
|
#endif
|
|
|
|
// For each instruction kind declared here there is a matching definition in
|
|
// `typed_insts.h`.
|
|
CARBON_SEM_IR_INST_KIND(AdaptDecl)
|
|
CARBON_SEM_IR_INST_KIND(AddrOf)
|
|
CARBON_SEM_IR_INST_KIND(AddrPattern)
|
|
CARBON_SEM_IR_INST_KIND(ArrayIndex)
|
|
CARBON_SEM_IR_INST_KIND(ArrayInit)
|
|
CARBON_SEM_IR_INST_KIND(ArrayType)
|
|
CARBON_SEM_IR_INST_KIND(AsCompatible)
|
|
CARBON_SEM_IR_INST_KIND(Assign)
|
|
CARBON_SEM_IR_INST_KIND(AssociatedConstantDecl)
|
|
CARBON_SEM_IR_INST_KIND(AssociatedEntity)
|
|
CARBON_SEM_IR_INST_KIND(AssociatedEntityType)
|
|
CARBON_SEM_IR_INST_KIND(BaseDecl)
|
|
CARBON_SEM_IR_INST_KIND(BindAlias)
|
|
CARBON_SEM_IR_INST_KIND(ExportDecl)
|
|
CARBON_SEM_IR_INST_KIND(BindName)
|
|
CARBON_SEM_IR_INST_KIND(BindSymbolicName)
|
|
CARBON_SEM_IR_INST_KIND(BindValue)
|
|
CARBON_SEM_IR_INST_KIND(BlockArg)
|
|
CARBON_SEM_IR_INST_KIND(BoolLiteral)
|
|
CARBON_SEM_IR_INST_KIND(BoundMethod)
|
|
CARBON_SEM_IR_INST_KIND(Branch)
|
|
CARBON_SEM_IR_INST_KIND(BranchIf)
|
|
CARBON_SEM_IR_INST_KIND(BranchWithArg)
|
|
CARBON_SEM_IR_INST_KIND(BuiltinInst)
|
|
CARBON_SEM_IR_INST_KIND(Call)
|
|
CARBON_SEM_IR_INST_KIND(ClassDecl)
|
|
CARBON_SEM_IR_INST_KIND(ClassElementAccess)
|
|
CARBON_SEM_IR_INST_KIND(ClassInit)
|
|
CARBON_SEM_IR_INST_KIND(ClassType)
|
|
CARBON_SEM_IR_INST_KIND(ConstType)
|
|
CARBON_SEM_IR_INST_KIND(Converted)
|
|
CARBON_SEM_IR_INST_KIND(Deref)
|
|
CARBON_SEM_IR_INST_KIND(FacetTypeAccess)
|
|
CARBON_SEM_IR_INST_KIND(FieldDecl)
|
|
CARBON_SEM_IR_INST_KIND(FloatLiteral)
|
|
CARBON_SEM_IR_INST_KIND(FloatType)
|
|
CARBON_SEM_IR_INST_KIND(FunctionDecl)
|
|
CARBON_SEM_IR_INST_KIND(FunctionType)
|
|
CARBON_SEM_IR_INST_KIND(GenericClassType)
|
|
CARBON_SEM_IR_INST_KIND(GenericInterfaceType)
|
|
CARBON_SEM_IR_INST_KIND(ImplDecl)
|
|
CARBON_SEM_IR_INST_KIND(ImportDecl)
|
|
CARBON_SEM_IR_INST_KIND(ImportRefUnloaded)
|
|
CARBON_SEM_IR_INST_KIND(ImportRefLoaded)
|
|
CARBON_SEM_IR_INST_KIND(InitializeFrom)
|
|
CARBON_SEM_IR_INST_KIND(SpecificConstant)
|
|
CARBON_SEM_IR_INST_KIND(InterfaceDecl)
|
|
CARBON_SEM_IR_INST_KIND(InterfaceType)
|
|
CARBON_SEM_IR_INST_KIND(InterfaceWitness)
|
|
CARBON_SEM_IR_INST_KIND(InterfaceWitnessAccess)
|
|
CARBON_SEM_IR_INST_KIND(IntLiteral)
|
|
CARBON_SEM_IR_INST_KIND(IntType)
|
|
CARBON_SEM_IR_INST_KIND(NameRef)
|
|
CARBON_SEM_IR_INST_KIND(Namespace)
|
|
CARBON_SEM_IR_INST_KIND(Param)
|
|
CARBON_SEM_IR_INST_KIND(PointerType)
|
|
CARBON_SEM_IR_INST_KIND(ReturnExpr)
|
|
CARBON_SEM_IR_INST_KIND(Return)
|
|
CARBON_SEM_IR_INST_KIND(SpliceBlock)
|
|
CARBON_SEM_IR_INST_KIND(StringLiteral)
|
|
CARBON_SEM_IR_INST_KIND(StructAccess)
|
|
CARBON_SEM_IR_INST_KIND(StructInit)
|
|
CARBON_SEM_IR_INST_KIND(StructLiteral)
|
|
CARBON_SEM_IR_INST_KIND(StructType)
|
|
CARBON_SEM_IR_INST_KIND(StructTypeField)
|
|
CARBON_SEM_IR_INST_KIND(StructValue)
|
|
CARBON_SEM_IR_INST_KIND(TemporaryStorage)
|
|
CARBON_SEM_IR_INST_KIND(Temporary)
|
|
CARBON_SEM_IR_INST_KIND(TupleAccess)
|
|
CARBON_SEM_IR_INST_KIND(TupleIndex)
|
|
CARBON_SEM_IR_INST_KIND(TupleInit)
|
|
CARBON_SEM_IR_INST_KIND(TupleLiteral)
|
|
CARBON_SEM_IR_INST_KIND(TupleType)
|
|
CARBON_SEM_IR_INST_KIND(TupleValue)
|
|
CARBON_SEM_IR_INST_KIND(UnaryOperatorNot)
|
|
CARBON_SEM_IR_INST_KIND(UnboundElementType)
|
|
CARBON_SEM_IR_INST_KIND(ValueAsRef)
|
|
CARBON_SEM_IR_INST_KIND(ValueOfInitializer)
|
|
CARBON_SEM_IR_INST_KIND(VarStorage)
|
|
|
|
#undef CARBON_SEM_IR_INST_KIND
|