about summary refs log tree commit diff
path: root/src/librustc_parse
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2020-02-23 06:04:37 +0100
committerMazdak Farrokhzad <twingoow@gmail.com>2020-02-24 00:59:38 +0100
commitb01c1e2092b0d3c4e86aedf1e0875898fbde21e3 (patch)
treec45793911cee907f35ecd5ac94355c49ee062744 /src/librustc_parse
parentab84914fe47aa2da615c9e759e686d1a45f8aae3 (diff)
downloadrust-b01c1e2092b0d3c4e86aedf1e0875898fbde21e3.tar.gz
rust-b01c1e2092b0d3c4e86aedf1e0875898fbde21e3.zip
parser: tweak item kind wording
Diffstat (limited to 'src/librustc_parse')
-rw-r--r--src/librustc_parse/parser/item.rs20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/librustc_parse/parser/item.rs b/src/librustc_parse/parser/item.rs
index d2073a5473a..0e0017d4ee5 100644
--- a/src/librustc_parse/parser/item.rs
+++ b/src/librustc_parse/parser/item.rs
@@ -661,12 +661,7 @@ impl<'a> Parser<'a> {
                     self.struct_span_err(span, "associated `static` items are not allowed").emit();
                     AssocItemKind::Const(a, b)
                 }
-                _ => {
-                    let span = self.sess.source_map().def_span(span);
-                    self.struct_span_err(span, "item kind not supported in `trait` or `impl`")
-                        .emit();
-                    return None;
-                }
+                _ => return self.error_bad_item_kind(span, &kind, "`trait` or `impl`"),
             };
             Some(P(Item { attrs, id, span, vis, ident, defaultness, kind, tokens }))
         }))
@@ -858,16 +853,19 @@ impl<'a> Parser<'a> {
                     self.error_on_foreign_const(span, ident);
                     ForeignItemKind::Static(a, Mutability::Not, b)
                 }
-                _ => {
-                    let span = self.sess.source_map().def_span(span);
-                    self.struct_span_err(span, "item kind not supported in `extern` block").emit();
-                    return None;
-                }
+                _ => return self.error_bad_item_kind(span, &kind, "`extern` block"),
             };
             Some(P(Item { attrs, id, span, vis, ident, defaultness, kind, tokens }))
         }))
     }
 
+    fn error_bad_item_kind<T>(&self, span: Span, kind: &ItemKind, ctx: &str) -> Option<T> {
+        let span = self.sess.source_map().def_span(span);
+        let msg = format!("{} not supported in {}", kind.descr(), ctx);
+        self.struct_span_err(span, &msg).emit();
+        return None;
+    }
+
     fn error_on_foreign_const(&self, span: Span, ident: Ident) {
         self.struct_span_err(ident.span, "extern items cannot be `const`")
             .span_suggestion(