forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of rust-lang#37370 - estebank:signature-2-empire-strikes…
…-back, r=nikomatsakis Include type of missing trait methods in error Provide either a span pointing to the original definition of missing trait items, or a message with the inferred definitions. Fixes rust-lang#24626. Follow up to PR rust-lang#36371. If PR rust-lang#37369 lands, missing trait items that present a multiline span will be able to show the entirety of the item definition on the error itself, instead of just the first line.
- Loading branch information
Showing
14 changed files
with
186 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
-include ../tools.mk | ||
|
||
all: | ||
$(RUSTC) m1.rs -C prefer-dynamic | ||
$(RUSTC) m2.rs 2>&1 | grep "error\[E0046\]: not all trait items implemented, missing: .*" | ||
$(RUSTC) m2.rs 2>&1 | grep " --> m2.rs:18:1" | ||
$(RUSTC) m2.rs 2>&1 | grep " | ^ missing .CONSTANT., .Type., .method. in implementation" | ||
$(RUSTC) m2.rs 2>&1 | grep " = note: .CONSTANT. from trait: .const CONSTANT: u32;." | ||
$(RUSTC) m2.rs 2>&1 | grep " = note: .Type. from trait: .type Type;." | ||
$(RUSTC) m2.rs 2>&1 | grep " = note: .method. from trait: .fn(&Self, std::string::String) -> <Self as m1::X>::Type." |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
// Copyright 2014 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. | ||
|
||
#![feature(associated_consts)] | ||
#![crate_type = "dylib"] | ||
pub trait X { | ||
const CONSTANT: u32; | ||
type Type; | ||
fn method(&self, s: String) -> Self::Type; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
// Copyright 2014 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. | ||
|
||
#![feature(associated_consts)] | ||
#![crate_type = "dylib"] | ||
extern crate m1; | ||
|
||
struct X { | ||
} | ||
|
||
impl m1::X for X { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,6 +10,7 @@ | |
|
||
trait Foo { | ||
fn foo(); | ||
//~^ NOTE `foo` from trait | ||
} | ||
|
||
struct Bar; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
error[E0046]: not all trait items implemented, missing: `foo` | ||
--> $DIR/E0046.rs:18:1 | ||
| | ||
12 | fn foo(); | ||
| --------- `foo` from trait | ||
... | ||
18 | impl Foo for Bar {} | ||
| ^^^^^^^^^^^^^^^^^^^ missing `foo` in implementation | ||
|
||
error: aborting due to previous error | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
error[E0323]: item `bar` is an associated const, which doesn't match its trait `<FooConstForMethod as Foo>` | ||
--> $DIR/impl-wrong-item-for-trait.rs:25:5 | ||
| | ||
16 | fn bar(&self); | ||
| -------------- item in trait | ||
... | ||
25 | const bar: u64 = 1; | ||
| ^^^^^^^^^^^^^^^^^^^ does not match trait | ||
|
||
error[E0046]: not all trait items implemented, missing: `bar` | ||
--> $DIR/impl-wrong-item-for-trait.rs:22:1 | ||
| | ||
16 | fn bar(&self); | ||
| -------------- `bar` from trait | ||
... | ||
22 | impl Foo for FooConstForMethod { | ||
| ^ missing `bar` in implementation | ||
|
||
error[E0324]: item `MY_CONST` is an associated method, which doesn't match its trait `<FooMethodForConst as Foo>` | ||
--> $DIR/impl-wrong-item-for-trait.rs:37:5 | ||
| | ||
17 | const MY_CONST: u32; | ||
| -------------------- item in trait | ||
... | ||
37 | fn MY_CONST() {} | ||
| ^^^^^^^^^^^^^^^^ does not match trait | ||
|
||
error[E0046]: not all trait items implemented, missing: `MY_CONST` | ||
--> $DIR/impl-wrong-item-for-trait.rs:33:1 | ||
| | ||
17 | const MY_CONST: u32; | ||
| -------------------- `MY_CONST` from trait | ||
... | ||
33 | impl Foo for FooMethodForConst { | ||
| ^ missing `MY_CONST` in implementation | ||
|
||
error[E0325]: item `bar` is an associated type, which doesn't match its trait `<FooTypeForMethod as Foo>` | ||
--> $DIR/impl-wrong-item-for-trait.rs:47:5 | ||
| | ||
16 | fn bar(&self); | ||
| -------------- item in trait | ||
... | ||
47 | type bar = u64; | ||
| ^^^^^^^^^^^^^^^ does not match trait | ||
|
||
error[E0046]: not all trait items implemented, missing: `bar` | ||
--> $DIR/impl-wrong-item-for-trait.rs:44:1 | ||
| | ||
16 | fn bar(&self); | ||
| -------------- `bar` from trait | ||
... | ||
44 | impl Foo for FooTypeForMethod { | ||
| ^ missing `bar` in implementation | ||
|
||
error[E0046]: not all trait items implemented, missing: `fmt` | ||
--> $DIR/impl-wrong-item-for-trait.rs:53:1 | ||
| | ||
53 | impl Debug for FooTypeForMethod { | ||
| ^ missing `fmt` in implementation | ||
| | ||
= note: `fmt` from trait: `fn(&Self, &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error>` | ||
|
||
error: aborting due to 7 previous errors | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
error[E0046]: not all trait items implemented, missing: `Item` | ||
--> $DIR/issue-23729.rs:20:9 | ||
| | ||
20 | impl Iterator for Recurrence { | ||
| ^ missing `Item` in implementation | ||
| | ||
= note: `Item` from trait: `type Item;` | ||
|
||
error: aborting due to previous error | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
error[E0046]: not all trait items implemented, missing: `Output` | ||
--> $DIR/issue-23827.rs:36:1 | ||
| | ||
36 | impl<C: Component> FnOnce<(C,)> for Prototype { | ||
| ^ missing `Output` in implementation | ||
| | ||
= note: `Output` from trait: `type Output;` | ||
|
||
error: aborting due to previous error | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
error[E0046]: not all trait items implemented, missing: `Target` | ||
--> $DIR/issue-24356.rs:30:9 | ||
| | ||
30 | impl Deref for Thing { | ||
| ^ missing `Target` in implementation | ||
| | ||
= note: `Target` from trait: `type Target;` | ||
|
||
error: aborting due to previous error | ||
|