Skip to content

Commit

Permalink
Changed extern crate foo as bar; error message
Browse files Browse the repository at this point in the history
Closes #17709
  • Loading branch information
Felix Raimundo committed Oct 4, 2014
1 parent ae81c89 commit e69f2ab
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 5 deletions.
19 changes: 14 additions & 5 deletions src/libsyntax/parse/parser.rs
Expand Up @@ -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)
},
Expand Down
14 changes: 14 additions & 0 deletions src/test/compile-fail/extern-crate-as-no-string-help.rs
@@ -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?

5 comments on commit e69f2ab

@gamazeps
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done :)

@bors
Copy link
Contributor

@bors bors commented on e69f2ab Oct 4, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saw approval from alexcrichton
at gamazeps@e69f2ab

@bors
Copy link
Contributor

@bors bors commented on e69f2ab Oct 4, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merging gamazeps/rust/issue17709 = e69f2ab into auto

@bors
Copy link
Contributor

@bors bors commented on e69f2ab Oct 4, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gamazeps/rust/issue17709 = e69f2ab merged ok, testing candidate = 5d570379

@bors
Copy link
Contributor

@bors bors commented on e69f2ab Oct 4, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.