summaryrefslogtreecommitdiff
path: root/dhall_proc_macros/src/parse_children.rs
diff options
context:
space:
mode:
authorNadrieril Feneanar2019-09-06 11:29:12 +0200
committerGitHub2019-09-06 11:29:12 +0200
commitbcaeab3b7b114d8782be9589ad673ab9ab8c59fd (patch)
tree8b7c85fba6099f44b40d1b86486fa986718d472d /dhall_proc_macros/src/parse_children.rs
parentf1c3d1d7487fbb18b228a1082fc1c966f34b6dc3 (diff)
parent9f1c5fe4c5ea275f85d8920351591378dd87ab71 (diff)
Merge pull request #112 from Nadrieril/improve-parser
Add features to parser macros
Diffstat (limited to '')
-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)]