@@ -309,6 +309,9 @@ pub fn add_prelude_extensions<'a, H: HugrView<Node = Node> + 'a>(
309309 Ok ( err)
310310 }
311311 } )
312+ . extension_op ( prelude:: PRELUDE_ID , prelude:: NOOP_OP_ID , |context, args| {
313+ args. outputs . finish ( context. builder ( ) , args. inputs )
314+ } )
312315 . simple_extension_op :: < TupleOpDef > ( |context, args, op| match op {
313316 TupleOpDef :: UnpackTuple => {
314317 let unpack_tuple = UnpackTuple :: from_extension_op ( args. node ( ) . as_ref ( ) ) ?;
@@ -399,7 +402,7 @@ pub fn add_prelude_extensions<'a, H: HugrView<Node = Node> + 'a>(
399402#[ cfg( test) ]
400403mod test {
401404 use hugr_core:: builder:: { Dataflow , DataflowSubContainer } ;
402- use hugr_core:: extension:: prelude:: EXIT_OP_ID ;
405+ use hugr_core:: extension:: prelude:: { Noop , EXIT_OP_ID } ;
403406 use hugr_core:: extension:: PRELUDE ;
404407 use hugr_core:: types:: { Type , TypeArg } ;
405408 use hugr_core:: { type_row, Hugr } ;
@@ -500,6 +503,23 @@ mod test {
500503 check_emission ! ( hugr, prelude_llvm_ctx) ;
501504 }
502505
506+ #[ rstest]
507+ fn prelude_noop ( prelude_llvm_ctx : TestContext ) {
508+ let hugr = SimpleHugrConfig :: new ( )
509+ . with_ins ( usize_t ( ) )
510+ . with_outs ( usize_t ( ) )
511+ . with_extensions ( prelude:: PRELUDE_REGISTRY . to_owned ( ) )
512+ . finish ( |mut builder| {
513+ let in_wires = builder. input_wires ( ) ;
514+ let r = builder
515+ . add_dataflow_op ( Noop :: new ( usize_t ( ) ) , in_wires)
516+ . unwrap ( )
517+ . outputs ( ) ;
518+ builder. finish_with_outputs ( r) . unwrap ( )
519+ } ) ;
520+ check_emission ! ( hugr, prelude_llvm_ctx) ;
521+ }
522+
503523 #[ rstest]
504524 fn prelude_make_tuple ( prelude_llvm_ctx : TestContext ) {
505525 let hugr = SimpleHugrConfig :: new ( )
0 commit comments