about summary refs log tree commit diff
path: root/src/librustc_parse/parser
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2020-02-01 10:26:11 +0100
committerMazdak Farrokhzad <twingoow@gmail.com>2020-02-13 16:29:10 +0100
commitad72c3abb9a7f9746d6ccc381e69ba88fb15b5cd (patch)
tree554681e88448fae767ba8c04025cf01f3ec48135 /src/librustc_parse/parser
parentaaaf0ba072815d275820d8ac85ece6eeb9182321 (diff)
downloadrust-ad72c3abb9a7f9746d6ccc381e69ba88fb15b5cd.tar.gz
rust-ad72c3abb9a7f9746d6ccc381e69ba88fb15b5cd.zip
parser: inline parse_assoc_macro_invoc
Diffstat (limited to 'src/librustc_parse/parser')
-rw-r--r--src/librustc_parse/parser/item.rs30
1 files changed, 10 insertions, 20 deletions
diff --git a/src/librustc_parse/parser/item.rs b/src/librustc_parse/parser/item.rs
index af9700ee81e..500aaaf43b9 100644
--- a/src/librustc_parse/parser/item.rs
+++ b/src/librustc_parse/parser/item.rs
@@ -333,24 +333,6 @@ impl<'a> Parser<'a> {
         self.token.is_keyword(kw::Async) && self.is_keyword_ahead(1, &[kw::Fn])
     }
 
-    /// Parses a macro invocation inside a `trait`, `impl`, or `extern` block.
-    fn parse_assoc_macro_invoc(
-        &mut self,
-        item_kind: &str,
-        vis: &Visibility,
-        at_end: &mut bool,
-    ) -> PResult<'a, Option<Mac>> {
-        if self.isnt_macro_invocation() {
-            Err(self.missing_assoc_item_kind_err(item_kind, self.prev_span))
-        } else if self.token.is_path_start() {
-            let mac = self.parse_item_macro(vis)?;
-            *at_end = true;
-            Ok(Some(mac))
-        } else {
-            Ok(None)
-        }
-    }
-
     fn missing_assoc_item_kind_err(
         &self,
         item_type: &str,
@@ -690,7 +672,11 @@ impl<'a> Parser<'a> {
             (ident, AssocItemKind::Fn(sig, body), generics)
         } else if self.check_keyword(kw::Const) {
             self.parse_assoc_const()?
-        } else if let Some(mac) = self.parse_assoc_macro_invoc("associated", &vis, at_end)? {
+        } else if self.isnt_macro_invocation() {
+            return Err(self.missing_assoc_item_kind_err("associated", self.prev_span));
+        } else if self.token.is_path_start() {
+            let mac = self.parse_item_macro(&vis)?;
+            *at_end = true;
             (Ident::invalid(), AssocItemKind::Macro(mac), Generics::default())
         } else {
             self.recover_attrs_no_item(&attrs)?;
@@ -913,7 +899,11 @@ impl<'a> Parser<'a> {
                 )
                 .emit();
             self.parse_item_foreign_static()?
-        } else if let Some(mac) = self.parse_assoc_macro_invoc("extern", &vis, at_end)? {
+        } else if self.isnt_macro_invocation() {
+            return Err(self.missing_assoc_item_kind_err("extern", self.prev_span));
+        } else if self.token.is_path_start() {
+            let mac = self.parse_item_macro(&vis)?;
+            *at_end = true;
             (Ident::invalid(), ForeignItemKind::Macro(mac))
         } else {
             self.recover_attrs_no_item(&attrs)?;