@@ -516,13 +516,14 @@ macro_rules! descriptor {
516516 use $crate:: miniscript:: descriptor:: { Descriptor , DescriptorPublicKey } ;
517517
518518 $crate:: impl_top_level_pk!( Pkh , $crate:: miniscript:: Legacy , $key)
519+ . and_then( |( a, b, c) | Ok ( ( a. map_err( |e| miniscript:: Error :: from( e) ) ?, b, c) ) )
519520 . map( |( a, b, c) | ( Descriptor :: <DescriptorPublicKey >:: Pkh ( a) , b, c) )
520521 } ) ;
521522 ( wpkh ( $key: expr ) ) => ( {
522523 use $crate:: miniscript:: descriptor:: { Descriptor , DescriptorPublicKey } ;
523524
524525 $crate:: impl_top_level_pk!( Wpkh , $crate:: miniscript:: Segwitv0 , $key)
525- . and_then( |( a, b, c) | Ok ( ( a?, b, c) ) )
526+ . and_then( |( a, b, c) | Ok ( ( a. map_err ( |e| miniscript :: Error :: from ( e ) ) ?, b, c) ) )
526527 . map( |( a, b, c) | ( Descriptor :: <DescriptorPublicKey >:: Wpkh ( a) , b, c) )
527528 } ) ;
528529 ( sh ( wpkh ( $key: expr ) ) ) => ( {
@@ -532,7 +533,7 @@ macro_rules! descriptor {
532533 use $crate:: miniscript:: descriptor:: { Descriptor , DescriptorPublicKey , Sh } ;
533534
534535 $crate:: impl_top_level_pk!( Wpkh , $crate:: miniscript:: Segwitv0 , $key)
535- . and_then( |( a, b, c) | Ok ( ( a?, b, c) ) )
536+ . and_then( |( a, b, c) | Ok ( ( a. map_err ( |e| miniscript :: Error :: from ( e ) ) ?, b, c) ) )
536537 . and_then( |( a, b, c) | Ok ( ( Descriptor :: <DescriptorPublicKey >:: Sh ( Sh :: new_wpkh( a. into_inner( ) ) ?) , b, c) ) )
537538 } ) ;
538539 ( sh ( $( $minisc: tt ) * ) ) => ( {
@@ -702,7 +703,7 @@ macro_rules! fragment {
702703 $crate:: keys:: make_pkh( $key, & secp)
703704 } ) ;
704705 ( after ( $value: expr ) ) => ( {
705- $crate:: impl_leaf_opcode_value!( After , $crate:: bitcoin :: PackedLockTime ( $value) ) // TODO!! https://github.com/rust-bitcoin/rust-bitcoin/issues/1302
706+ $crate:: impl_leaf_opcode_value!( After , $crate:: miniscript :: AbsLockTime :: from_consensus ( $value) )
706707 } ) ;
707708 ( older ( $value: expr ) ) => ( {
708709 $crate:: impl_leaf_opcode_value!( Older , $crate:: bitcoin:: Sequence ( $value) ) // TODO!!
@@ -796,7 +797,6 @@ macro_rules! fragment {
796797#[ cfg( test) ]
797798mod test {
798799 use alloc:: string:: ToString ;
799- use bitcoin:: hashes:: hex:: ToHex ;
800800 use bitcoin:: secp256k1:: Secp256k1 ;
801801 use miniscript:: descriptor:: { DescriptorPublicKey , KeyMap } ;
802802 use miniscript:: { Descriptor , Legacy , Segwitv0 } ;
@@ -805,8 +805,8 @@ mod test {
805805
806806 use crate :: descriptor:: { DescriptorError , DescriptorMeta } ;
807807 use crate :: keys:: { DescriptorKey , IntoDescriptorKey , ValidNetworks } ;
808+ use bitcoin:: bip32;
808809 use bitcoin:: network:: constants:: Network :: { Bitcoin , Regtest , Signet , Testnet } ;
809- use bitcoin:: util:: bip32;
810810 use bitcoin:: PrivateKey ;
811811
812812 // test the descriptor!() macro
@@ -822,18 +822,15 @@ mod test {
822822 assert_eq ! ( desc. is_witness( ) , is_witness) ;
823823 assert_eq ! ( !desc. has_wildcard( ) , is_fixed) ;
824824 for i in 0 ..expected. len ( ) {
825- let index = i as u32 ;
826- let child_desc = if !desc. has_wildcard ( ) {
827- desc. at_derivation_index ( 0 )
828- } else {
829- desc. at_derivation_index ( index)
830- } ;
825+ let child_desc = desc
826+ . at_derivation_index ( i as u32 )
827+ . expect ( "i is not hardened" ) ;
831828 let address = child_desc. address ( Regtest ) ;
832829 if let Ok ( address) = address {
833830 assert_eq ! ( address. to_string( ) , * expected. get( i) . unwrap( ) ) ;
834831 } else {
835832 let script = child_desc. script_pubkey ( ) ;
836- assert_eq ! ( script. to_hex ( ) . as_str ( ) , * expected. get( i) . unwrap( ) ) ;
833+ assert_eq ! ( script. to_hex_string ( ) , * expected. get( i) . unwrap( ) ) ;
837834 }
838835 }
839836 }
@@ -1178,9 +1175,7 @@ mod test {
11781175 }
11791176
11801177 #[ test]
1181- #[ should_panic(
1182- expected = "Miniscript(ContextError(CompressedOnly(\" 04b4632d08485ff1df2db55b9dafd23347d1c47a457072a1e87be26896549a87378ec38ff91d43e8c2092ebda601780485263da089465619e0358a5c1be7ac91f4\" )))"
1183- ) ]
1178+ #[ should_panic( expected = "Miniscript(ContextError(UncompressedKeysNotAllowed))" ) ]
11841179 fn test_dsl_miniscript_checks ( ) {
11851180 let mut uncompressed_pk =
11861181 PrivateKey :: from_wif ( "L5EZftvrYaSudiozVRzTqLcHLNDoVn7H5HSfM9BAN6tMJX8oTWz6" ) . unwrap ( ) ;
0 commit comments