--- /dev/null
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// rustc-env:RUST_NEW_ERROR_FORMAT
+
+trait Foo {
+ fn foo(x: u16);
+ fn bar(&mut self, bar: &mut Bar);
+}
+
+struct Bar;
+
+impl Foo for Bar {
+ fn foo(x: i16) { }
+ fn bar(&mut self, bar: &Bar) { }
+}
+
+fn main() {
+}
+
--- /dev/null
+error[E0053]: method `foo` has an incompatible type for trait
+ --> $DIR/trait-impl-fn-incompatibility.rs:21:15
+ |
+14 | fn foo(x: u16);
+ | --- original trait requirement
+...
+21 | fn foo(x: i16) { }
+ | ^^^ expected u16, found i16
+
+error[E0053]: method `bar` has an incompatible type for trait
+ --> $DIR/trait-impl-fn-incompatibility.rs:22:28
+ |
+15 | fn bar(&mut self, bar: &mut Bar);
+ | -------- original trait requirement
+...
+22 | fn bar(&mut self, bar: &Bar) { }
+ | ^^^^ values differ in mutability
+ |
+ = note: expected type `fn(&mut Bar, &mut Bar)`
+ = note: found type `fn(&mut Bar, &Bar)`
+
+error: aborting due to 2 previous errors
+