values.expected,
values.found)
}
- Mutability => write!(f, "values differ in mutability"),
+ Mutability => write!(f, "types differ in mutability"),
BoxMutability => {
- write!(f, "boxed values differ in mutability")
+ write!(f, "boxed types differ in mutability")
}
VecMutability => write!(f, "vectors differ in mutability"),
PtrMutability => write!(f, "pointers differ in mutability"),
continue;
}
// Check to make sure we're not in any <*macros>
- if !cm.span_to_filename(def_site).contains("macros>") {
+ if !cm.span_to_filename(def_site).contains("macros>") &&
+ !trace.macro_decl_name.starts_with("#[")
+ {
new_labels.push((trace.call_site,
"in this macro invocation".to_string()));
break;
pub fn check_legal_trait_for_method_call(ccx: &CrateCtxt, span: Span, trait_id: DefId) {
if ccx.tcx.lang_items.drop_trait() == Some(trait_id) {
struct_span_err!(ccx.tcx.sess, span, E0040, "explicit use of destructor method")
- .span_label(span, &format!("call to destructor method"))
+ .span_label(span, &format!("explicit destructor calls not allowed"))
.emit();
}
}
infcx.note_type_err(
&mut diag,
origin,
- trait_err_span.map(|sp| (sp, format!("original trait requirement"))),
+ trait_err_span.map(|sp| (sp, format!("type in trait"))),
Some(infer::ValuePairs::Types(ExpectedFound {
expected: trait_fty,
found: impl_fty
infcx.note_type_err(
&mut diag,
origin,
- Some((trait_c_span, format!("original trait requirement"))),
+ Some((trait_c_span, format!("type in trait"))),
Some(infer::ValuePairs::Types(ExpectedFound {
expected: trait_ty,
found: impl_ty
// We can only get the spans from local trait definition
// Same for E0324 and E0325
if let Some(trait_span) = tcx.map.span_if_local(ty_trait_item.def_id()) {
- err.span_label(trait_span, &format!("original trait requirement"));
+ err.span_label(trait_span, &format!("item in trait"));
}
err.emit()
}
impl_trait_ref);
err.span_label(impl_item.span, &format!("does not match trait"));
if let Some(trait_span) = tcx.map.span_if_local(ty_trait_item.def_id()) {
- err.span_label(trait_span, &format!("original trait requirement"));
+ err.span_label(trait_span, &format!("item in trait"));
}
err.emit()
}
impl_trait_ref);
err.span_label(impl_item.span, &format!("does not match trait"));
if let Some(trait_span) = tcx.map.span_if_local(ty_trait_item.def_id()) {
- err.span_label(trait_span, &format!("original trait requirement"));
+ err.span_label(trait_span, &format!("item in trait"));
}
err.emit()
}
expected at most {}, found {}",
count(type_defs.len()),
count(types.len()))
- .span_label(span, &format!("expected {}",
- count(type_defs.len()))).emit();
+ .span_label(span, &format!("too many type parameters")).emit();
// To prevent derived errors to accumulate due to extra
// type parameters, we force instantiate_value_path to
"cannot define inherent `impl` for a type outside of the \
crate where the type is defined")
.span_label(item.span, &format!("impl for type defined outside of crate."))
- .span_note(item.span, &format!("define and implement a trait or new type instead"))
+ .note("define and implement a trait or new type instead")
.emit();
}
}
// error, expected u16, found i16
fn foo(x: i16) { }
- // error, values differ in mutability
+ // error, types differ in mutability
fn bar(&mut self) { }
}
```
let mut x = Foo { x: -7 };
x.drop();
//~^ ERROR E0040
- //~| NOTE call to destructor method
+ //~| NOTE explicit destructor calls not allowed
}
// except according to those terms.
trait Foo {
- fn foo(x: u16); //~ NOTE original trait requirement
- fn bar(&self); //~ NOTE original trait requirement
+ fn foo(x: u16); //~ NOTE type in trait
+ fn bar(&self); //~ NOTE type in trait
}
struct Bar;
//~| NOTE expected u16
fn bar(&mut self) { }
//~^ ERROR method `bar` has an incompatible type for trait
- //~| NOTE values differ in mutability
+ //~| NOTE types differ in mutability
//~| NOTE expected type `fn(&Bar)`
//~| NOTE found type `fn(&mut Bar)`
}
fn main() {
foo::<f64, bool>(); //~ ERROR E0087
- //~^ NOTE expected
+ //~^ NOTE too many type parameters
}
#![feature(associated_consts)]
trait Foo {
- const BAR: u32; //~ NOTE original trait requirement
+ const BAR: u32; //~ NOTE type in trait
}
struct SignedBar;
//~^ ERROR mismatched types
//~| expected type `&mut i32`
//~| found type `&{integer}`
- //~| values differ in mutability
+ //~| types differ in mutability
}
fn main() {
apply(&3, takes_imm);
apply(&3, takes_mut);
- //~^ ERROR (values differ in mutability)
+ //~^ ERROR (types differ in mutability)
apply(&mut 3, takes_mut);
apply(&mut 3, takes_imm);
- //~^ ERROR (values differ in mutability)
+ //~^ ERROR (types differ in mutability)
}
trait Foo {
fn bar(&self);
- //~^ NOTE original trait requirement
- //~| NOTE original trait requirement
- const MY_CONST: u32; //~ NOTE original trait requirement
+ //~^ NOTE item in trait
+ //~| NOTE item in trait
+ const MY_CONST: u32; //~ NOTE item in trait
}
pub struct FooConstForMethod;
let &_ //~ ERROR mismatched types
//~| expected type `&mut {integer}`
//~| found type `&_`
- //~| values differ in mutability
+ //~| types differ in mutability
= foo;
let &mut _ = foo;
let &mut _ //~ ERROR mismatched types
//~| expected type `&{integer}`
//~| found type `&mut _`
- //~| values differ in mutability
+ //~| types differ in mutability
= bar;
}
let x: *mut isize = x; //~ ERROR mismatched types
//~| expected type `*mut isize`
//~| found type `*const isize`
- //~| values differ in mutability
+ //~| types differ in mutability
// & -> *mut
let x: *mut isize = &42; //~ ERROR mismatched types
//~| expected type `*mut isize`
//~| found type `&isize`
- //~| values differ in mutability
+ //~| types differ in mutability
let x: *const isize = &42;
let x: *mut isize = x; //~ ERROR mismatched types
//~| expected type `*mut isize`
//~| found type `*const isize`
- //~| values differ in mutability
+ //~| types differ in mutability
}
//~^ ERROR mismatched types
//~| expected type `&mut [_]`
//~| found type `&[isize]`
- //~| values differ in mutability
+ //~| types differ in mutability
}
--> $DIR/trait-impl-fn-incompatibility.rs:21:15
|
14 | fn foo(x: u16);
- | --- original trait requirement
+ | --- type in trait
...
21 | fn foo(x: i16) { }
| ^^^ expected u16, found i16
--> $DIR/trait-impl-fn-incompatibility.rs:22:28
|
15 | fn bar(&mut self, bar: &mut Bar);
- | -------- original trait requirement
+ | -------- type in trait
...
22 | fn bar(&mut self, bar: &Bar) { }
- | ^^^^ values differ in mutability
+ | ^^^^ types differ in mutability
|
= note: expected type `fn(&mut Bar, &mut Bar)`
= note: found type `fn(&mut Bar, &Bar)`