Просмотр исходного кода

Expose InstKind::FromInt for Inst instead of InstKind::Make (#4611)

The Inst type will type erase a specific typed instruction by storing
the kind as an integer. It does this by calling InstKind::AsInt on a
runtime or compile-time InstKind. Then it returns the kind as InstKind
by reconstituting it from the integer.

Currently it does a cast to a raw enumerator and then calls
InstKind::Make. However Make is designed to be more of an internal
detail. The more clearly paired inverse operation is InstKind::FromInt,
which is documented as being intended to be exposed by derived classes
like InstKind.
Dana Jansens 1 год назад
Родитель
Сommit
f9ca2ea2d6
2 измененных файлов с 2 добавлено и 4 удалено
  1. 1 3
      toolchain/sem_ir/inst.h
  2. 1 1
      toolchain/sem_ir/inst_kind.h

+ 1 - 3
toolchain/sem_ir/inst.h

@@ -208,9 +208,7 @@ class Inst : public Printable<Inst> {
     }
   }
 
-  auto kind() const -> InstKind {
-    return InstKind::Make(static_cast<InstKind::RawEnumType>(kind_));
-  }
+  auto kind() const -> InstKind { return InstKind::FromInt(kind_); }
 
   // Gets the type of the value produced by evaluating this instruction.
   auto type_id() const -> TypeId { return type_id_; }

+ 1 - 1
toolchain/sem_ir/inst_kind.h

@@ -103,7 +103,7 @@ class InstKind : public CARBON_ENUM_BASE(InstKind) {
   constexpr auto Define(DefinitionInfo info) const -> Definition<TypedNodeId>;
 
   using EnumBase::AsInt;
-  using EnumBase::Make;
+  using EnumBase::FromInt;
 
   // Returns true if the kind matches any of the provided instructions' kinds.
   template <typename... InstT>