More systematic error reporting in path resolution

This commit is contained in:
Vadim Petrochenkov 2016-12-01 01:35:25 +03:00 committed by petrochenkov
parent 3fb676afb0
commit 09aba18e10
127 changed files with 1243 additions and 1249 deletions

View File

@ -298,8 +298,7 @@ pub trait CrateStore<'tcx> {
// trait/impl-item info // trait/impl-item info
fn trait_of_item(&self, def_id: DefId) -> Option<DefId>; fn trait_of_item(&self, def_id: DefId) -> Option<DefId>;
fn associated_item<'a>(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>, def: DefId) fn associated_item(&self, def: DefId) -> Option<ty::AssociatedItem>;
-> Option<ty::AssociatedItem>;
// flags // flags
fn is_const_fn(&self, did: DefId) -> bool; fn is_const_fn(&self, did: DefId) -> bool;
@ -456,8 +455,7 @@ impl<'tcx> CrateStore<'tcx> for DummyCrateStore {
// trait/impl-item info // trait/impl-item info
fn trait_of_item(&self, def_id: DefId) -> Option<DefId> { bug!("trait_of_item") } fn trait_of_item(&self, def_id: DefId) -> Option<DefId> { bug!("trait_of_item") }
fn associated_item<'a>(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>, def: DefId) fn associated_item(&self, def: DefId) -> Option<ty::AssociatedItem> { bug!("associated_item") }
-> Option<ty::AssociatedItem> { bug!("associated_item") }
// flags // flags
fn is_const_fn(&self, did: DefId) -> bool { bug!("is_const_fn") } fn is_const_fn(&self, did: DefId) -> bool { bug!("is_const_fn") }

View File

@ -2071,7 +2071,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
pub fn associated_item(self, def_id: DefId) -> AssociatedItem { pub fn associated_item(self, def_id: DefId) -> AssociatedItem {
self.associated_items.memoize(def_id, || { self.associated_items.memoize(def_id, || {
if !def_id.is_local() { if !def_id.is_local() {
return self.sess.cstore.associated_item(self.global_tcx(), def_id) return self.sess.cstore.associated_item(def_id)
.expect("missing AssociatedItem in metadata"); .expect("missing AssociatedItem in metadata");
} }
@ -2526,8 +2526,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
/// ID of the impl that the method belongs to. Otherwise, return `None`. /// ID of the impl that the method belongs to. Otherwise, return `None`.
pub fn impl_of_method(self, def_id: DefId) -> Option<DefId> { pub fn impl_of_method(self, def_id: DefId) -> Option<DefId> {
if def_id.krate != LOCAL_CRATE { if def_id.krate != LOCAL_CRATE {
return self.sess.cstore.associated_item(self.global_tcx(), def_id) return self.sess.cstore.associated_item(def_id).and_then(|item| {
.and_then(|item| {
match item.container { match item.container {
TraitContainer(_) => None, TraitContainer(_) => None,
ImplContainer(def_id) => Some(def_id), ImplContainer(def_id) => Some(def_id),

View File

@ -188,8 +188,7 @@ impl<'tcx> CrateStore<'tcx> for cstore::CStore {
self.get_crate_data(def_id.krate).get_trait_of_item(def_id.index) self.get_crate_data(def_id.krate).get_trait_of_item(def_id.index)
} }
fn associated_item<'a>(&self, _tcx: TyCtxt<'a, 'tcx, 'tcx>, def: DefId) fn associated_item(&self, def: DefId) -> Option<ty::AssociatedItem>
-> Option<ty::AssociatedItem>
{ {
self.dep_graph.read(DepNode::MetaData(def)); self.dep_graph.read(DepNode::MetaData(def));
self.get_crate_data(def.krate).get_associated_item(def.index) self.get_crate_data(def.krate).get_associated_item(def.index)

View File

@ -417,28 +417,18 @@ impl<'a> Resolver<'a> {
let ident = Ident::with_empty_ctxt(child.name); let ident = Ident::with_empty_ctxt(child.name);
let def = child.def; let def = child.def;
let def_id = def.def_id(); let def_id = def.def_id();
let vis = match def { let vis = self.session.cstore.visibility(def_id);
Def::Macro(..) => ty::Visibility::Public,
_ if parent.is_trait() => ty::Visibility::Public,
_ => self.session.cstore.visibility(def_id),
};
match def { match def {
Def::Mod(..) | Def::Enum(..) => { Def::Mod(..) | Def::Enum(..) => {
let module = self.new_module(parent, ModuleKind::Def(def, ident.name), def_id); let module = self.new_module(parent, ModuleKind::Def(def, ident.name), def_id);
self.define(parent, ident, TypeNS, (module, vis, DUMMY_SP, Mark::root())); self.define(parent, ident, TypeNS, (module, vis, DUMMY_SP, Mark::root()));
} }
Def::Variant(..) => { Def::Variant(..) | Def::TyAlias(..) => {
self.define(parent, ident, TypeNS, (def, vis, DUMMY_SP, Mark::root())); self.define(parent, ident, TypeNS, (def, vis, DUMMY_SP, Mark::root()));
} }
Def::VariantCtor(..) => { Def::Fn(..) | Def::Static(..) | Def::Const(..) |
self.define(parent, ident, ValueNS, (def, vis, DUMMY_SP, Mark::root())); Def::VariantCtor(..) | Def::StructCtor(..) => {
}
Def::Fn(..) |
Def::Static(..) |
Def::Const(..) |
Def::AssociatedConst(..) |
Def::Method(..) => {
self.define(parent, ident, ValueNS, (def, vis, DUMMY_SP, Mark::root())); self.define(parent, ident, ValueNS, (def, vis, DUMMY_SP, Mark::root()));
} }
Def::Trait(..) => { Def::Trait(..) => {
@ -446,29 +436,19 @@ impl<'a> Resolver<'a> {
let module = self.new_module(parent, module_kind, parent.normal_ancestor_id); let module = self.new_module(parent, module_kind, parent.normal_ancestor_id);
self.define(parent, ident, TypeNS, (module, vis, DUMMY_SP, Mark::root())); self.define(parent, ident, TypeNS, (module, vis, DUMMY_SP, Mark::root()));
// If this is a trait, add all the trait item names to the trait info. for child in self.session.cstore.item_children(def_id) {
let trait_item_def_ids = self.session.cstore.associated_item_def_ids(def_id); let ns = if let Def::AssociatedTy(..) = child.def { TypeNS } else { ValueNS };
for trait_item_def_id in trait_item_def_ids { let ident = Ident::with_empty_ctxt(child.name);
let trait_item_name = self.session.cstore.def_key(trait_item_def_id) self.define(module, ident, ns, (child.def, ty::Visibility::Public,
.disambiguated_data.data.get_opt_name() DUMMY_SP, Mark::root()));
.expect("opt_item_name returned None for trait");
self.trait_item_map.insert((trait_item_name, def_id), false);
}
}
Def::TyAlias(..) | Def::AssociatedTy(..) => {
self.define(parent, ident, TypeNS, (def, vis, DUMMY_SP, Mark::root()));
}
Def::Struct(..) => {
self.define(parent, ident, TypeNS, (def, vis, DUMMY_SP, Mark::root()));
// Record field names for error reporting. let has_self = self.session.cstore.associated_item(child.def.def_id())
let field_names = self.session.cstore.struct_field_names(def_id); .map_or(false, |item| item.method_has_self_argument);
self.insert_field_names(def_id, field_names); self.trait_item_map.insert((def_id, child.name, ns), (child.def, has_self));
}
module.populated.set(true);
} }
Def::StructCtor(..) => { Def::Struct(..) | Def::Union(..) => {
self.define(parent, ident, ValueNS, (def, vis, DUMMY_SP, Mark::root()));
}
Def::Union(..) => {
self.define(parent, ident, TypeNS, (def, vis, DUMMY_SP, Mark::root())); self.define(parent, ident, TypeNS, (def, vis, DUMMY_SP, Mark::root()));
// Record field names for error reporting. // Record field names for error reporting.
@ -478,15 +458,7 @@ impl<'a> Resolver<'a> {
Def::Macro(..) => { Def::Macro(..) => {
self.define(parent, ident, MacroNS, (def, vis, DUMMY_SP, Mark::root())); self.define(parent, ident, MacroNS, (def, vis, DUMMY_SP, Mark::root()));
} }
Def::Local(..) | _ => bug!("unexpected definition: {:?}", def)
Def::PrimTy(..) |
Def::TyParam(..) |
Def::Upvar(..) |
Def::Label(..) |
Def::SelfTy(..) |
Def::Err => {
bug!("unexpected definition: {:?}", def);
}
} }
} }
@ -751,18 +723,15 @@ impl<'a, 'b> Visitor<'a> for BuildReducedGraphVisitor<'a, 'b> {
// Add the item to the trait info. // Add the item to the trait info.
let item_def_id = self.resolver.definitions.local_def_id(item.id); let item_def_id = self.resolver.definitions.local_def_id(item.id);
let mut is_static_method = false; let (def, ns, has_self) = match item.node {
let (def, ns) = match item.node { TraitItemKind::Const(..) => (Def::AssociatedConst(item_def_id), ValueNS, false),
TraitItemKind::Const(..) => (Def::AssociatedConst(item_def_id), ValueNS), TraitItemKind::Method(ref sig, _) =>
TraitItemKind::Method(ref sig, _) => { (Def::Method(item_def_id), ValueNS, sig.decl.has_self()),
is_static_method = !sig.decl.has_self(); TraitItemKind::Type(..) => (Def::AssociatedTy(item_def_id), TypeNS, false),
(Def::Method(item_def_id), ValueNS)
}
TraitItemKind::Type(..) => (Def::AssociatedTy(item_def_id), TypeNS),
TraitItemKind::Macro(_) => bug!(), // handled above TraitItemKind::Macro(_) => bug!(), // handled above
}; };
self.resolver.trait_item_map.insert((item.ident.name, def_id), is_static_method); self.resolver.trait_item_map.insert((def_id, item.ident.name, ns), (def, has_self));
let vis = ty::Visibility::Public; let vis = ty::Visibility::Public;
self.resolver.define(parent, item.ident, ns, (def, vis, item.span, self.expansion)); self.resolver.define(parent, item.ident, ns, (def, vis, item.span, self.expansion));

View File

@ -860,6 +860,26 @@ match (A, B, C) {
``` ```
"##, "##,
E0422: r##"
You are trying to use an identifier that is either undefined or not a struct.
Erroneous code example:
``` compile_fail,E0422
fn main () {
let x = Foo { x: 1, y: 2 };
}
```
In this case, `Foo` is undefined, so it inherently isn't anything, and
definitely not a struct.
```compile_fail
fn main () {
let foo = 1;
let x = foo { x: 1, y: 2 };
}
```
In this case, `foo` is defined, but is not a struct, so Rust can't use it as
one.
"##,
E0423: r##" E0423: r##"
A `struct` variant name was used like a function name. A `struct` variant name was used like a function name.
@ -1519,7 +1539,12 @@ register_diagnostics! {
// E0419, merged into 531 // E0419, merged into 531
// E0420, merged into 532 // E0420, merged into 532
// E0421, merged into 531 // E0421, merged into 531
// E0422, merged into 531/532
E0531, // unresolved pattern path kind `name` E0531, // unresolved pattern path kind `name`
// E0427, merged into 530 // E0427, merged into 530
E0573,
E0574,
E0575,
E0576,
E0577,
E0578,
} }

File diff suppressed because it is too large Load Diff

View File

@ -717,7 +717,7 @@ impl<'a, 'b:'a> ImportResolver<'a, 'b> {
} }
// Record the destination of this import // Record the destination of this import
self.def_map.insert(directive.id, PathResolution::new(module.def().unwrap())); self.record_def(directive.id, PathResolution::new(module.def().unwrap()));
} }
// Miscellaneous post-processing, including recording reexports, reporting conflicts, // Miscellaneous post-processing, including recording reexports, reporting conflicts,

View File

@ -1519,14 +1519,7 @@ impl<'o, 'gcx: 'tcx, 'tcx> AstConv<'gcx, 'tcx>+'o {
self.set_tainted_by_errors(); self.set_tainted_by_errors();
return self.tcx().types.err; return self.tcx().types.err;
} }
_ => { _ => span_bug!(span, "unexpected definition: {:?}", path.def)
struct_span_err!(tcx.sess, span, E0248,
"found value `{}` used as a type",
tcx.item_path_str(path.def.def_id()))
.span_label(span, &format!("value used as a type"))
.emit();
return self.tcx().types.err;
}
} }
} }

View File

@ -2861,25 +2861,6 @@ struct Bar<S, T> { x: Foo<S, T> }
``` ```
"##, "##,
E0248: r##"
This error indicates an attempt to use a value where a type is expected. For
example:
```compile_fail,E0248
enum Foo {
Bar(u32)
}
fn do_something(x: Foo::Bar) { }
```
In this example, we're attempting to take a type of `Foo::Bar` in the
do_something function. This is not legal: `Foo::Bar` is a value of type `Foo`,
not a distinct static type. Likewise, it's not legal to attempt to
`impl Foo::Bar`: instead, you must `impl Foo` and then pattern match to specify
behavior for specific enum variants.
"##,
E0569: r##" E0569: r##"
If an impl has a generic parameter with the `#[may_dangle]` attribute, then If an impl has a generic parameter with the `#[may_dangle]` attribute, then
that impl must be declared as an `unsafe impl. For example: that impl must be declared as an `unsafe impl. For example:
@ -4247,6 +4228,7 @@ register_diagnostics! {
E0245, // not a trait E0245, // not a trait
// E0246, // invalid recursive type // E0246, // invalid recursive type
// E0247, // E0247,
// E0248, // value used as a type, now reported earlier during resolution as E0412
// E0249, // E0249,
// E0319, // trait impls for defaulted traits allowed just for structs/enums // E0319, // trait impls for defaulted traits allowed just for structs/enums
E0320, // recursive overflow during dropck E0320, // recursive overflow during dropck

View File

@ -14,5 +14,5 @@
extern crate macro_crate_test; extern crate macro_crate_test;
fn main() { fn main() {
macro_crate_test::foo(); //~ ERROR unresolved name macro_crate_test::foo(); //~ ERROR unresolved function `macro_crate_test::foo`
} }

View File

@ -39,6 +39,6 @@ fn main() {
assert_eq!(pprust::expr_to_string(&*quote_expr!(&cx, 23)), "23"); assert_eq!(pprust::expr_to_string(&*quote_expr!(&cx, 23)), "23");
let expr = quote_expr!(&cx, 2 - $abcd + 7); //~ ERROR unresolved name `abcd` let expr = quote_expr!(&cx, 2 - $abcd + 7); //~ ERROR unresolved value `abcd`
assert_eq!(pprust::expr_to_string(&*expr), "2 - $abcd + 7"); assert_eq!(pprust::expr_to_string(&*expr), "2 - $abcd + 7");
} }

View File

@ -14,8 +14,8 @@ trait SomeTrait {
fn main() { fn main() {
let trait_obj: &SomeTrait = SomeTrait; let trait_obj: &SomeTrait = SomeTrait;
//~^ ERROR E0425 //~^ ERROR expected value, found trait `SomeTrait`
//~| NOTE unresolved name //~| NOTE not a value
//~| ERROR E0038 //~| ERROR E0038
//~| method `foo` has no receiver //~| method `foo` has no receiver
//~| NOTE the trait `SomeTrait` cannot be made into an object //~| NOTE the trait `SomeTrait` cannot be made into an object

View File

@ -12,5 +12,4 @@ fn main () {
struct Foo { a: bool }; struct Foo { a: bool };
let f = Foo(); //~ ERROR E0423 let f = Foo(); //~ ERROR E0423
//~^ struct called like a function
} }

View File

@ -14,10 +14,7 @@ impl Foo {
fn bar(self) {} fn bar(self) {}
fn foo() { fn foo() {
self.bar(); self.bar(); //~ ERROR E0424
//~^ ERROR `self` is not available in a static method [E0424]
//~| NOTE not available in static method
//~| NOTE maybe a `self` argument is missing?
} }
} }

View File

@ -10,7 +10,7 @@
trait Foo { trait Foo {
fn bar() { fn bar() {
Self; //~ ERROR E0425 elf; //~ ERROR E0425
} }
} }

View File

@ -11,10 +11,10 @@
// Check that associated paths starting with `<<` are successfully parsed. // Check that associated paths starting with `<<` are successfully parsed.
fn main() { fn main() {
let _: <<A>::B>::C; //~ ERROR type name `A` is undefined or not in scope let _: <<A>::B>::C; //~ ERROR unresolved type `A`
let _ = <<A>::B>::C; //~ ERROR type name `A` is undefined or not in scope let _ = <<A>::B>::C; //~ ERROR unresolved type `A`
let <<A>::B>::C; //~ ERROR type name `A` is undefined or not in scope let <<A>::B>::C; //~ ERROR unresolved type `A`
let 0 ... <<A>::B>::C; //~ ERROR type name `A` is undefined or not in scope let 0 ... <<A>::B>::C; //~ ERROR unresolved type `A`
//~^ ERROR only char and numeric types are allowed in range patterns //~^ ERROR only char and numeric types are allowed in range patterns
<<A>::B>::C; //~ ERROR type name `A` is undefined or not in scope <<A>::B>::C; //~ ERROR unresolved type `A`
} }

View File

@ -17,7 +17,7 @@ pub trait Foo {
} }
fn foo2<I: Foo>(x: I) { fn foo2<I: Foo>(x: I) {
let _: A = x.boo(); //~ERROR undefined or not in scope let _: A = x.boo(); //~ ERROR unresolved type `A`
} }
pub fn main() {} pub fn main() {}

View File

@ -132,6 +132,10 @@ pub struct UnstableStruct {
pub struct StableStruct { pub struct StableStruct {
#[stable(feature = "test_feature", since = "1.0.0")] pub i: isize #[stable(feature = "test_feature", since = "1.0.0")] pub i: isize
} }
#[unstable(feature = "test_feature", issue = "0")]
pub enum UnstableEnum {}
#[stable(feature = "rust1", since = "1.0.0")]
pub enum StableEnum {}
#[stable(feature = "test_feature", since = "1.0.0")] #[stable(feature = "test_feature", since = "1.0.0")]
#[rustc_deprecated(since = "1.0.0", reason = "text")] #[rustc_deprecated(since = "1.0.0", reason = "text")]

View File

@ -8,8 +8,11 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
// error-pattern: unresolved name `m1::arguments`
mod m1 {} mod m1 {}
fn main(arguments: Vec<String>) { log(debug, m1::arguments); } fn main(arguments: Vec<String>) { //~ ERROR main function has wrong type
log(debug, m1::arguments);
//~^ ERROR unresolved function `log`
//~| ERROR unresolved value `debug`
//~| ERROR unresolved value `m1::arguments`
}

View File

@ -8,12 +8,13 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
// error-pattern: unresolved name `m1::arguments`
mod m1 { mod m1 {
pub mod arguments {} pub mod arguments {}
} }
fn main(arguments: Vec<String>) { fn main(arguments: Vec<String>) { //~ ERROR main function has wrong type
log(debug, m1::arguments); log(debug, m1::arguments);
//~^ ERROR unresolved function `log`
//~| ERROR unresolved value `debug`
//~| ERROR expected value, found module `m1::arguments`
} }

View File

@ -16,8 +16,8 @@ impl cat {
fn sleep(&self) { loop{} } fn sleep(&self) { loop{} }
fn meow(&self) { fn meow(&self) {
println!("Meow"); println!("Meow");
meows += 1; //~ ERROR unresolved name meows += 1; //~ ERROR unresolved value `meows`
sleep(); //~ ERROR unresolved name sleep(); //~ ERROR unresolved function `sleep`
} }
} }

View File

@ -16,7 +16,7 @@ impl Foo for i8 {}
impl Foo for i16 {} impl Foo for i16 {}
impl Foo for i32 {} impl Foo for i32 {}
impl Foo for i64 {} impl Foo for i64 {}
impl Foo for DoesNotExist {} //~ ERROR `DoesNotExist` is undefined impl Foo for DoesNotExist {} //~ ERROR unresolved type `DoesNotExist`
impl Foo for u8 {} impl Foo for u8 {}
impl Foo for u16 {} impl Foo for u16 {}
impl Foo for u32 {} impl Foo for u32 {}

View File

@ -20,7 +20,7 @@ fn closure<F, T>(x: F) -> Result<T, ()>
} }
fn foo() -> Result<(), ()> { fn foo() -> Result<(), ()> {
try!(closure(|| bar(0 as *mut _))); //~ ERROR unresolved name `bar` try!(closure(|| bar(0 as *mut _))); //~ ERROR unresolved function `bar`
Ok(()) Ok(())
} }

View File

@ -8,5 +8,5 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
// error-pattern: unresolved name `this_does_nothing_what_the`
fn main() { println!("doing"); this_does_nothing_what_the; println!("boing"); } fn main() { println!("doing"); this_does_nothing_what_the; println!("boing"); }
//~^ ERROR unresolved value `this_does_nothing_what_the`

View File

@ -22,13 +22,13 @@ enum E {
} }
fn main() { fn main() {
let e1 = Empty1; //~ ERROR `Empty1` is the name of a struct or struct variant let e1 = Empty1; //~ ERROR expected value, found struct `Empty1`
let e1 = Empty1(); //~ ERROR `Empty1` is the name of a struct or struct variant let e1 = Empty1(); //~ ERROR expected function, found struct `Empty1`
let e3 = E::Empty3; //~ ERROR `E::Empty3` is the name of a struct or struct variant let e3 = E::Empty3; //~ ERROR expected value, found struct variant `E::Empty3`
let e3 = E::Empty3(); //~ ERROR `E::Empty3` is the name of a struct or struct variant let e3 = E::Empty3(); //~ ERROR expected function, found struct variant `E::Empty3`
let xe1 = XEmpty1; //~ ERROR `XEmpty1` is the name of a struct or struct variant let xe1 = XEmpty1; //~ ERROR expected value, found struct `XEmpty1`
let xe1 = XEmpty1(); //~ ERROR `XEmpty1` is the name of a struct or struct variant let xe1 = XEmpty1(); //~ ERROR expected function, found struct `XEmpty1`
let xe3 = XE::Empty3; //~ ERROR no associated item named `Empty3` found for type let xe3 = XE::Empty3; //~ ERROR no associated item named `Empty3` found for type
let xe3 = XE::Empty3(); //~ ERROR no associated item named `Empty3` found for type let xe3 = XE::Empty3(); //~ ERROR no associated item named `Empty3` found for type
} }

View File

@ -22,15 +22,15 @@ fn main() {
let xe1 = XEmpty1 {}; let xe1 = XEmpty1 {};
match e1 { match e1 {
Empty1() => () //~ ERROR unresolved tuple struct/variant `Empty1` Empty1() => () //~ ERROR expected tuple struct/variant, found struct `Empty1`
} }
match xe1 { match xe1 {
XEmpty1() => () //~ ERROR unresolved tuple struct/variant `XEmpty1` XEmpty1() => () //~ ERROR expected tuple struct/variant, found struct `XEmpty1`
} }
match e1 { match e1 {
Empty1(..) => () //~ ERROR unresolved tuple struct/variant `Empty1` Empty1(..) => () //~ ERROR expected tuple struct/variant, found struct `Empty1`
} }
match xe1 { match xe1 {
XEmpty1(..) => () //~ ERROR unresolved tuple struct/variant `XEmpty1` XEmpty1(..) => () //~ ERROR expected tuple struct/variant, found struct `XEmpty1`
} }
} }

View File

@ -14,6 +14,6 @@ enum Foo {
Bar Bar
} }
fn foo(x: Foo::Bar) {} //~ERROR found value `Foo::Bar` used as a type fn foo(x: Foo::Bar) {} //~ ERROR expected type, found variant `Foo::Bar`
fn main() {} fn main() {}

View File

@ -8,14 +8,12 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
// error-pattern: failed to resolve. Use of undeclared type or module `foo`
// In this test baz isn't resolved when called as foo.baz even though // In this test baz isn't resolved when called as foo.baz even though
// it's called from inside foo. This is somewhat surprising and may // it's called from inside foo. This is somewhat surprising and may
// want to change eventually. // want to change eventually.
mod foo { mod foo {
pub fn bar() { foo::baz(); } pub fn bar() { foo::baz(); } //~ ERROR failed to resolve. Use of undeclared type or module `foo`
fn baz() { } fn baz() { }
} }

View File

@ -8,10 +8,13 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
// error-pattern: unresolved name
mod foo { mod foo {
pub fn x(y: isize) { log(debug, y); } pub fn x(y: isize) { log(debug, y); }
//~^ ERROR unresolved function `log`
//~| ERROR unresolved value `debug`
fn z(y: isize) { log(debug, y); } fn z(y: isize) { log(debug, y); }
//~^ ERROR unresolved function `log`
//~| ERROR unresolved value `debug`
} }
fn main() { foo::z(10); } fn main() { foo::z(10); } //~ ERROR function `z` is private

View File

@ -8,10 +8,8 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
// error-pattern: failed to resolve. Use of undeclared type or module `bar`
mod foo { mod foo {
pub fn x() { bar::x(); } pub fn x() { bar::x(); } //~ ERROR failed to resolve. Use of undeclared type or module `bar`
} }
mod bar { mod bar {

View File

@ -24,7 +24,7 @@ extern "rust-intrinsic" {
// Unresolved bounds should still error. // Unresolved bounds should still error.
fn align_of<T: NoSuchTrait>() -> usize; fn align_of<T: NoSuchTrait>() -> usize;
//~^ ERROR trait `NoSuchTrait` is not in scope //~^ ERROR unresolved trait `NoSuchTrait`
} }
fn main() {} fn main() {}

View File

@ -13,7 +13,7 @@
fn main() { fn main() {
// Odd formatting to make sure we get the right span. // Odd formatting to make sure we get the right span.
for t in & for t in &
foo //~ ERROR unresolved name `foo` foo //~ ERROR unresolved value `foo`
{ {
} }
} }

View File

@ -13,6 +13,6 @@
fn main() { fn main() {
for _ in 0..10 { for _ in 0..10 {
iter.next(); //~ error: unresolved name `iter` iter.next(); //~ ERROR unresolved value `iter`
} }
} }

View File

@ -29,13 +29,13 @@ mod bar {
fn foo<T>() {} fn foo<T>() {}
fn main() { fn main() {
fpriv(); //~ ERROR: unresolved fpriv(); //~ ERROR unresolved function `fpriv`
epriv(); //~ ERROR: unresolved epriv(); //~ ERROR unresolved function `epriv`
B; //~ ERROR: unresolved B; //~ ERROR expected value, found enum `B`
C; //~ ERROR: unresolved C; //~ ERROR unresolved value `C`
import(); //~ ERROR: unresolved import(); //~ ERROR: unresolved function `import`
foo::<A>(); //~ ERROR: not in scope foo::<A>(); //~ ERROR: unresolved type `A`
foo::<C>(); //~ ERROR: not in scope foo::<C>(); //~ ERROR: unresolved type `C`
foo::<D>(); //~ ERROR: not in scope foo::<D>(); //~ ERROR: unresolved type `D`
} }

View File

@ -8,8 +8,6 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
// error-pattern: unresolved name
use module_of_many_things::*; use module_of_many_things::*;
mod module_of_many_things { mod module_of_many_things {
@ -23,6 +21,6 @@ mod module_of_many_things {
fn main() { fn main() {
f1(); f1();
f2(); f2();
f999(); // 'export' currently doesn't work? f999(); //~ ERROR unresolved function `f999`
f4(); f4();
} }

View File

@ -9,5 +9,5 @@
// except according to those terms. // except according to those terms.
fn main() { fn main() {
println!("{}", x); //~ ERROR unresolved name `x` println!("{}", x); //~ ERROR unresolved value `x`
} }

View File

@ -11,10 +11,10 @@
// macro f should not be able to inject a reference to 'n'. // macro f should not be able to inject a reference to 'n'.
macro_rules! f { () => (n) } macro_rules! f { () => (n) }
//~^ ERROR unresolved name `n` //~^ ERROR unresolved value `n`
//~| ERROR unresolved name `n` //~| ERROR unresolved value `n`
//~| ERROR unresolved name `n` //~| ERROR unresolved value `n`
//~| ERROR unresolved name `n` //~| ERROR unresolved value `n`
fn main() -> (){ fn main() -> (){
for n in 0..1 { for n in 0..1 {

View File

@ -20,7 +20,7 @@ mod foo {
} }
fn new() -> NoResult<MyEnum, String> { fn new() -> NoResult<MyEnum, String> {
//~^ ERROR: found value `foo::MyEnum::NoResult` used as a type //~^ ERROR expected type, found variant `NoResult`
unimplemented!() unimplemented!()
} }
} }
@ -30,18 +30,18 @@ mod bar {
use foo; use foo;
fn new() -> Result<foo::MyEnum, String> { fn new() -> Result<foo::MyEnum, String> {
//~^ ERROR: found value `foo::MyEnum::Result` used as a type //~^ ERROR expected type, found variant `Result`
unimplemented!() unimplemented!()
} }
} }
fn new() -> Result<foo::MyEnum, String> { fn new() -> Result<foo::MyEnum, String> {
//~^ ERROR: found value `foo::MyEnum::Result` used as a type //~^ ERROR expected type, found variant `Result`
unimplemented!() unimplemented!()
} }
fn newer() -> NoResult<foo::MyEnum, String> { fn newer() -> NoResult<foo::MyEnum, String> {
//~^ ERROR: found value `foo::MyEnum::NoResult` used as a type //~^ ERROR expected type, found variant `NoResult`
unimplemented!() unimplemented!()
} }

View File

@ -9,6 +9,6 @@
// except according to those terms. // except according to those terms.
impl Undefined {} impl Undefined {}
//~^ ERROR type name `Undefined` is undefined or not in scope //~^ ERROR unresolved type `Undefined`
fn main() {} fn main() {}

View File

@ -13,10 +13,10 @@ static Y: u8 = 1;
fn foo() {} fn foo() {}
impl X {} impl X {}
//~^ ERROR type name `X` is undefined or not in scope //~^ ERROR expected type, found constant `X`
impl Y {} impl Y {}
//~^ ERROR type name `Y` is undefined or not in scope //~^ ERROR expected type, found static `Y`
impl foo {} impl foo {}
//~^ ERROR type name `foo` is undefined or not in scope //~^ ERROR expected type, found function `foo`
fn main() {} fn main() {}

View File

@ -17,7 +17,7 @@ trait From<Src> {
trait To: Sized { trait To: Sized {
fn to<Dst: From<Self>>(self) -> fn to<Dst: From<Self>>(self) ->
<Dst as From<Self>>::Dst <Dst as From<Self>>::Dst
//~^ ERROR associated type `From::Dst` is undefined or not in scope //~^ ERROR unresolved associated type `From::Dst`
{ {
From::from(self) From::from(self)
} }

View File

@ -11,7 +11,7 @@
trait A { trait A {
type Output; type Output;
fn a(&self) -> <Self as A>::X; fn a(&self) -> <Self as A>::X;
//~^ ERROR: associated type `A::X` is undefined or not in scope //~^ ERROR unresolved associated type `A::X`
} }
impl A for u32 { impl A for u32 {

View File

@ -14,5 +14,5 @@ trait Trait {
fn main() { fn main() {
<<i32 as Copy>::foobar as Trait>::foo(); <<i32 as Copy>::foobar as Trait>::foo();
//~^ ERROR associated type `Copy::foobar` is undefined or not in scope //~^ ERROR unresolved associated type `Copy::foobar`
} }

View File

@ -8,6 +8,4 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
// error-pattern: unresolved name `foobar` fn main() { println!("{}", foobar); } //~ ERROR unresolved value `foobar`
fn main() { println!("{}", foobar); }

View File

@ -15,7 +15,7 @@ trait channel<T> {
} }
// `chan` is not a trait, it's an enum // `chan` is not a trait, it's an enum
impl chan for isize { //~ ERROR `chan` is not a trait impl chan for isize { //~ ERROR expected trait, found enum `chan`
fn send(&self, v: isize) { panic!() } fn send(&self, v: isize) { panic!() }
} }

View File

@ -10,8 +10,6 @@
// Prefix in imports with empty braces should be resolved and checked privacy, stability, etc. // Prefix in imports with empty braces should be resolved and checked privacy, stability, etc.
use foo::{}; use foo::{}; //~ ERROR unresolved module or enum `foo`
//~^ ERROR failed to resolve. Maybe a missing `extern crate foo;`?
//~| NOTE foo
fn main() {} fn main() {}

View File

@ -14,8 +14,7 @@
extern crate lint_stability; extern crate lint_stability;
use lint_stability::UnstableStruct::{}; use lint_stability::UnstableEnum::{}; //~ ERROR use of unstable library feature 'test_feature'
//~^ ERROR use of unstable library feature 'test_feature' use lint_stability::StableEnum::{}; // OK
use lint_stability::StableStruct::{}; // OK
fn main() {} fn main() {}

View File

@ -13,7 +13,7 @@
extern crate issue_30535 as foo; extern crate issue_30535 as foo;
fn bar( fn bar(
_: foo::Foo::FooV //~ ERROR value `foo::Foo::FooV` used as a type _: foo::Foo::FooV //~ ERROR expected type, found variant `foo::Foo::FooV`
) {} ) {}
fn main() {} fn main() {}

View File

@ -10,7 +10,7 @@
use std::fmt; use std::fmt;
impl fmt::Display for DecoderError { //~ ERROR E0412 impl fmt::Display for DecoderError { //~ ERROR unresolved type `DecoderError`
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "Missing data: {}", self.0) write!(f, "Missing data: {}", self.0)
} }

View File

@ -14,7 +14,7 @@ fn f() {
fn g() {} fn g() {}
mod foo { mod foo {
fn h() { fn h() {
g(); //~ ERROR unresolved name g(); //~ ERROR unresolved function `g`
} }
} }
} }

View File

@ -11,5 +11,5 @@
fn main () { fn main () {
let sr: Vec<(u32, _, _) = vec![]; //~ ERROR expected one of `+`, `,`, or `>`, found `=` let sr: Vec<(u32, _, _) = vec![]; //~ ERROR expected one of `+`, `,`, or `>`, found `=`
let sr2: Vec<(u32, _, _)> = sr.iter().map(|(faction, th_sender, th_receiver)| {}).collect(); let sr2: Vec<(u32, _, _)> = sr.iter().map(|(faction, th_sender, th_receiver)| {}).collect();
//~^ ERROR unresolved name `sr` //~^ ERROR unresolved value `sr`
} }

View File

@ -9,11 +9,11 @@
// except according to those terms. // except according to those terms.
struct Bar<T> { struct Bar<T> {
inner: Foo<T> //~ ERROR type name `Foo` is undefined or not in scope inner: Foo<T> //~ ERROR unresolved type `Foo`
} }
enum Baz<T> { enum Baz<T> {
Foo(Foo<T>) //~ ERROR type name `Foo` is undefined or not in scope Foo(Foo<T>) //~ ERROR unresolved type `Foo`
} }
fn main() {} fn main() {}

View File

@ -9,8 +9,8 @@
// except according to those terms. // except according to those terms.
struct Foo<T: ?Hash> { } struct Foo<T: ?Hash> { }
//~^ ERROR trait `Hash` is not in scope [E0405] //~^ ERROR unresolved trait `Hash`
//~^^ ERROR parameter `T` is never used [E0392] //~^^ ERROR parameter `T` is never used
//~^^^ WARN default bound relaxed for a type parameter, but this does nothing //~^^^ WARN default bound relaxed for a type parameter, but this does nothing
fn main() { } fn main() { }

View File

@ -23,7 +23,7 @@ mod a {
pub mod sub { pub mod sub {
use a::b::*; use a::b::*;
fn sub() -> bar { 1 } fn sub() -> bar { 1 }
//~^ ERROR: type name `bar` is undefined or not in scope //~^ ERROR unresolved type `bar`
} }
} }
@ -32,5 +32,5 @@ mod m1 {
} }
fn main() { fn main() {
foo(); //~ ERROR: unresolved name foo(); //~ ERROR expected function, found module `foo`
} }

View File

@ -25,7 +25,7 @@ mod a {
} }
pub mod sub { pub mod sub {
use a::b::*; use a::b::*;
fn sub() -> isize { foo(); 1 } //~ ERROR: unresolved name `foo` fn sub() -> isize { foo(); 1 } //~ ERROR unresolved function `foo`
} }
} }

View File

@ -9,6 +9,6 @@
// except according to those terms. // except according to those terms.
trait B < A > { fn a() -> A { this.a } } //~ ERROR unresolved name trait B < A > { fn a() -> A { this.a } } //~ ERROR unresolved value `this`
fn main() {} fn main() {}

View File

@ -12,7 +12,7 @@
fn main() { fn main() {
let z = match 3 { let z = match 3 {
x(1) => x(1) //~ ERROR unresolved tuple struct/variant `x` x(1) => x(1) //~ ERROR unresolved tuple struct/variant `x`
//~^ ERROR unresolved name `x` //~^ ERROR unresolved function `x`
}; };
assert!(z == 3); assert!(z == 3);
} }

View File

@ -12,7 +12,7 @@ struct Foo {
x: isize x: isize
} }
impl Fo { //~ ERROR type name `Fo` is undefined or not in scope impl Fo { //~ ERROR unresolved type `Fo`
fn foo() {} fn foo() {}
} }

View File

@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
impl B { //~ ERROR type name `B` is undefined or not in scope impl B { //~ ERROR unresolved type `B`
} }
fn main() { fn main() {

View File

@ -9,5 +9,5 @@
// except according to those terms. // except according to those terms.
fn main() { fn main() {
let super = "foo"; //~ ERROR unresolved unit struct/variant or constant `super` let super = "foo"; //~ ERROR failed to resolve. There are too many initial `super`s
} }

View File

@ -9,5 +9,5 @@
// except according to those terms. // except according to those terms.
fn main() { fn main() {
let super: isize; //~ ERROR unresolved unit struct/variant or constant `super` let super: isize; //~ ERROR failed to resolve. There are too many initial `super`s
} }

View File

@ -25,6 +25,6 @@ test!(b,
// test1!(#[bar]) // test1!(#[bar])
#[qux] #[qux]
fn main() { fn main() {
a::bar(); //~ ERROR unresolved name `a::bar` a::bar(); //~ ERROR unresolved function `a::bar`
b::bar(); b::bar();
} }

View File

@ -18,6 +18,6 @@ macro_rules! foo {
// not to the macro variable '$id' // not to the macro variable '$id'
fn main() { fn main() {
foo!( foo!(
x //~ ERROR unresolved name `x` x //~ ERROR unresolved value `x`
); );
} }

View File

@ -16,6 +16,6 @@ fn my_panic() -> ! { panic!(); }
fn main() { fn main() {
match true { false => { my_panic(); } true => { } } match true { false => { my_panic(); } true => { } }
println!("{}", x); //~ ERROR unresolved name `x` println!("{}", x); //~ ERROR unresolved value `x`
let x: isize; let x: isize;
} }

View File

@ -34,7 +34,7 @@ fn main() {
[0, 1, 2, 3, x..] => {} //~ ERROR pattern requires [0, 1, 2, 3, x..] => {} //~ ERROR pattern requires
}; };
match does_not_exist { //~ ERROR unresolved name match does_not_exist { //~ ERROR unresolved value `does_not_exist`
[] => {} [] => {}
}; };
} }

View File

@ -13,5 +13,5 @@
mod mod_file_aux; mod mod_file_aux;
fn main() { fn main() {
assert!(mod_file_aux::bar() == 10); //~ ERROR unresolved name assert!(mod_file_aux::bar() == 10); //~ ERROR unresolved function `mod_file_aux::bar`
} }

View File

@ -13,6 +13,6 @@ use std::option::*;
fn main() { fn main() {
let None: isize = 42; //~ ERROR let bindings cannot shadow unit variants let None: isize = 42; //~ ERROR let bindings cannot shadow unit variants
log(debug, None); log(debug, None);
//~^ ERROR unresolved name `debug` //~^ ERROR unresolved function `log`
//~| ERROR unresolved name `log` //~| ERROR unresolved value `debug`
} }

View File

@ -41,13 +41,13 @@ mod m2 {
fn f12() { fn f12() {
check(m1::S{}); //~ ERROR c::Item check(m1::S{}); //~ ERROR c::Item
check(m1::S); //~ ERROR unresolved name check(m1::S); //~ ERROR expected value, found type alias `m1::S`
check(m2::S{}); //~ ERROR c::S check(m2::S{}); //~ ERROR c::S
check(m2::S); //~ ERROR c::Item check(m2::S); //~ ERROR c::Item
} }
fn xf12() { fn xf12() {
check(xm1::S{}); //~ ERROR c::Item check(xm1::S{}); //~ ERROR c::Item
check(xm1::S); //~ ERROR unresolved name check(xm1::S); //~ ERROR expected value, found type alias `xm1::S`
check(xm2::S{}); //~ ERROR c::S check(xm2::S{}); //~ ERROR c::S
check(xm2::S); //~ ERROR c::Item check(xm2::S); //~ ERROR c::Item
} }
@ -107,13 +107,13 @@ mod m8 {
fn f78() { fn f78() {
check(m7::V{}); //~ ERROR c::Item check(m7::V{}); //~ ERROR c::Item
check(m7::V); //~ ERROR name of a struct or struct variant check(m7::V); //~ ERROR expected value, found struct variant `m7::V`
check(m8::V{}); //~ ERROR c::E check(m8::V{}); //~ ERROR c::E
check(m8::V); //~ ERROR c::Item check(m8::V); //~ ERROR c::Item
} }
fn xf78() { fn xf78() {
check(xm7::V{}); //~ ERROR c::Item check(xm7::V{}); //~ ERROR c::Item
check(xm7::V); //~ ERROR name of a struct or struct variant check(xm7::V); //~ ERROR expected value, found struct variant `xm7::V`
check(xm8::V{}); //~ ERROR c::E check(xm8::V{}); //~ ERROR c::E
check(xm8::V); //~ ERROR c::Item check(xm8::V); //~ ERROR c::Item
} }

View File

@ -18,8 +18,8 @@ mod m {
pub fn main() { pub fn main() {
use namespaced_enums::Foo::*; use namespaced_enums::Foo::*;
foo(); //~ ERROR unresolved name `foo` foo(); //~ ERROR unresolved function `foo`
m::foo(); //~ ERROR unresolved name `m::foo` m::foo(); //~ ERROR unresolved function `m::foo`
bar(); //~ ERROR unresolved name `bar` bar(); //~ ERROR unresolved function `bar`
m::bar(); //~ ERROR unresolved name `m::bar` m::bar(); //~ ERROR unresolved function `m::bar`
} }

View File

@ -28,8 +28,8 @@ mod m {
pub fn main() { pub fn main() {
use m2::Foo::*; use m2::Foo::*;
foo(); //~ ERROR unresolved name `foo` foo(); //~ ERROR unresolved function `foo`
m::foo(); //~ ERROR unresolved name `m::foo` m::foo(); //~ ERROR unresolved function `m::foo`
bar(); //~ ERROR unresolved name `bar` bar(); //~ ERROR unresolved function `bar`
m::bar(); //~ ERROR unresolved name `m::bar` m::bar(); //~ ERROR unresolved function `m::bar`
} }

View File

@ -11,4 +11,4 @@
#[cfg_attr(all(), cfg_attr(all(), cfg(foo)))] #[cfg_attr(all(), cfg_attr(all(), cfg(foo)))]
fn f() {} fn f() {}
fn main() { f() } //~ ERROR unresolved name `f` fn main() { f() } //~ ERROR unresolved function `f`

View File

@ -18,26 +18,26 @@
mod foo { mod foo {
mod baz { mod baz {
struct Test; struct Test;
impl Add for Test {} //~ ERROR: not in scope impl Add for Test {} //~ ERROR unresolved trait `Add`
impl Clone for Test {} //~ ERROR: not in scope impl Clone for Test {} //~ ERROR unresolved trait `Clone`
impl Iterator for Test {} //~ ERROR: not in scope impl Iterator for Test {} //~ ERROR unresolved trait `Iterator`
impl ToString for Test {} //~ ERROR: not in scope impl ToString for Test {} //~ ERROR unresolved trait `ToString`
impl Writer for Test {} //~ ERROR: not in scope impl Writer for Test {} //~ ERROR unresolved trait `Writer`
fn foo() { fn foo() {
drop(2) //~ ERROR: unresolved name drop(2) //~ ERROR unresolved function `drop`
} }
} }
struct Test; struct Test;
impl Add for Test {} //~ ERROR: not in scope impl Add for Test {} //~ ERROR unresolved trait `Add`
impl Clone for Test {} //~ ERROR: not in scope impl Clone for Test {} //~ ERROR unresolved trait `Clone`
impl Iterator for Test {} //~ ERROR: not in scope impl Iterator for Test {} //~ ERROR unresolved trait `Iterator`
impl ToString for Test {} //~ ERROR: not in scope impl ToString for Test {} //~ ERROR unresolved trait `ToString`
impl Writer for Test {} //~ ERROR: not in scope impl Writer for Test {} //~ ERROR unresolved trait `Writer`
fn foo() { fn foo() {
drop(2) //~ ERROR: unresolved name drop(2) //~ ERROR unresolved function `drop`
} }
} }
@ -45,14 +45,14 @@ fn qux() {
#[no_implicit_prelude] #[no_implicit_prelude]
mod qux_inner { mod qux_inner {
struct Test; struct Test;
impl Add for Test {} //~ ERROR: not in scope impl Add for Test {} //~ ERROR unresolved trait `Add`
impl Clone for Test {} //~ ERROR: not in scope impl Clone for Test {} //~ ERROR unresolved trait `Clone`
impl Iterator for Test {} //~ ERROR: not in scope impl Iterator for Test {} //~ ERROR unresolved trait `Iterator`
impl ToString for Test {} //~ ERROR: not in scope impl ToString for Test {} //~ ERROR unresolved trait `ToString`
impl Writer for Test {} //~ ERROR: not in scope impl Writer for Test {} //~ ERROR unresolved trait `Writer`
fn foo() { fn foo() {
drop(2) //~ ERROR: unresolved name drop(2) //~ ERROR unresolved function `drop`
} }
} }
} }

View File

@ -17,12 +17,12 @@
// fail with the same error message). // fail with the same error message).
struct Test; struct Test;
impl Add for Test {} //~ ERROR: not in scope impl Add for Test {} //~ ERROR unresolved trait `Add`
impl Clone for Test {} //~ ERROR: not in scope impl Clone for Test {} //~ ERROR unresolved trait `Clone`
impl Iterator for Test {} //~ ERROR: not in scope impl Iterator for Test {} //~ ERROR unresolved trait `Iterator`
impl ToString for Test {} //~ ERROR: not in scope impl ToString for Test {} //~ ERROR unresolved trait `ToString`
impl Writer for Test {} //~ ERROR: not in scope impl Writer for Test {} //~ ERROR unresolved trait `Writer`
fn main() { fn main() {
drop(2) //~ ERROR: unresolved name drop(2) //~ ERROR unresolved function `drop`
} }

View File

@ -15,5 +15,5 @@ extern crate empty_struct;
//~^ WARN custom derive crates and `#[no_link]` crates have no effect without `#[macro_use]` //~^ WARN custom derive crates and `#[no_link]` crates have no effect without `#[macro_use]`
fn main() { fn main() {
empty_struct::XEmpty1; //~ ERROR unresolved name empty_struct::XEmpty1; //~ ERROR unresolved value `empty_struct::XEmpty1`
} }

View File

@ -14,11 +14,11 @@
trait Foo { trait Foo {
fn bar() { fn bar() {
let x = foo(); //~ ERROR unresolved name `foo` let x = foo(); //~ ERROR unresolved function `foo`
} }
fn main() { fn main() {
let x = y.; //~ ERROR unexpected token let x = y.; //~ ERROR unexpected token
//~^ ERROR unresolved name `y` //~^ ERROR unresolved value `y`
} //~ ERROR this file contains an un-closed delimiter } //~ ERROR this file contains an un-closed delimiter

View File

@ -14,11 +14,11 @@
trait Foo { trait Foo {
fn bar() { fn bar() {
let x = foo(); //~ ERROR unresolved name `foo` let x = foo(); //~ ERROR unresolved function `foo`
) //~ ERROR incorrect close delimiter: `)` ) //~ ERROR incorrect close delimiter: `)`
} }
fn main() { fn main() {
let x = y.; //~ ERROR unexpected token let x = y.; //~ ERROR unexpected token
//~^ ERROR unresolved name `y` //~^ ERROR unresolved value `y`
} }

View File

@ -12,5 +12,5 @@ macro_rules! foo { () => ( x ) }
fn main() { fn main() {
let foo!() = 2; let foo!() = 2;
x + 1; //~ ERROR unresolved name `x` x + 1; //~ ERROR unresolved value `x`
} }

View File

@ -27,7 +27,7 @@ pub mod foo1 {
fn test_glob1() { fn test_glob1() {
use foo1::*; use foo1::*;
Bar(); //~ ERROR unresolved name `Bar` Bar(); //~ ERROR expected function, found trait `Bar`
} }
// private type, public value // private type, public value
@ -42,7 +42,7 @@ pub mod foo2 {
fn test_glob2() { fn test_glob2() {
use foo2::*; use foo2::*;
let _x: Box<Bar>; //~ ERROR type name `Bar` is undefined or not in scope let _x: Box<Bar>; //~ ERROR expected type, found function `Bar`
} }
// neither public // neither public
@ -57,8 +57,8 @@ pub mod foo3 {
fn test_glob3() { fn test_glob3() {
use foo3::*; use foo3::*;
Bar(); //~ ERROR unresolved name `Bar` Bar(); //~ ERROR unresolved function `Bar`
let _x: Box<Bar>; //~ ERROR type name `Bar` is undefined or not in scope let _x: Box<Bar>; //~ ERROR unresolved type `Bar`
} }
fn main() { fn main() {

View File

@ -27,13 +27,13 @@ pub mod foo1 {
fn test_single1() { fn test_single1() {
use foo1::Bar; use foo1::Bar;
Bar(); //~ ERROR unresolved name `Bar` Bar(); //~ ERROR expected function, found trait `Bar`
} }
fn test_list1() { fn test_list1() {
use foo1::{Bar,Baz}; use foo1::{Bar,Baz};
Bar(); //~ ERROR unresolved name `Bar` Bar(); //~ ERROR expected function, found trait `Bar`
} }
// private type, public value // private type, public value
@ -48,13 +48,13 @@ pub mod foo2 {
fn test_single2() { fn test_single2() {
use foo2::Bar; use foo2::Bar;
let _x : Box<Bar>; //~ ERROR type name `Bar` is undefined let _x : Box<Bar>; //~ ERROR expected type, found function `Bar`
} }
fn test_list2() { fn test_list2() {
use foo2::{Bar,Baz}; use foo2::{Bar,Baz};
let _x: Box<Bar>; //~ ERROR type name `Bar` is undefined let _x: Box<Bar>; //~ ERROR expected type, found function `Bar`
} }
// neither public // neither public

View File

@ -57,6 +57,6 @@ fn main() {
} }
mod pathological { mod pathological {
pub(bad::path) mod m1 {} //~ ERROR failed to resolve module path pub(bad::path) mod m1 {} //~ ERROR failed to resolve. Maybe a missing `extern crate bad;`?
pub(foo) mod m2 {} //~ ERROR visibilities can only be restricted to ancestor modules pub(foo) mod m2 {} //~ ERROR visibilities can only be restricted to ancestor modules
} }

View File

@ -16,11 +16,11 @@ macro_rules! m {
struct S<T>(T); struct S<T>(T);
m!{ S<u8> } //~ ERROR type or lifetime parameters in visibility path m!{ S<u8> } //~ ERROR type or lifetime parameters in visibility path
//~^ ERROR failed to resolve module path. Not a module `S` //~^ ERROR expected module, found struct `S`
mod foo { mod foo {
struct S(pub(foo<T>) ()); //~ ERROR type or lifetime parameters in visibility path struct S(pub(foo<T>) ()); //~ ERROR type or lifetime parameters in visibility path
//~^ ERROR type name `T` is undefined or not in scope //~^ ERROR unresolved type `T`
} }
fn main() {} fn main() {}

View File

@ -12,6 +12,6 @@
extern crate recursive_reexports; extern crate recursive_reexports;
fn f() -> recursive_reexports::S {} //~ ERROR type name `recursive_reexports::S` is undefined fn f() -> recursive_reexports::S {} //~ ERROR unresolved type `recursive_reexports::S`
fn main() {} fn main() {}

View File

@ -0,0 +1,24 @@
// Copyright 2016 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.
mod m {}
enum E {}
struct S;
trait Tr {}
use {}; // OK
use ::{}; // OK
use m::{}; // OK
use E::{}; // OK
use S::{}; //~ ERROR expected module or enum, found struct `S`
use Tr::{}; //~ ERROR expected module or enum, found trait `Tr`
use Nonexistent::{}; //~ ERROR unresolved module or enum `Nonexistent`
fn main () {}

View File

@ -0,0 +1,27 @@
// Copyright 2016 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.
#![feature(pub_restricted)]
enum E {}
trait Tr {}
pub(E) struct S; //~ ERROR expected module, found enum `E`
pub(Tr) struct Z; //~ ERROR expected module, found trait `Tr`
pub(std::vec) struct F; //~ ERROR visibilities can only be restricted to ancestor modules
pub(nonexistent) struct G; //~ ERROR unresolved module `nonexistent`
pub(too_soon) struct H; //~ ERROR unresolved module `too_soon`
// Visibilities are resolved eagerly without waiting for modules becoming fully populated.
// Visibilities can only use ancestor modules legally which are always available in time,
// so the worst thing that can happen due to eager resolution is a suboptimal error message.
mod too_soon {}
fn main () {}

View File

@ -11,10 +11,10 @@
fn main() { fn main() {
// Make sure primitive type fallback doesn't work in value namespace // Make sure primitive type fallback doesn't work in value namespace
std::mem::size_of(u16); std::mem::size_of(u16);
//~^ ERROR unresolved name `u16` //~^ ERROR expected value, found builtin type `u16`
//~| ERROR this function takes 0 parameters but 1 parameter was supplied //~| ERROR this function takes 0 parameters but 1 parameter was supplied
// Make sure primitive type fallback doesn't work with global paths // Make sure primitive type fallback doesn't work with global paths
let _: ::u8; let _: ::u8;
//~^ ERROR type name `::u8` is undefined or not in scope //~^ ERROR unresolved type `u8`
} }

View File

@ -10,10 +10,10 @@
trait NewTrait : SomeNonExistentTrait {} trait NewTrait : SomeNonExistentTrait {}
//~^ ERROR trait `SomeNonExistentTrait` is not in scope //~^ ERROR unresolved trait `SomeNonExistentTrait`
impl SomeNonExistentTrait for isize {} impl SomeNonExistentTrait for isize {}
//~^ ERROR trait `SomeNonExistentTrait` is not in scope //~^ ERROR unresolved trait `SomeNonExistentTrait`
fn f<T:SomeNonExistentTrait>() {} fn f<T:SomeNonExistentTrait>() {}
//~^ ERROR trait `SomeNonExistentTrait` is not in scope //~^ ERROR unresolved trait `SomeNonExistentTrait`

View File

@ -15,5 +15,5 @@
#![crate_type="metadata"] #![crate_type="metadata"]
fn main() { fn main() {
let _ = Foo; //~ ERROR unresolved name `Foo` let _ = Foo; //~ ERROR unresolved value `Foo`
} }

View File

@ -19,6 +19,6 @@ fn main() {
let x = 0; let x = 0;
let foo = Foo { let foo = Foo {
x, x,
y //~ ERROR unresolved name `y` y //~ ERROR unresolved value `y`
}; };
} }

View File

@ -18,7 +18,7 @@ pub fn main() {
// this now fails (correctly, I claim) because hygiene prevents // this now fails (correctly, I claim) because hygiene prevents
// the assembled identifier from being a reference to the binding. // the assembled identifier from being a reference to the binding.
assert!(concat_idents!(asd, f_f, dsa) == "<.<".to_string()); assert!(concat_idents!(asd, f_f, dsa) == "<.<".to_string());
//~^ ERROR: unresolved name `asdf_fdsa` //~^ ERROR unresolved value `asdf_fdsa`
assert_eq!(stringify!(use_mention_distinction), "use_mention_distinction"); assert_eq!(stringify!(use_mention_distinction), "use_mention_distinction");
} }

View File

@ -14,5 +14,5 @@
fn foo() {} fn foo() {}
fn main() { fn main() {
foo(); //~ ERROR unresolved name `foo` foo(); //~ ERROR unresolved function `foo`
} }

View File

@ -0,0 +1,66 @@
// Copyright 2016 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.
#![feature(associated_type_defaults)]
trait Tr {
type Y = u16;
fn Y() {}
}
impl Tr for u8 {}
trait Dr {
type X = u16;
fn Z() {}
}
impl Dr for u8 {}
enum E { Y }
type A = u32;
fn main() {
let _: <u8 as Tr>::N; //~ ERROR unresolved associated type `Tr::N`
let _: <u8 as E>::N; //~ ERROR unresolved associated type `E::N`
let _: <u8 as A>::N; //~ ERROR unresolved associated type `A::N`
<u8 as Tr>::N; //~ ERROR unresolved method or associated constant `Tr::N`
<u8 as E>::N; //~ ERROR unresolved method or associated constant `E::N`
<u8 as A>::N; //~ ERROR unresolved method or associated constant `A::N`
let _: <u8 as Tr>::Y; // OK
let _: <u8 as E>::Y; //~ ERROR expected associated type, found variant `E::Y`
<u8 as Tr>::Y; // OK
<u8 as E>::Y; //~ ERROR expected method or associated constant, found unit variant `E::Y`
let _: <u8 as Tr>::N::NN; //~ ERROR unresolved associated type `Tr::N`
let _: <u8 as E>::N::NN; //~ ERROR unresolved associated type `E::N`
let _: <u8 as A>::N::NN; //~ ERROR unresolved associated type `A::N`
<u8 as Tr>::N::NN; //~ ERROR unresolved associated type `Tr::N`
<u8 as E>::N::NN; //~ ERROR unresolved associated type `E::N`
<u8 as A>::N::NN; //~ ERROR unresolved associated type `A::N`
let _: <u8 as Tr>::Y::NN; //~ ERROR ambiguous associated type
let _: <u8 as E>::Y::NN; //~ ERROR expected associated type, found variant `E::Y`
<u8 as Tr>::Y::NN; //~ ERROR no associated item named `NN` found for type `<u8 as Tr>::Y`
<u8 as E>::Y::NN; //~ ERROR expected associated type, found variant `E::Y`
let _: <u8 as Tr::N>::NN; //~ ERROR unresolved associated type `Tr::N::NN`
let _: <u8 as E::N>::NN; //~ ERROR unresolved associated type `E::N::NN`
let _: <u8 as A::N>::NN; //~ ERROR unresolved associated type `A::N::NN`
<u8 as Tr::N>::NN; //~ ERROR unresolved method or associated constant `Tr::N::NN`
<u8 as E::N>::NN; //~ ERROR unresolved method or associated constant `E::N::NN`
<u8 as A::N>::NN; //~ ERROR unresolved method or associated constant `A::N::NN`
let _: <u8 as Tr::Y>::NN; //~ ERROR unresolved associated type `Tr::Y::NN`
let _: <u8 as E::Y>::NN; //~ ERROR unresolved associated type `E::Y::NN`
<u8 as Tr::Y>::NN; //~ ERROR unresolved method or associated constant `Tr::Y::NN`
<u8 as E::Y>::NN; //~ ERROR unresolved method or associated constant `E::Y::NN`
let _: <u8 as Dr>::Z; //~ ERROR expected associated type, found method `Dr::Z`
<u8 as Dr>::X; //~ ERROR expected method or associated constant, found associated type `Dr::X`
let _: <u8 as Dr>::Z::N; //~ ERROR expected associated type, found method `Dr::Z`
<u8 as Dr>::X::N; //~ ERROR no associated item named `N` found for type `<u8 as Dr>::X`
}

View File

@ -15,7 +15,7 @@
enum Ty { enum Ty {
A, A,
B(Ty::A), B(Ty::A),
//~^ ERROR: found value `Ty::A` used as a type //~^ ERROR expected type, found variant `Ty::A`
} }
@ -25,6 +25,6 @@ enum E {
} }
impl E::A {} impl E::A {}
//~^ ERROR: found value `E::A` used as a type //~^ ERROR expected type, found variant `E::A`
fn main() {} fn main() {}

View File

@ -17,6 +17,6 @@ extern crate xcrate_unit_struct;
fn main() { fn main() {
let _ = xcrate_unit_struct::StructWithFields; let _ = xcrate_unit_struct::StructWithFields;
//~^ ERROR: `xcrate_unit_struct::StructWithFields` is the name of a struct or struct variant //~^ ERROR expected value, found struct `xcrate_unit_struct::StructWithFields`
let _ = xcrate_unit_struct::Struct; let _ = xcrate_unit_struct::Struct;
} }

View File

@ -1,8 +1,8 @@
error[E0425]: unresolved name `bar` error[E0425]: unresolved value `bar`
--> $DIR/tab.rs:14:2 --> $DIR/tab.rs:14:2
| |
14 | \tbar; 14 | \tbar;
| \t^^^ unresolved name | \t^^^ no resolution found
error: aborting due to previous error error: aborting due to previous error

View File

@ -1,10 +1,8 @@
error[E0404]: `Bar` is not a trait error[E0404]: expected trait, found type alias `Bar`
--> $DIR/two_files.rs:15:6 --> $DIR/two_files.rs:15:6
| |
15 | impl Bar for Baz { } 15 | impl Bar for Baz { }
| ^^^ expected trait, found type alias | ^^^ type aliases cannot be used for traits
|
= note: type aliases cannot be used for traits
error: cannot continue compilation due to previous error error: cannot continue compilation due to previous error

View File

@ -1,17 +1,17 @@
error[E0425]: unresolved name `fake` error[E0425]: unresolved value `fake`
--> $DIR/macro-backtrace-nested.rs:15:12 --> $DIR/macro-backtrace-nested.rs:15:12
| |
15 | () => (fake) 15 | () => (fake)
| ^^^^ unresolved name | ^^^^ no resolution found
... ...
27 | 1 + call_nested_expr!(); 27 | 1 + call_nested_expr!();
| ------------------- in this macro invocation | ------------------- in this macro invocation
error[E0425]: unresolved name `fake` error[E0425]: unresolved value `fake`
--> $DIR/macro-backtrace-nested.rs:15:12 --> $DIR/macro-backtrace-nested.rs:15:12
| |
15 | () => (fake) 15 | () => (fake)
| ^^^^ unresolved name | ^^^^ no resolution found
... ...
28 | call_nested_expr_sum!(); 28 | call_nested_expr_sum!();
| ------------------------ in this macro invocation | ------------------------ in this macro invocation

View File

@ -1,20 +1,29 @@
error[E0425]: unresolved name `namespaced_enums::A` error[E0425]: unresolved value `namespaced_enums::A`
--> $DIR/enums-are-namespaced-xc.rs:15:13 --> $DIR/enums-are-namespaced-xc.rs:15:13
| |
15 | let _ = namespaced_enums::A; 15 | let _ = namespaced_enums::A;
| ^^^^^^^^^^^^^^^^^^^ unresolved name | ^^^^^^^^^^^^^^^^^^^ no resolution found
|
= help: possible candidate is found in another module, you can import it into scope:
= help: `use namespaced_enums::Foo::A;`
error[E0425]: unresolved name `namespaced_enums::B` error[E0425]: unresolved function `namespaced_enums::B`
--> $DIR/enums-are-namespaced-xc.rs:18:13 --> $DIR/enums-are-namespaced-xc.rs:18:13
| |
18 | let _ = namespaced_enums::B(10); 18 | let _ = namespaced_enums::B(10);
| ^^^^^^^^^^^^^^^^^^^ unresolved name | ^^^^^^^^^^^^^^^^^^^ no resolution found
|
= help: possible candidate is found in another module, you can import it into scope:
= help: `use namespaced_enums::Foo::B;`
error[E0531]: unresolved struct, variant or union type `namespaced_enums::C` error[E0422]: unresolved struct, variant or union type `namespaced_enums::C`
--> $DIR/enums-are-namespaced-xc.rs:21:13 --> $DIR/enums-are-namespaced-xc.rs:21:13
| |
21 | let _ = namespaced_enums::C { a: 10 }; 21 | let _ = namespaced_enums::C { a: 10 };
| ^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^ no resolution found
|
= help: possible candidate is found in another module, you can import it into scope:
= help: `use namespaced_enums::Foo::C;`
error: aborting due to 3 previous errors error: aborting due to 3 previous errors

View File

@ -1,146 +1,146 @@
error[E0425]: unresolved name `baz` error[E0425]: unresolved function `baz`
--> $DIR/issue-14254.rs:29:9 --> $DIR/issue-14254.rs:29:9
| |
29 | baz(); 29 | baz();
| ^^^ did you mean to call `self.baz`? | ^^^ did you mean `self.baz(...)`?
error[E0425]: unresolved name `a` error[E0425]: unresolved value `a`
--> $DIR/issue-14254.rs:32:9 --> $DIR/issue-14254.rs:32:9
| |
32 | a; 32 | a;
| ^ unresolved name | ^ no resolution found
error[E0425]: unresolved name `baz` error[E0425]: unresolved function `baz`
--> $DIR/issue-14254.rs:40:9 --> $DIR/issue-14254.rs:40:9
| |
40 | baz(); 40 | baz();
| ^^^ did you mean to call `self.baz`? | ^^^ did you mean `self.baz(...)`?
error[E0425]: unresolved name `x` error[E0425]: unresolved value `x`
--> $DIR/issue-14254.rs:43:9 --> $DIR/issue-14254.rs:43:9
| |
43 | x; 43 | x;
| ^ did you mean `self.x`? | ^ did you mean `self.x`?
error[E0425]: unresolved name `y` error[E0425]: unresolved value `y`
--> $DIR/issue-14254.rs:46:9 --> $DIR/issue-14254.rs:46:9
| |
46 | y; 46 | y;
| ^ did you mean `self.y`? | ^ did you mean `self.y`?
error[E0425]: unresolved name `a` error[E0425]: unresolved value `a`
--> $DIR/issue-14254.rs:49:9 --> $DIR/issue-14254.rs:49:9
| |
49 | a; 49 | a;
| ^ unresolved name | ^ no resolution found
error[E0425]: unresolved name `bah` error[E0425]: unresolved value `bah`
--> $DIR/issue-14254.rs:52:9 --> $DIR/issue-14254.rs:52:9
| |
52 | bah; 52 | bah;
| ^^^ did you mean to call `Foo::bah`? | ^^^ did you mean `Self::bah`?
error[E0425]: unresolved name `b` error[E0425]: unresolved value `b`
--> $DIR/issue-14254.rs:55:9 --> $DIR/issue-14254.rs:55:9
| |
55 | b; 55 | b;
| ^ unresolved name | ^ no resolution found
error[E0425]: unresolved name `baz` error[E0425]: unresolved function `baz`
--> $DIR/issue-14254.rs:63:9 --> $DIR/issue-14254.rs:63:9
| |
63 | baz(); 63 | baz();
| ^^^ did you mean to call `self.baz`? | ^^^ did you mean `self.baz(...)`?
error[E0425]: unresolved name `x` error[E0425]: unresolved value `x`
--> $DIR/issue-14254.rs:66:9 --> $DIR/issue-14254.rs:66:9
| |
66 | x; 66 | x;
| ^ did you mean `self.x`? | ^ did you mean `self.x`?
error[E0425]: unresolved name `y` error[E0425]: unresolved value `y`
--> $DIR/issue-14254.rs:69:9 --> $DIR/issue-14254.rs:69:9
| |
69 | y; 69 | y;
| ^ did you mean `self.y`? | ^ did you mean `self.y`?
error[E0425]: unresolved name `a` error[E0425]: unresolved value `a`
--> $DIR/issue-14254.rs:72:9 --> $DIR/issue-14254.rs:72:9
| |
72 | a; 72 | a;
| ^ unresolved name | ^ no resolution found
error[E0425]: unresolved name `bah` error[E0425]: unresolved value `bah`
--> $DIR/issue-14254.rs:75:9 --> $DIR/issue-14254.rs:75:9
| |
75 | bah; 75 | bah;
| ^^^ did you mean to call `Foo::bah`? | ^^^ did you mean `Self::bah`?
error[E0425]: unresolved name `b` error[E0425]: unresolved value `b`
--> $DIR/issue-14254.rs:78:9 --> $DIR/issue-14254.rs:78:9
| |
78 | b; 78 | b;
| ^ unresolved name | ^ no resolution found
error[E0425]: unresolved name `baz` error[E0425]: unresolved function `baz`
--> $DIR/issue-14254.rs:86:9 --> $DIR/issue-14254.rs:86:9
| |
86 | baz(); 86 | baz();
| ^^^ did you mean to call `self.baz`? | ^^^ did you mean `self.baz(...)`?
error[E0425]: unresolved name `bah` error[E0425]: unresolved value `bah`
--> $DIR/issue-14254.rs:89:9 --> $DIR/issue-14254.rs:89:9
| |
89 | bah; 89 | bah;
| ^^^ did you mean to call `Foo::bah`? | ^^^ did you mean `Self::bah`?
error[E0425]: unresolved name `baz` error[E0425]: unresolved function `baz`
--> $DIR/issue-14254.rs:97:9 --> $DIR/issue-14254.rs:97:9
| |
97 | baz(); 97 | baz();
| ^^^ did you mean to call `self.baz`? | ^^^ did you mean `self.baz(...)`?
error[E0425]: unresolved name `bah` error[E0425]: unresolved value `bah`
--> $DIR/issue-14254.rs:100:9 --> $DIR/issue-14254.rs:100:9
| |
100 | bah; 100 | bah;
| ^^^ did you mean to call `Foo::bah`? | ^^^ did you mean `Self::bah`?
error[E0425]: unresolved name `baz` error[E0425]: unresolved function `baz`
--> $DIR/issue-14254.rs:108:9 --> $DIR/issue-14254.rs:108:9
| |
108 | baz(); 108 | baz();
| ^^^ did you mean to call `self.baz`? | ^^^ did you mean `self.baz(...)`?
error[E0425]: unresolved name `bah` error[E0425]: unresolved value `bah`
--> $DIR/issue-14254.rs:111:9 --> $DIR/issue-14254.rs:111:9
| |
111 | bah; 111 | bah;
| ^^^ did you mean to call `Foo::bah`? | ^^^ did you mean `Self::bah`?
error[E0425]: unresolved name `baz` error[E0425]: unresolved function `baz`
--> $DIR/issue-14254.rs:119:9 --> $DIR/issue-14254.rs:119:9
| |
119 | baz(); 119 | baz();
| ^^^ did you mean to call `self.baz`? | ^^^ did you mean `self.baz(...)`?
error[E0425]: unresolved name `bah` error[E0425]: unresolved value `bah`
--> $DIR/issue-14254.rs:122:9 --> $DIR/issue-14254.rs:122:9
| |
122 | bah; 122 | bah;
| ^^^ did you mean to call `Foo::bah`? | ^^^ did you mean `Self::bah`?
error[E0425]: unresolved name `baz` error[E0425]: unresolved function `baz`
--> $DIR/issue-14254.rs:130:9 --> $DIR/issue-14254.rs:130:9
| |
130 | baz(); 130 | baz();
| ^^^ did you mean to call `self.baz`? | ^^^ did you mean `self.baz(...)`?
error[E0425]: unresolved name `bah` error[E0425]: unresolved value `bah`
--> $DIR/issue-14254.rs:133:9 --> $DIR/issue-14254.rs:133:9
| |
133 | bah; 133 | bah;
| ^^^ did you mean to call `Foo::bah`? | ^^^ did you mean `Self::bah`?
error: main function not found error: main function not found

View File

@ -1,8 +1,13 @@
error[E0532]: expected struct, variant or union type, found enum `Result` error[E0574]: expected struct, variant or union type, found enum `Result`
--> $DIR/issue-16058.rs:19:9 --> $DIR/issue-16058.rs:19:9
| |
19 | Result { 19 | Result {
| ^^^^^^ | ^^^^^^ not a struct, variant or union type
|
= help: possible better candidates are found in other modules, you can import them into scope:
= help: `use std::fmt::Result;`
= help: `use std::io::Result;`
= help: `use std::thread::Result;`
error: aborting due to previous error error: aborting due to previous error

View File

@ -1,8 +1,11 @@
error[E0531]: unresolved struct, variant or union type `E` error[E0422]: unresolved struct, variant or union type `E`
--> $DIR/issue-17518.rs:16:5 --> $DIR/issue-17518.rs:16:5
| |
16 | E { name: "foobar" }; //~ ERROR unresolved struct, variant or union type `E` 16 | E { name: "foobar" }; //~ ERROR unresolved struct, variant or union type `E`
| ^ | ^ no resolution found
|
= help: possible candidate is found in another module, you can import it into scope:
= help: `use SomeEnum::E;`
error: aborting due to previous error error: aborting due to previous error

Some files were not shown because too many files have changed in this diff Show More