diff options
| author | zjhmale <zjhmale@gmail.com> | 2016-08-29 22:49:16 +0800 |
|---|---|---|
| committer | zjhmale <zjhmale@gmail.com> | 2016-08-31 15:54:49 +0800 |
| commit | 189dee6da11c36bf074fc2e568d356a1bae46b91 (patch) | |
| tree | 6e98717d4155fb1ea890b82be9966a2f6622e4d7 /src | |
| parent | 86dde9bbda92c02c61282b5df5d38338a798ef3b (diff) | |
| download | rust-189dee6da11c36bf074fc2e568d356a1bae46b91.tar.gz rust-189dee6da11c36bf074fc2e568d356a1bae46b91.zip | |
Update E0393 to new error format
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_typeck/astconv.rs | 13 | ||||
| -rw-r--r-- | src/test/compile-fail/E0393.rs | 5 | ||||
| -rw-r--r-- | src/test/compile-fail/issue-21950.rs | 7 | ||||
| -rw-r--r-- | src/test/compile-fail/issue-22370.rs | 4 | ||||
| -rw-r--r-- | src/test/compile-fail/issue-22560.rs | 10 |
5 files changed, 26 insertions, 13 deletions
diff --git a/src/librustc_typeck/astconv.rs b/src/librustc_typeck/astconv.rs index f24a7cf2121..e04bd581f46 100644 --- a/src/librustc_typeck/astconv.rs +++ b/src/librustc_typeck/astconv.rs @@ -515,12 +515,13 @@ impl<'o, 'gcx: 'tcx, 'tcx> AstConv<'gcx, 'tcx>+'o { // defaults. This will lead to an ICE if we are not // careful! if default_needs_object_self(def) { - span_err!(tcx.sess, span, E0393, - "the type parameter `{}` must be explicitly specified \ - in an object type because its default value `{}` references \ - the type `Self`", - def.name, - default); + struct_span_err!(tcx.sess, span, E0393, + "the type parameter `{}` must be explicitly specified", + def.name) + .span_label(span, &format!("missing reference to `{}`", def.name)) + .note(&format!("because of the default `Self` reference, \ + type parameters must be specified on object types")) + .emit(); tcx.types.err } else { // This is a default type parameter. diff --git a/src/test/compile-fail/E0393.rs b/src/test/compile-fail/E0393.rs index 1b89555c8ce..f045e873519 100644 --- a/src/test/compile-fail/E0393.rs +++ b/src/test/compile-fail/E0393.rs @@ -10,7 +10,10 @@ trait A<T=Self> {} -fn together_we_will_rule_the_galaxy(son: &A) {} //~ ERROR E0393 +fn together_we_will_rule_the_galaxy(son: &A) {} +//~^ ERROR E0393 +//~| NOTE missing reference to `T` +//~| NOTE because of the default `Self` reference, type parameters must be specified on object types fn main() { } diff --git a/src/test/compile-fail/issue-21950.rs b/src/test/compile-fail/issue-21950.rs index 1028923ec82..935f3480db2 100644 --- a/src/test/compile-fail/issue-21950.rs +++ b/src/test/compile-fail/issue-21950.rs @@ -15,6 +15,9 @@ use std::ops::Add; fn main() { let x = &10 as &Add; - //~^ ERROR the type parameter `RHS` must be explicitly specified in an object type because its default value `Self` references the type `Self` - //~| ERROR the value of the associated type `Output` (from the trait `std::ops::Add`) must be specified + //~^ ERROR E0393 + //~| NOTE missing reference to `RHS` + //~| NOTE because of the default `Self` reference, type parameters must be specified on object types + //~| ERROR E0191 + //~| NOTE missing associated type `Output` value } diff --git a/src/test/compile-fail/issue-22370.rs b/src/test/compile-fail/issue-22370.rs index 4c6652d812c..51f342e3f0a 100644 --- a/src/test/compile-fail/issue-22370.rs +++ b/src/test/compile-fail/issue-22370.rs @@ -13,6 +13,8 @@ trait A<T=Self> {} fn f(a: &A) {} -//~^ ERROR the type parameter `T` must be explicitly specified in an object type because its default value `Self` references the type `Self` +//~^ ERROR E0393 +//~| NOTE missing reference to `T` +//~| NOTE because of the default `Self` reference, type parameters must be specified on object types fn main() {} diff --git a/src/test/compile-fail/issue-22560.rs b/src/test/compile-fail/issue-22560.rs index 20ec2d64ae6..45b110bf563 100644 --- a/src/test/compile-fail/issue-22560.rs +++ b/src/test/compile-fail/issue-22560.rs @@ -13,9 +13,13 @@ use std::ops::{Add, Sub}; type Test = Add + - //~^ ERROR the type parameter `RHS` must be explicitly specified in an object type because its default value `Self` references the type `Self` - //~^^ ERROR the value of the associated type `Output` (from the trait `std::ops::Add`) must be specified [E0191] + //~^ ERROR E0393 + //~| NOTE missing reference to `RHS` + //~| NOTE because of the default `Self` reference, type parameters must be specified on object types + //~| ERROR E0191 + //~| NOTE missing associated type `Output` value Sub; - //~^ ERROR only the builtin traits can be used as closure or object bounds + //~^ ERROR E0225 + //~| NOTE non-builtin trait used as bounds fn main() { } |
