From d2e78956c39c1b1e94169f2a1f7cde34aef4ff96 Mon Sep 17 00:00:00 2001 From: Knight Date: Wed, 17 Aug 2016 00:57:44 +0800 Subject: [PATCH 1/2] Updated E0422 to new error message --- src/librustc_resolve/lib.rs | 6 ++++-- src/test/compile-fail/E0422.rs | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 962509be324de..a8b1cb123b843 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -317,11 +317,13 @@ fn resolve_struct_error<'b, 'a: 'b, 'c>(resolver: &'b Resolver<'a>, err } ResolutionError::DoesNotNameAStruct(name) => { - struct_span_err!(resolver.session, + let mut err = struct_span_err!(resolver.session, span, E0422, "`{}` does not name a structure", - name) + name); + err.span_label(span, &format!("not a structure")); + err } ResolutionError::StructVariantUsedAsFunction(path_name) => { struct_span_err!(resolver.session, diff --git a/src/test/compile-fail/E0422.rs b/src/test/compile-fail/E0422.rs index d1cb7fd9640da..61e96b896a66a 100644 --- a/src/test/compile-fail/E0422.rs +++ b/src/test/compile-fail/E0422.rs @@ -9,5 +9,7 @@ // except according to those terms. fn main () { - let x = Foo { x: 1, y: 2 }; //~ ERROR E0422 + let x = Foo { x: 1, y: 2 }; + //~^ ERROR E0422 + //~| NOTE not a structure } From 3caa451b9db58836301dd93ffabc0fb493dd4fe7 Mon Sep 17 00:00:00 2001 From: Knight Date: Wed, 17 Aug 2016 01:40:57 +0800 Subject: [PATCH 2/2] Updated E0394 to new error message --- src/librustc_mir/transform/qualify_consts.rs | 5 ++++- src/test/compile-fail/E0394.rs | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/librustc_mir/transform/qualify_consts.rs b/src/librustc_mir/transform/qualify_consts.rs index 103a15dadb61c..1de67922b1b3a 100644 --- a/src/librustc_mir/transform/qualify_consts.rs +++ b/src/librustc_mir/transform/qualify_consts.rs @@ -277,7 +277,10 @@ impl<'a, 'tcx> Qualifier<'a, 'tcx, 'tcx> { } else { "cannot refer to statics by value, use a constant instead" }; - span_err!(self.tcx.sess, self.span, E0394, "{}", msg); + struct_span_err!(self.tcx.sess, self.span, E0394, "{}", msg) + .span_label(self.span, &format!("referring to another static by value")) + .note(&format!("use the address-of operator or a constant instead")) + .emit(); // Replace STATIC with NOT_CONST to avoid further errors. self.qualif = self.qualif - Qualif::STATIC; diff --git a/src/test/compile-fail/E0394.rs b/src/test/compile-fail/E0394.rs index 1b86b8ad67496..e35d038248c81 100644 --- a/src/test/compile-fail/E0394.rs +++ b/src/test/compile-fail/E0394.rs @@ -9,7 +9,10 @@ // except according to those terms. static A: u32 = 0; -static B: u32 = A; //~ ERROR E0394 +static B: u32 = A; +//~^ ERROR E0394 +//~| NOTE referring to another static by value +//~| NOTE use the address-of operator or a constant instead fn main() { }