about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-05-16 10:53:25 +0000
committerbors <bors@rust-lang.org>2015-05-16 10:53:25 +0000
commit8fdb3a4ad902162f3f6809e007a79342c2ce19db (patch)
tree2895995ae30f3a719116cdccd89bd336da81419a
parent0becf6aec73f90408c8eafb46bf7742389497e5c (diff)
parentdadac15477f0ad55c742d46fe384e2b71b0bf898 (diff)
downloadrust-8fdb3a4ad902162f3f6809e007a79342c2ce19db.tar.gz
rust-8fdb3a4ad902162f3f6809e007a79342c2ce19db.zip
Auto merge of #25487 - P1start:extern-crate-unexpected-error, r=huonw
Closes #25468.
-rw-r--r--src/libsyntax/parse/parser.rs6
-rw-r--r--src/test/parse-fail/extern-crate-unexpected-token.rs11
-rw-r--r--src/test/parse-fail/extern-expected-fn-or-brace.rs2
3 files changed, 13 insertions, 6 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 165ce7b122b..b3b20f2d0ae 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -5267,11 +5267,7 @@ impl<'a> Parser<'a> {
                 return Ok(Some(try!(self.parse_item_foreign_mod(lo, opt_abi, visibility, attrs))));
             }
 
-            let span = self.span;
-            let token_str = self.this_token_to_string();
-            return Err(self.span_fatal(span,
-                            &format!("expected `{}` or `fn`, found `{}`", "{",
-                                    token_str)))
+            try!(self.expect_one_of(&[], &[]));
         }
 
         if try!(self.eat_keyword_noexpect(keywords::Virtual) ){
diff --git a/src/test/parse-fail/extern-crate-unexpected-token.rs b/src/test/parse-fail/extern-crate-unexpected-token.rs
new file mode 100644
index 00000000000..2518686575e
--- /dev/null
+++ b/src/test/parse-fail/extern-crate-unexpected-token.rs
@@ -0,0 +1,11 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+extern crte foo; //~ ERROR expected one of `crate`, `fn`, or `{`, found `crte`
diff --git a/src/test/parse-fail/extern-expected-fn-or-brace.rs b/src/test/parse-fail/extern-expected-fn-or-brace.rs
index 7fb7233dc69..21cca129658 100644
--- a/src/test/parse-fail/extern-expected-fn-or-brace.rs
+++ b/src/test/parse-fail/extern-expected-fn-or-brace.rs
@@ -13,4 +13,4 @@
 // Verifies that the expected token errors for `extern crate` are
 // raised
 
-extern "C" mod foo; //~ERROR expected `{` or `fn`, found `mod`
+extern "C" mod foo; //~ERROR expected one of `fn` or `{`, found `mod`