about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2018-01-25 22:40:38 -0800
committerEsteban Küber <esteban@kuber.com.ar>2018-01-26 15:06:09 -0800
commit445e404ba4c9782e4f5028eccb7c9473ae33c70a (patch)
tree553c00ee92537a28e03fd5c973e2163257476296 /src
parentc39ad4b145f9eee71a5e6b52f9d10acc7e43ce0d (diff)
downloadrust-445e404ba4c9782e4f5028eccb7c9473ae33c70a.tar.gz
rust-445e404ba4c9782e4f5028eccb7c9473ae33c70a.zip
Instead of modifying the item's span synthesize it
Diffstat (limited to 'src')
-rw-r--r--src/librustc_resolve/lib.rs8
-rw-r--r--src/libsyntax/parse/parser.rs3
-rw-r--r--src/test/ui/suggestions/issue-45799-bad-extern-crate-rename-suggestion-formatting.rs1
-rw-r--r--src/test/ui/suggestions/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr4
4 files changed, 11 insertions, 5 deletions
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs
index 6fcdb1d651f..15ff0bff849 100644
--- a/src/librustc_resolve/lib.rs
+++ b/src/librustc_resolve/lib.rs
@@ -4000,7 +4000,13 @@ impl<'a> Resolver<'a> {
                                            binding.is_renamed_extern_crate()) {
                 err.span_suggestion(binding.span,
                                     rename_msg,
-                                    format!("{} as Other{}", snippet, name));
+                                    if snippet.ends_with(';') {
+                                        format!("{} as Other{};",
+                                                &snippet[..snippet.len()-1],
+                                                name)
+                                    } else {
+                                        format!("{} as Other{}", snippet, name)
+                                    });
             } else {
                 err.span_label(binding.span, rename_msg);
             }
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index a7977d5235d..35e89652c99 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -6128,10 +6128,9 @@ impl<'a> Parser<'a> {
         } else {
             (None, crate_name)
         };
+        self.expect(&token::Semi)?;
 
-        // We grab this before expecting the `;` so it's not a part of the span
         let prev_span = self.prev_span;
-        self.expect(&token::Semi)?;
 
         Ok(self.mk_item(lo.to(prev_span),
                         ident,
diff --git a/src/test/ui/suggestions/issue-45799-bad-extern-crate-rename-suggestion-formatting.rs b/src/test/ui/suggestions/issue-45799-bad-extern-crate-rename-suggestion-formatting.rs
index 7c55f9c4eb9..4d75127b645 100644
--- a/src/test/ui/suggestions/issue-45799-bad-extern-crate-rename-suggestion-formatting.rs
+++ b/src/test/ui/suggestions/issue-45799-bad-extern-crate-rename-suggestion-formatting.rs
@@ -10,3 +10,4 @@
 
 extern crate std;
 fn main() {}
+//~^^ ERROR the name `std` is defined multiple times [E0259]
diff --git a/src/test/ui/suggestions/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr b/src/test/ui/suggestions/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr
index a4eadcc8b46..d2ac15f7ffc 100644
--- a/src/test/ui/suggestions/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr
+++ b/src/test/ui/suggestions/issue-45799-bad-extern-crate-rename-suggestion-formatting.stderr
@@ -2,13 +2,13 @@ error[E0259]: the name `std` is defined multiple times
   --> $DIR/issue-45799-bad-extern-crate-rename-suggestion-formatting.rs:11:1
    |
 11 | extern crate std;
-   | ^^^^^^^^^^^^^^^^ `std` reimported here
+   | ^^^^^^^^^^^^^^^^^ `std` reimported here
    |
    = note: `std` must be defined only once in the type namespace of this module
 help: You can use `as` to change the binding name of the import
    |
 11 | extern crate std as Otherstd;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
 
 error: aborting due to previous error