"##,
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
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##"