diff options
| author | P1start <rewi-github@whanau.org> | 2015-05-16 22:35:59 +1200 |
|---|---|---|
| committer | P1start <rewi-github@whanau.org> | 2015-05-16 22:35:59 +1200 |
| commit | dadac15477f0ad55c742d46fe384e2b71b0bf898 (patch) | |
| tree | f0fd3e03f6616b1c7cd348a111be8b4cf49e7950 | |
| parent | 716f920b7e234b450f272346fea961832505c06e (diff) | |
Clarify the error message for malformed `extern crate` statements
Closes #25468.
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 6 | ||||
| -rw-r--r-- | src/test/parse-fail/extern-crate-unexpected-token.rs | 11 | ||||
| -rw-r--r-- | src/test/parse-fail/extern-expected-fn-or-brace.rs | 2 |
3 files changed, 13 insertions, 6 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 9bf6fa88ba5..05d6cbf0a7e 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -5266,11 +5266,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` |
