diff --git a/src/builder/build_traits.rs b/src/builder/build_traits.rs index cd89bd5ce..66a29ccdb 100644 --- a/src/builder/build_traits.rs +++ b/src/builder/build_traits.rs @@ -355,8 +355,8 @@ pub trait Dataflow: Container { let const_node = cid.node(); let nodetype = self.hugr().get_nodetype(const_node); let input_extensions = nodetype.input_extensions().cloned(); - let op: &OpType = nodetype.into(); - let op: ops::Const = op + let op: ops::Const = nodetype + .op() .clone() .try_into() .expect("ConstID does not refer to Const op."); diff --git a/src/extension/infer.rs b/src/extension/infer.rs index f9bfdfa55..84f2b5686 100644 --- a/src/extension/infer.rs +++ b/src/extension/infer.rs @@ -13,7 +13,7 @@ use super::{ExtensionId, ExtensionSet}; use crate::{ hugr::views::HugrView, - ops::{OpTag, OpTrait, OpType}, + ops::{OpTag, OpTrait}, types::EdgeKind, Direction, Node, }; @@ -327,7 +327,7 @@ impl UnificationContext { // Separate loop so that we can assume that a metavariable has been // added for every (Node, Direction) in the graph already. for tgt_node in hugr.nodes() { - let sig: &OpType = hugr.get_nodetype(tgt_node).into(); + let sig = hugr.get_nodetype(tgt_node).op(); // Incoming ports with an edge that should mean equal extension reqs for port in hugr.node_inputs(tgt_node).filter(|src_port| { matches!( @@ -694,6 +694,7 @@ mod test { use crate::extension::{prelude::PRELUDE_REGISTRY, ExtensionSet}; use crate::hugr::{validate::ValidationError, Hugr, HugrMut, HugrView, NodeType}; use crate::macros::const_extension_ids; + use crate::ops::OpType; use crate::ops::{self, dataflow::IOTrait, handle::NodeHandle, OpTrait}; use crate::type_row; use crate::types::{FunctionType, Type, TypeRow}; diff --git a/src/hugr.rs b/src/hugr.rs index 670967bd4..a11099f55 100644 --- a/src/hugr.rs +++ b/src/hugr.rs @@ -122,6 +122,13 @@ impl NodeType { } impl NodeType { + /// Gets the underlying [OpType] i.e. without any [input_extensions] + /// + /// [input_extensions]: NodeType::input_extensions + pub fn op(&self) -> &OpType { + &self.op + } + delegate! { to self.op { /// Tag identifying the operation. @@ -134,12 +141,6 @@ impl NodeType { } } -impl<'a> From<&'a NodeType> for &'a OpType { - fn from(nt: &'a NodeType) -> Self { - &nt.op - } -} - impl OpType { /// Convert an OpType to a NodeType by giving it some input extensions pub fn with_extensions(self, rs: ExtensionSet) -> NodeType {