]> git.lizzy.rs Git - rust.git/commitdiff
resolve: Consider erroneous imports used to avoid duplicate diagnostics
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>
Sun, 28 Apr 2019 18:27:01 +0000 (21:27 +0300)
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>
Sun, 28 Apr 2019 19:36:57 +0000 (22:36 +0300)
src/librustc_resolve/resolve_imports.rs
src/test/ui/imports/unresolved-imports-used.rs [new file with mode: 0644]
src/test/ui/imports/unresolved-imports-used.stderr [new file with mode: 0644]

index 58e0df1cd7ce9d61084e22efd03fe4c6b826aadf..4dddf811c0523a5e54487bdc89c5111a342a0c1d 100644 (file)
@@ -627,6 +627,8 @@ fn import_dummy_binding(&mut self, directive: &'a ImportDirective<'a>) {
             let dummy_binding = self.import(dummy_binding, directive);
             self.per_ns(|this, ns| {
                 let _ = this.try_define(directive.parent_scope.module, target, ns, dummy_binding);
+                // Consider erroneous imports used to avoid duplicate diagnostics.
+                this.record_use(target, ns, dummy_binding, false);
             });
         }
     }
diff --git a/src/test/ui/imports/unresolved-imports-used.rs b/src/test/ui/imports/unresolved-imports-used.rs
new file mode 100644 (file)
index 0000000..d1461e7
--- /dev/null
@@ -0,0 +1,12 @@
+// There should be *no* unused import errors.
+#![deny(unused_imports)]
+
+mod qux {
+   fn quz() {}
+}
+
+use qux::quz; //~ ERROR function `quz` is private
+use qux::bar; //~ ERROR unresolved import `qux::bar`
+use foo::bar; //~ ERROR unresolved import `foo`
+
+fn main() {}
diff --git a/src/test/ui/imports/unresolved-imports-used.stderr b/src/test/ui/imports/unresolved-imports-used.stderr
new file mode 100644 (file)
index 0000000..f20db88
--- /dev/null
@@ -0,0 +1,22 @@
+error[E0432]: unresolved import `qux::bar`
+  --> $DIR/unresolved-imports-used.rs:9:5
+   |
+LL | use qux::bar;
+   |     ^^^^^^^^ no `bar` in `qux`
+
+error[E0432]: unresolved import `foo`
+  --> $DIR/unresolved-imports-used.rs:10:5
+   |
+LL | use foo::bar;
+   |     ^^^ maybe a missing `extern crate foo;`?
+
+error[E0603]: function `quz` is private
+  --> $DIR/unresolved-imports-used.rs:8:10
+   |
+LL | use qux::quz;
+   |          ^^^
+
+error: aborting due to 3 previous errors
+
+Some errors have detailed explanations: E0432, E0603.
+For more information about an error, try `rustc --explain E0432`.