1
Fork 0

Changed extern crate foo as bar; error message

Closes #17709
This commit is contained in:
Felix Raimundo 2014-10-04 02:16:38 +02:00
parent ae81c89f34
commit e69f2ab8c0
2 changed files with 27 additions and 4 deletions

View file

@ -4981,18 +4981,27 @@ impl<'a> Parser<'a> {
attrs: Vec<Attribute> )
-> ItemOrViewItem {
let span = self.span;
let (maybe_path, ident) = match self.token {
token::IDENT(..) => {
let the_ident = self.parse_ident();
self.expect_one_of(&[], &[token::EQ, token::SEMI]);
let path = if self.token == token::EQ {
self.bump();
let path = if self.eat(&token::EQ) {
let path = self.parse_str();
let span = self.span;
self.obsolete(span, ObsoleteExternCrateRenaming);
Some(path)
} else {None};
} else if self.eat_keyword(keywords::As) {
// skip the ident if there is one
if is_ident(&self.token) { self.bump(); }
self.span_err(span,
format!("expected `;`, found `as`; perhaps you meant \
to enclose the crate name `{}` in a string?",
the_ident.as_str()).as_slice());
None
} else {
None
};
self.expect(&token::SEMI);
(path, the_ident)
},

View file

@ -0,0 +1,14 @@
// Copyright 2014 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.
// Tests that the proper help is displayed in the error message
extern crate foo as bar;
//~^ ERROR expected `;`, found `as`; perhaps you meant to enclose the crate name `foo` in a string?