1use rnix::types::{Lambda, TypedNode};
2use rnix::SyntaxKind::*;
3
4pub fn pprint_args(lambda: &Lambda) -> String {
6 let mut lambda = lambda.clone();
8 let mut out = String::new();
9 loop {
10 let arg = lambda.arg().unwrap();
11 match arg.kind() {
12 NODE_IDENT => {
13 out.push_str(&arg.to_string());
14 out.push_str(": ");
15 let body = lambda.body().unwrap();
16 if body.kind() == NODE_LAMBDA {
17 lambda = Lambda::cast(body).unwrap();
18 } else {
19 break;
20 }
21 }
22 NODE_PATTERN => {
23 out.push_str(&arg.to_string());
24 out.push_str(": ");
25 break;
26 }
27 t => {
28 unreachable!("unhandled arg type {:?}", t);
29 }
30 }
31 }
32 out.push_str("...");
33 out
34
35 }