Add error message for anonymous impl for types not declared in the current module#17321
Conversation
|
What's the error for something like this? mod Foo {}
impl Foo {} |
|
It's still |
|
I'm a little wary about closing all those issues without seeing tests for them as well. Do any of these error messages improve? pub mod a {
pub struct Foo { a: uint }
}
pub mod b {
use a::Foo;
impl Foo { // ERROR: found value name used as type
fn bar(&self) { }
}
}
pub fn main() { }impl B {
}
fn main() {
}pub struct Foo;
mod bar {
use Foo;
impl Foo {
fn baz(&self) {}
}
}
fn main() {} |
|
The error from the comments on #7607 you posted changes to "import :/ this is embarrasing: #12729 does not change at all. (An error posted in the comments for that one is fixed, which I think is how it got swept up; but that error was actually a dupe of #7607 I think.) #8767 and #15060 both trigger the improved error message. I'll add compile-fail tests for these. |
|
It's ok to do them as part of this PR as well |
6d8e3cd to
1103a9e
Compare
|
Sorry for the delay, I was out of town. I've updated to fix the remaining error messages, and added compile-fail tests for all of them. |
There was a problem hiding this comment.
For the compiletest runner you can't break up the error message on multiple lines. If the line runs long you can tag the test with `// ignore-tidy-linelength.
Also, how come this error message is on the import rather than the impl itself? would it be possible to be on the impl?
There was a problem hiding this comment.
Right now the import error is hit first "import conflicts with existing symbol", which I override by checking that the conflict is actually with an impl. I think if I just suppress the error in this case, it should give the correct error later on when it tries to resolve the impl and sees there is no struct. But then if there is a struct, so the impl "succeeds" I'm not sure what would happen.
As for broken lines, thanks, I'll fix all of those.
Edit: Oh, obviously I can just switch the spans for the error and the note to put the error on the impl. Will do this.
1103a9e to
c2c5618
Compare
|
New push: puts error messages all on one line in compile-fail tests, also moves errors on |
…he current module Followup to RFC 57. Fixes rust-lang#7607 Fixes rust-lang#8767 Fixes rust-lang#12729 Fixes rust-lang#15060
c2c5618 to
bb58079
Compare
|
Oops, missed one two-line compile-fail error message, sorry! |
Followup to RFC 57.
Fixes #7607
Fixes #8767
Fixes #12729
Fixes #15060