summaryrefslogtreecommitdiff
path: root/dhall_proc_macros/src/parse_children.rs
diff options
context:
space:
mode:
authorFintan Halpenny2019-09-06 12:43:52 +0200
committerFintan Halpenny2019-09-06 12:43:52 +0200
commit4424d3ece5db10527ae446a685a579ae768ef943 (patch)
tree688d29c25f12c2c5347e3d24db8b9b7fb83c7b04 /dhall_proc_macros/src/parse_children.rs
parent52c91e08db68e05f760ebfd465b84fe4107731df (diff)
parentbcaeab3b7b114d8782be9589ad673ab9ab8c59fd (diff)
Merge remote-tracking branch 'origin/master' into fintan/canonicalize
Diffstat (limited to 'dhall_proc_macros/src/parse_children.rs')
-rw-r--r--dhall_proc_macros/src/parse_children.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/dhall_proc_macros/src/parse_children.rs b/dhall_proc_macros/src/parse_children.rs
index b1d43fc..a35c03f 100644
--- a/dhall_proc_macros/src/parse_children.rs
+++ b/dhall_proc_macros/src/parse_children.rs
@@ -88,9 +88,7 @@ fn make_parser_branch(
let i_variable_pattern =
Ident::new("___variable_pattern", Span::call_site());
let match_pat = branch.pattern.iter().map(|item| match item {
- Single { rule_name, .. } => {
- quote!(<<Self as PestConsumer>::RuleEnum>::#rule_name)
- }
+ Single { rule_name, .. } => quote!(stringify!(#rule_name)),
Multiple { .. } => quote!(#i_variable_pattern @ ..),
});
let match_filter = branch.pattern.iter().map(|item| match item {
@@ -101,7 +99,7 @@ fn make_parser_branch(
// https://github.com/rust-lang/rust/issues/59803.
let all_match = |slice: &[_]| {
slice.iter().all(|r|
- r == &<<Self as PestConsumer>::RuleEnum>::#rule_name
+ *r == stringify!(#rule_name)
)
};
all_match(#i_variable_pattern)
@@ -192,6 +190,11 @@ pub fn parse_children(
.clone()
.into_inner()
.map(|p| p.as_rule())
+ .map(<Self as PestConsumer>::rule_alias)
+ .collect();
+ let #i_children_rules: Vec<&str> = #i_children_rules
+ .iter()
+ .map(String::as_str)
.collect();
#[allow(unused_mut)]