From 46efff0d35cf1a363350a52315b5dfd18fc7b8c3 Mon Sep 17 00:00:00 2001 From: Alan Lawrence Date: Tue, 24 Oct 2023 18:30:58 +0100 Subject: [PATCH] Add NodeType::op(), remove From conversion --- src/builder/build_traits.rs | 4 ++-- src/extension/infer.rs | 5 +++-- src/hugr.rs | 13 +++++++------ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/builder/build_traits.rs b/src/builder/build_traits.rs index a890dcd6c..3240e0885 100644 --- a/src/builder/build_traits.rs +++ b/src/builder/build_traits.rs @@ -354,8 +354,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 ae59d9127..e4927f23f 100644 --- a/src/extension/infer.rs +++ b/src/extension/infer.rs @@ -14,7 +14,7 @@ use super::{ExtensionId, ExtensionSet}; use crate::{ hugr::views::HugrView, hugr::Node, - ops::{OpTag, OpTrait, OpType}, + ops::{OpTag, OpTrait}, types::EdgeKind, Direction, }; @@ -328,7 +328,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!( @@ -695,6 +695,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 ec44afa46..89f0bd13e 100644 --- a/src/hugr.rs +++ b/src/hugr.rs @@ -121,6 +121,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. @@ -133,12 +140,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 {