diff --git a/src/librustc_resolve/diagnostics.rs b/src/librustc_resolve/diagnostics.rs index 232a32deb86..f0ef07276f6 100644 --- a/src/librustc_resolve/diagnostics.rs +++ b/src/librustc_resolve/diagnostics.rs @@ -967,16 +967,18 @@ one. "##, E0423: r##" -A `struct` variant name was used like a function name. +An identifier was used like a function name or a value was expected and the +identifier exists but it belongs to a different namespace. -Erroneous code example: +For (an erroneous) example, here a `struct` variant name were used as a +function: ```compile_fail,E0423 struct Foo { a: bool }; let f = Foo(); -// error: `Foo` is a struct variant name, but this expression uses -// it like a function name +// error: expected function, found `Foo` +// `Foo` is a struct name, but this expression uses it like a function name ``` Please verify you didn't misspell the name of what you actually wanted to use @@ -987,6 +989,30 @@ fn Foo() -> u32 { 0 } let f = Foo(); // ok! ``` + +It is common to forget the trailing `!` on macro invocations, which would also +yield this error: + +```compile_fail,E0423 +println(""); +// error: expected function, found macro `println` +// did you mean `println!(...)`? (notice the trailing `!`) +``` + +Another case where this error is emitted is when a value is expected, but +something else is found: + +```compile_fail,E0423 +pub mod a { + pub const I: i32 = 1; +} + +fn h1() -> i32 { + a.I + //~^ ERROR expected value, found module `a` + // did you mean `a::I`? +} +``` "##, E0424: r##"