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.
This commit is contained in:
Dana Jansens
2024-12-02 20:13:03 +00:00
committed by GitHub
parent a297eef2d5
commit f9ca2ea2d6
2 changed files with 2 additions and 4 deletions
+1 -3
View File
@@ -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
View File
@@ -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>