From dadac15477f0ad55c742d46fe384e2b71b0bf898 Mon Sep 17 00:00:00 2001 From: P1start Date: Sat, 16 May 2015 22:35:59 +1200 Subject: [PATCH] Clarify the error message for malformed `extern crate` statements Closes #25468. --- src/libsyntax/parse/parser.rs | 6 +----- src/test/parse-fail/extern-crate-unexpected-token.rs | 11 +++++++++++ src/test/parse-fail/extern-expected-fn-or-brace.rs | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 src/test/parse-fail/extern-crate-unexpected-token.rs diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 9bf6fa88ba553..05d6cbf0a7e58 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 0000000000000..2518686575eb1 --- /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 or the MIT license +// , 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 7fb7233dc6982..21cca129658c5 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`