Skip to content

Commit 395aab8

Browse files
committed
unify debug/display impl for Terminal
1 parent 752acb3 commit 395aab8

File tree

2 files changed

+18
-22
lines changed

2 files changed

+18
-22
lines changed

src/miniscript/astelem.rs

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -89,18 +89,18 @@ impl<Pk: MiniscriptKey, Ctx: ScriptContext> Terminal<Pk, Ctx> {
8989
if ch == 'c' {
9090
if let Terminal::PkK(ref pk) = sub.node {
9191
// alias: pk(K) = c:pk_k(K)
92-
return write!(f, "pk({})", pk);
92+
return fmt_1(f, "pk(", pk, is_debug);
9393
} else if let Terminal::RawPkH(ref pkh) = sub.node {
9494
// `RawPkH` is currently unsupported in the descriptor spec
9595
// alias: pkh(K) = c:pk_h(K)
9696
// We temporarily display there using raw_pkh, but these descriptors
9797
// are not defined in the spec yet. These are prefixed with `expr`
9898
// in the descriptor string.
9999
// We do not support parsing these descriptors yet.
100-
return write!(f, "expr_raw_pkh({})", pkh);
100+
return fmt_1(f, "expr_raw_pkh(", pkh, is_debug);
101101
} else if let Terminal::PkH(ref pk) = sub.node {
102102
// alias: pkh(K) = c:pk_h(K)
103-
return write!(f, "pkh({})", pk);
103+
return fmt_1(f, "pkh(", pk, is_debug);
104104
}
105105
}
106106

@@ -119,7 +119,11 @@ impl<Pk: MiniscriptKey, Ctx: ScriptContext> Terminal<Pk, Ctx> {
119119
},
120120
_ => {}
121121
};
122-
write!(f, "{}", sub)
122+
if is_debug {
123+
write!(f, "{:?}", sub)
124+
} else {
125+
write!(f, "{}", sub)
126+
}
123127
} else {
124128
unreachable!();
125129
}
@@ -180,7 +184,6 @@ fn conditional_fmt<D: fmt::Debug + fmt::Display>(
180184

181185
impl<Pk: MiniscriptKey, Ctx: ScriptContext> fmt::Debug for Terminal<Pk, Ctx> {
182186
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
183-
184187
fn fmt_type_map(f: &mut fmt::Formatter<'_>, type_map: types::Type) -> fmt::Result {
185188
f.write_str(match type_map.corr.base {
186189
types::Base::B => "B",
@@ -223,15 +226,8 @@ impl<Pk: MiniscriptKey, Ctx: ScriptContext> fmt::Debug for Terminal<Pk, Ctx> {
223226
f.write_str("TYPECHECK FAILED")?;
224227
}
225228
f.write_str("]")?;
226-
if let Some((ch, sub)) = self.wrap_char() {
227-
fmt::Write::write_char(f, ch)?;
228-
if sub.node.wrap_char().is_none() {
229-
f.write_str(":")?;
230-
}
231-
write!(f, "{:?}", sub)
232-
} else {
233-
self.conditional_fmt(f, true)
234-
}
229+
230+
self.conditional_fmt(f, true)
235231
}
236232
}
237233

src/miniscript/mod.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -898,7 +898,7 @@ mod tests {
898898
phantom: PhantomData,
899899
}));
900900
let pkk_ms: Miniscript<String, Segwitv0> = Miniscript::from_ast(pk_node).unwrap();
901-
dummy_string_rtt(pkk_ms, "[B/onduesm]c:[K/onduesm]pk_k(\"\")", "pk()");
901+
dummy_string_rtt(pkk_ms, "[B/onduesm]pk(\"\")", "pk()");
902902

903903
let pkh_node = Terminal::Check(Arc::new(Miniscript {
904904
node: Terminal::PkH(String::from("")),
@@ -908,7 +908,7 @@ mod tests {
908908
}));
909909
let pkh_ms: Miniscript<String, Segwitv0> = Miniscript::from_ast(pkh_node).unwrap();
910910

911-
let expected_debug = "[B/nduesm]c:[K/nduesm]pk_h(\"\")";
911+
let expected_debug = "[B/nduesm]pkh(\"\")";
912912
let expected_display = "pkh()";
913913

914914
assert_eq!(pkh_ms.ty.corr.base, types::Base::B);
@@ -988,47 +988,47 @@ mod tests {
988988

989989
string_rtt(
990990
script,
991-
"[B/onduesm]c:[K/onduesm]pk_k(PublicKey { compressed: true, inner: PublicKey(aa4c32e50fb34a95a372940ae3654b692ea35294748c3dd2c08b29f87ba9288c8294efcb73dc719e45b91c45f084e77aebc07c1ff3ed8f37935130a36304a340) })",
991+
"[B/onduesm]pk(PublicKey { compressed: true, inner: PublicKey(aa4c32e50fb34a95a372940ae3654b692ea35294748c3dd2c08b29f87ba9288c8294efcb73dc719e45b91c45f084e77aebc07c1ff3ed8f37935130a36304a340) })",
992992
"pk(028c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa)"
993993
);
994994

995995
let script: Segwitv0Script = ms_str!("pk({})", pubkey.to_string());
996996

997997
string_rtt(
998998
script,
999-
"[B/onduesm]c:[K/onduesm]pk_k(PublicKey { compressed: true, inner: PublicKey(aa4c32e50fb34a95a372940ae3654b692ea35294748c3dd2c08b29f87ba9288c8294efcb73dc719e45b91c45f084e77aebc07c1ff3ed8f37935130a36304a340) })",
999+
"[B/onduesm]pk(PublicKey { compressed: true, inner: PublicKey(aa4c32e50fb34a95a372940ae3654b692ea35294748c3dd2c08b29f87ba9288c8294efcb73dc719e45b91c45f084e77aebc07c1ff3ed8f37935130a36304a340) })",
10001000
"pk(028c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa)"
10011001
);
10021002

10031003
let script: Segwitv0Script = ms_str!("tv:pk({})", pubkey.to_string());
10041004

10051005
string_rtt(
10061006
script,
1007-
"[B/onufsm]t[V/onfsm]v[B/onduesm]c:[K/onduesm]pk_k(PublicKey { compressed: true, inner: PublicKey(aa4c32e50fb34a95a372940ae3654b692ea35294748c3dd2c08b29f87ba9288c8294efcb73dc719e45b91c45f084e77aebc07c1ff3ed8f37935130a36304a340) })",
1007+
"[B/onufsm]t[V/onfsm]v:[B/onduesm]pk(PublicKey { compressed: true, inner: PublicKey(aa4c32e50fb34a95a372940ae3654b692ea35294748c3dd2c08b29f87ba9288c8294efcb73dc719e45b91c45f084e77aebc07c1ff3ed8f37935130a36304a340) })",
10081008
"tv:pk(028c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa)"
10091009
);
10101010

10111011
let script: Segwitv0Script = ms_str!("c:pk_h({})", pubkey.to_string());
10121012

10131013
string_display_debug_test(
10141014
script,
1015-
"[B/nduesm]c:[K/nduesm]pk_h(PublicKey { compressed: true, inner: PublicKey(aa4c32e50fb34a95a372940ae3654b692ea35294748c3dd2c08b29f87ba9288c8294efcb73dc719e45b91c45f084e77aebc07c1ff3ed8f37935130a36304a340) })",
1015+
"[B/nduesm]pkh(PublicKey { compressed: true, inner: PublicKey(aa4c32e50fb34a95a372940ae3654b692ea35294748c3dd2c08b29f87ba9288c8294efcb73dc719e45b91c45f084e77aebc07c1ff3ed8f37935130a36304a340) })",
10161016
"pkh(028c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa)",
10171017
);
10181018

10191019
let script: Segwitv0Script = ms_str!("pkh({})", pubkey.to_string());
10201020

10211021
string_display_debug_test(
10221022
script,
1023-
"[B/nduesm]c:[K/nduesm]pk_h(PublicKey { compressed: true, inner: PublicKey(aa4c32e50fb34a95a372940ae3654b692ea35294748c3dd2c08b29f87ba9288c8294efcb73dc719e45b91c45f084e77aebc07c1ff3ed8f37935130a36304a340) })",
1023+
"[B/nduesm]pkh(PublicKey { compressed: true, inner: PublicKey(aa4c32e50fb34a95a372940ae3654b692ea35294748c3dd2c08b29f87ba9288c8294efcb73dc719e45b91c45f084e77aebc07c1ff3ed8f37935130a36304a340) })",
10241024
"pkh(028c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa)",
10251025
);
10261026

10271027
let script: Segwitv0Script = ms_str!("tv:pkh({})", pubkey.to_string());
10281028

10291029
string_display_debug_test(
10301030
script,
1031-
"[B/nufsm]t[V/nfsm]v[B/nduesm]c:[K/nduesm]pk_h(PublicKey { compressed: true, inner: PublicKey(aa4c32e50fb34a95a372940ae3654b692ea35294748c3dd2c08b29f87ba9288c8294efcb73dc719e45b91c45f084e77aebc07c1ff3ed8f37935130a36304a340) })",
1031+
"[B/nufsm]t[V/nfsm]v:[B/nduesm]pkh(PublicKey { compressed: true, inner: PublicKey(aa4c32e50fb34a95a372940ae3654b692ea35294748c3dd2c08b29f87ba9288c8294efcb73dc719e45b91c45f084e77aebc07c1ff3ed8f37935130a36304a340) })",
10321032
"tv:pkh(028c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa)",
10331033
);
10341034
}

0 commit comments

Comments
 (0)