Skip to content

Commit 52fc781

Browse files
Run cargo fmt
1 parent 4769221 commit 52fc781

File tree

10 files changed

+4132
-1938
lines changed

10 files changed

+4132
-1938
lines changed

src/cli.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use clap::{Parser};
1+
use clap::Parser;
22
use once_cell::sync::Lazy;
33
// TODO: make non-annotation generate different DeserializeError that is simpler
44
// and works with From<cbor_event:Error> only
@@ -51,4 +51,4 @@ pub struct Cli {
5151
pub package_json: bool,
5252
}
5353

54-
pub static CLI_ARGS: Lazy<Cli> = Lazy::new(|| Cli::parse());
54+
pub static CLI_ARGS: Lazy<Cli> = Lazy::new(|| Cli::parse());

src/comment_ast.rs

Lines changed: 78 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
extern crate nom;
22
use nom::{
3+
branch::alt,
4+
bytes::complete::{tag, take_while, take_while1},
5+
multi::many0,
36
IResult,
4-
bytes::complete::{tag, take_while1, take_while}, branch::alt, multi::many0,
57
};
68

79
#[derive(Default, Debug, PartialEq)]
@@ -14,9 +16,11 @@ pub struct RuleMetadata {
1416
pub fn merge_metadata(r1: &RuleMetadata, r2: &RuleMetadata) -> RuleMetadata {
1517
let merged = RuleMetadata {
1618
name: match (r1.name.as_ref(), r2.name.as_ref()) {
17-
(Some(val1), Some(val2)) => panic!("Key \"name\" specified twice: {:?} {:?}", val1, val2),
18-
(val@Some(_), _) => val.cloned(),
19-
(_, val) => val.cloned()
19+
(Some(val1), Some(val2)) => {
20+
panic!("Key \"name\" specified twice: {:?} {:?}", val1, val2)
21+
}
22+
(val @ Some(_), _) => val.cloned(),
23+
(_, val) => val.cloned(),
2024
},
2125
is_newtype: r1.is_newtype || r2.is_newtype,
2226
no_alias: r1.no_alias || r2.no_alias,
@@ -36,14 +40,20 @@ impl RuleMetadata {
3640
let mut base = RuleMetadata::default();
3741
for result in results {
3842
match result {
39-
ParseResult::Name(name) => {
40-
match base.name.as_ref() {
41-
Some(old_name) => panic!("Key \"name\" specified twice: {:?} {:?}", old_name, name),
42-
None => { base.name = Some(name.to_string()); }
43+
ParseResult::Name(name) => match base.name.as_ref() {
44+
Some(old_name) => {
45+
panic!("Key \"name\" specified twice: {:?} {:?}", old_name, name)
46+
}
47+
None => {
48+
base.name = Some(name.to_string());
4349
}
4450
},
45-
ParseResult::NewType => { base.is_newtype = true; },
46-
ParseResult::DontGenAlias => { base.no_alias = true; },
51+
ParseResult::NewType => {
52+
base.is_newtype = true;
53+
}
54+
ParseResult::DontGenAlias => {
55+
base.no_alias = true;
56+
}
4757
}
4858
}
4959
base.verify();
@@ -87,17 +97,15 @@ fn whitespace_then_tag(input: &str) -> IResult<&str, ParseResult> {
8797

8898
fn rule_metadata(input: &str) -> IResult<&str, RuleMetadata> {
8999
let (input, parse_results) = many0(whitespace_then_tag)(input)?;
90-
91100

92101
Ok((input, RuleMetadata::from_parse_results(&parse_results)))
93102
}
94103

95-
96-
impl <'a> From<Option<&'a cddl::ast::Comments<'a>>> for RuleMetadata {
104+
impl<'a> From<Option<&'a cddl::ast::Comments<'a>>> for RuleMetadata {
97105
fn from(comments: Option<&'a cddl::ast::Comments<'a>>) -> RuleMetadata {
98106
match comments {
99107
None => RuleMetadata::default(),
100-
Some(c) => metadata_from_comments(&c.0)
108+
Some(c) => metadata_from_comments(&c.0),
101109
}
102110
}
103111
}
@@ -108,53 +116,83 @@ pub fn metadata_from_comments(comments: &[&str]) -> RuleMetadata {
108116
if let Ok(comment_metadata) = rule_metadata(comment) {
109117
result = merge_metadata(&result, &comment_metadata.1);
110118
}
111-
};
119+
}
112120
result
113121
}
114122

115123
#[test]
116124
fn parse_comment_name() {
117-
assert_eq!(rule_metadata("@name foo"), Ok(("", RuleMetadata {
118-
name: Some("foo".to_string()),
119-
is_newtype: false,
120-
no_alias: false,
121-
})));
125+
assert_eq!(
126+
rule_metadata("@name foo"),
127+
Ok((
128+
"",
129+
RuleMetadata {
130+
name: Some("foo".to_string()),
131+
is_newtype: false,
132+
no_alias: false,
133+
}
134+
))
135+
);
122136
}
123137

124138
#[test]
125139
fn parse_comment_newtype() {
126-
assert_eq!(rule_metadata("@newtype"), Ok(("", RuleMetadata {
127-
name: None,
128-
is_newtype: true,
129-
no_alias: false,
130-
})));
140+
assert_eq!(
141+
rule_metadata("@newtype"),
142+
Ok((
143+
"",
144+
RuleMetadata {
145+
name: None,
146+
is_newtype: true,
147+
no_alias: false,
148+
}
149+
))
150+
);
131151
}
132152

133153
#[test]
134154
fn parse_comment_newtype_and_name() {
135-
assert_eq!(rule_metadata("@newtype @name foo"), Ok(("", RuleMetadata {
136-
name: Some("foo".to_string()),
137-
is_newtype: true,
138-
no_alias: false,
139-
})));
155+
assert_eq!(
156+
rule_metadata("@newtype @name foo"),
157+
Ok((
158+
"",
159+
RuleMetadata {
160+
name: Some("foo".to_string()),
161+
is_newtype: true,
162+
no_alias: false,
163+
}
164+
))
165+
);
140166
}
141167

142168
#[test]
143169
fn parse_comment_newtype_and_name_inverse() {
144-
assert_eq!(rule_metadata("@name foo @newtype"), Ok(("", RuleMetadata {
145-
name: Some("foo".to_string()),
146-
is_newtype: true,
147-
no_alias: false,
148-
})));
170+
assert_eq!(
171+
rule_metadata("@name foo @newtype"),
172+
Ok((
173+
"",
174+
RuleMetadata {
175+
name: Some("foo".to_string()),
176+
is_newtype: true,
177+
no_alias: false,
178+
}
179+
))
180+
);
149181
}
150182

151183
#[test]
152184
fn parse_comment_name_noalias() {
153-
assert_eq!(rule_metadata("@no_alias @name foo"), Ok(("", RuleMetadata {
154-
name: Some("foo".to_string()),
155-
is_newtype: false,
156-
no_alias: true,
157-
})));
185+
assert_eq!(
186+
rule_metadata("@no_alias @name foo"),
187+
Ok((
188+
"",
189+
RuleMetadata {
190+
name: Some("foo".to_string()),
191+
is_newtype: false,
192+
no_alias: true,
193+
}
194+
))
195+
);
158196
}
159197

160198
#[test]

src/dep_graph.rs

Lines changed: 79 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,20 @@ pub fn topological_rule_order<'a>(rules: &'a Vec<&'a Rule<'a>>) -> Vec<&'a Rule<
88
let (ident, refs) = find_references(cddl_rule);
99
adj_list.insert(ident.ident, (*cddl_rule, refs));
1010
}
11-
let mut unvisited = adj_list.iter().map(|(k, _v)| *k).collect::<BTreeSet<&str>>();
11+
let mut unvisited = adj_list
12+
.iter()
13+
.map(|(k, _v)| *k)
14+
.collect::<BTreeSet<&str>>();
1215
let mut topo_order = Vec::new();
1316
let mut processing: BTreeSet<&'a str> = BTreeSet::new();
1417
while let Some(u) = unvisited.iter().next().map(|u| *u) {
15-
dfs_visit(&mut topo_order, &mut unvisited, &mut processing, &adj_list, u);
18+
dfs_visit(
19+
&mut topo_order,
20+
&mut unvisited,
21+
&mut processing,
22+
&adj_list,
23+
u,
24+
);
1625
}
1726
topo_order
1827
}
@@ -22,7 +31,8 @@ fn dfs_visit<'a>(
2231
unvisited: &mut BTreeSet<&'a str>,
2332
processing: &mut BTreeSet<&'a str>,
2433
adj_list: &BTreeMap<&'a str, (&'a cddl::ast::Rule<'a>, Vec<&'a Identifier<'a>>)>,
25-
u: &'a str) {
34+
u: &'a str,
35+
) {
2636
processing.insert(u);
2737
let (rule, neighbors) = adj_list.get(u).unwrap();
2838
for v in neighbors.iter() {
@@ -42,41 +52,68 @@ fn dfs_visit<'a>(
4252
fn find_references<'a>(cddl_rule: &'a Rule<'a>) -> (&'a Identifier, Vec<&'a Identifier<'a>>) {
4353
let mut refs = Vec::new();
4454
let ident = match cddl_rule {
45-
Rule::Type{ rule, .. } => {
46-
rule.value.type_choices.iter().for_each(|tc| find_refs_type1(&mut refs, &tc.type1));
55+
Rule::Type { rule, .. } => {
56+
rule.value
57+
.type_choices
58+
.iter()
59+
.for_each(|tc| find_refs_type1(&mut refs, &tc.type1));
4760
&rule.name
48-
},
49-
Rule::Group{ rule, .. } => {
50-
assert_eq!(rule.generic_params, None, "{}: Generics not supported on plain groups", rule.name);
61+
}
62+
Rule::Group { rule, .. } => {
63+
assert_eq!(
64+
rule.generic_params, None,
65+
"{}: Generics not supported on plain groups",
66+
rule.name
67+
);
5168
match &rule.entry {
52-
cddl::ast::GroupEntry::InlineGroup{ group, .. } => find_refs_group(&mut refs, group),
69+
cddl::ast::GroupEntry::InlineGroup { group, .. } => {
70+
find_refs_group(&mut refs, group)
71+
}
5372
x => panic!("Group rule with non-inline group? {:?}", x),
5473
}
5574
&rule.name
56-
},
75+
}
5776
};
5877
(ident, refs)
5978
}
6079

6180
fn find_refs_type1<'a>(refs: &mut Vec<&'a Identifier<'a>>, type1: &'a Type1<'a>) {
6281
match &type1.type2 {
63-
Type2::Typename{ ident, generic_args, .. } => {
82+
Type2::Typename {
83+
ident,
84+
generic_args,
85+
..
86+
} => {
6487
refs.push(ident);
6588
find_refs_generic_args(refs, generic_args);
66-
},
67-
Type2::ParenthesizedType{ pt, .. } => pt.type_choices.iter().for_each(|tc| find_refs_type1(refs, &tc.type1)),
68-
Type2::Map{ group, .. } => find_refs_group(refs, group),
69-
Type2::Array{ group, .. } => find_refs_group(refs, group),
70-
Type2::Unwrap{ ident, generic_args, .. } => {
89+
}
90+
Type2::ParenthesizedType { pt, .. } => pt
91+
.type_choices
92+
.iter()
93+
.for_each(|tc| find_refs_type1(refs, &tc.type1)),
94+
Type2::Map { group, .. } => find_refs_group(refs, group),
95+
Type2::Array { group, .. } => find_refs_group(refs, group),
96+
Type2::Unwrap {
97+
ident,
98+
generic_args,
99+
..
100+
} => {
71101
refs.push(ident);
72102
find_refs_generic_args(refs, generic_args);
73-
},
74-
Type2::ChoiceFromInlineGroup{ group, .. } => find_refs_group(refs, group),
75-
Type2::ChoiceFromGroup{ ident, generic_args, .. } => {
103+
}
104+
Type2::ChoiceFromInlineGroup { group, .. } => find_refs_group(refs, group),
105+
Type2::ChoiceFromGroup {
106+
ident,
107+
generic_args,
108+
..
109+
} => {
76110
refs.push(ident);
77111
find_refs_generic_args(refs, generic_args);
78-
},
79-
Type2::TaggedData{ t, .. } => t.type_choices.iter().for_each(|tc| find_refs_type1(refs, &tc.type1)),
112+
}
113+
Type2::TaggedData { t, .. } => t
114+
.type_choices
115+
.iter()
116+
.for_each(|tc| find_refs_type1(refs, &tc.type1)),
80117
_ => (),
81118
}
82119
}
@@ -85,26 +122,36 @@ fn find_refs_group<'a>(refs: &mut Vec<&'a Identifier<'a>>, group: &'a Group<'a>)
85122
for group_choice in group.group_choices.iter() {
86123
for (group_entry, _) in group_choice.group_entries.iter() {
87124
match group_entry {
88-
GroupEntry::InlineGroup{ group, .. } => find_refs_group(refs, group),
89-
GroupEntry::TypeGroupname{ ge, .. } => {
125+
GroupEntry::InlineGroup { group, .. } => find_refs_group(refs, group),
126+
GroupEntry::TypeGroupname { ge, .. } => {
90127
refs.push(&ge.name);
91128
find_refs_generic_args(refs, &ge.generic_args);
92-
},
93-
GroupEntry::ValueMemberKey{ ge, .. } => {
94-
ge.entry_type.type_choices.iter().for_each(|tc| find_refs_type1(refs, &tc.type1));
129+
}
130+
GroupEntry::ValueMemberKey { ge, .. } => {
131+
ge.entry_type
132+
.type_choices
133+
.iter()
134+
.for_each(|tc| find_refs_type1(refs, &tc.type1));
95135
match &ge.member_key {
96-
Some(MemberKey::Type1{ t1, .. }) => find_refs_type1(refs, t1),
97-
Some(MemberKey::NonMemberKey{ .. }) => unimplemented!("Please open a github issue with repro steps"),
136+
Some(MemberKey::Type1 { t1, .. }) => find_refs_type1(refs, t1),
137+
Some(MemberKey::NonMemberKey { .. }) => {
138+
unimplemented!("Please open a github issue with repro steps")
139+
}
98140
_ => (),
99141
}
100-
},
142+
}
101143
}
102144
}
103145
}
104146
}
105147

106-
fn find_refs_generic_args<'a>(refs: &mut Vec<&'a Identifier<'a>>, generic_arg: &'a Option<GenericArgs<'a>>) {
148+
fn find_refs_generic_args<'a>(
149+
refs: &mut Vec<&'a Identifier<'a>>,
150+
generic_arg: &'a Option<GenericArgs<'a>>,
151+
) {
107152
if let Some(arg) = generic_arg {
108-
arg.args.iter().for_each(|arg| find_refs_type1(refs, arg.arg.as_ref()));
153+
arg.args
154+
.iter()
155+
.for_each(|arg| find_refs_type1(refs, arg.arg.as_ref()));
109156
}
110-
}
157+
}

0 commit comments

Comments
 (0)