diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index e2c9e4aca57dc..6bf4da438dd20 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -336,12 +336,14 @@ fn resolve_struct_error<'b, 'a: 'b, 'c>(resolver: &'b Resolver<'a>, err } ResolutionError::StructVariantUsedAsFunction(path_name) => { - struct_span_err!(resolver.session, + let mut err = struct_span_err!(resolver.session, span, E0423, "`{}` is the name of a struct or struct variant, but this expression \ uses it like a function name", - path_name) + path_name); + err.span_label(span, &format!("struct called like a function")); + err } ResolutionError::SelfNotAvailableInStaticMethod => { struct_span_err!(resolver.session, diff --git a/src/test/compile-fail/E0423.rs b/src/test/compile-fail/E0423.rs index f5fea77cf9639..98b700984a707 100644 --- a/src/test/compile-fail/E0423.rs +++ b/src/test/compile-fail/E0423.rs @@ -12,4 +12,5 @@ fn main () { struct Foo { a: bool }; let f = Foo(); //~ ERROR E0423 + //~^ struct called like a function } diff --git a/src/test/compile-fail/issue-18252.rs b/src/test/compile-fail/issue-18252.rs index e3e56c7f97ad5..8e3faca02b7d1 100644 --- a/src/test/compile-fail/issue-18252.rs +++ b/src/test/compile-fail/issue-18252.rs @@ -13,5 +13,7 @@ enum Foo { } fn main() { - let f = Foo::Variant(42); //~ ERROR uses it like a function + let f = Foo::Variant(42); + //~^ ERROR uses it like a function + //~| struct called like a function } diff --git a/src/test/compile-fail/issue-19452.rs b/src/test/compile-fail/issue-19452.rs index 2270ba594ad2b..15d5d2b80c31d 100644 --- a/src/test/compile-fail/issue-19452.rs +++ b/src/test/compile-fail/issue-19452.rs @@ -13,5 +13,7 @@ enum Homura { } fn main() { - let homura = Homura::Madoka; //~ ERROR uses it like a function + let homura = Homura::Madoka; + //~^ ERROR uses it like a function + //~| struct called like a function }