Uh oh!
There was an error while loading. Please reload this page.
Clarify suggetion for field used as method - #40816
Conversation
rust-highfive
commented
Mar 25, 2017
(rust_highfive has picked a reviewer for you, use r? to override) |
e34af47 to
6341a8bCompareInstead of ``` error: no method named `src_addr` found for type `&wire::ipv4::Repr` in the current scope --> src/wire/ipv4.rs:409:34 | 409 | packet.set_src_addr(self.src_addr()); | ^^^^^^^^ | note: did you mean to write `self.src_addr`? --> src/wire/ipv4.rs:409:34 | 409 | packet.set_src_addr(self.src_addr()); | ^^^^^^^^ ``` present ``` error: no method named `src_addr` found for type `&wire::ipv4::Repr` in the current scope --> src/wire/ipv4.rs:409:34 | 409 | packet.set_src_addr(self.src_addr()); | ^^^^^^^^ `src_addr` is a field, not a method | = help: did you mean to write `self.src_addr` instead of `self.src_addr(...)`? ```
nikomatsakis
commented
Mar 27, 2017
I wonder if we should suggest |
nikomatsakis
commented
Mar 27, 2017
But I guess that feels like a separate issue. =) |
| stored in the `{1}` field", | ||
| expr_string, | ||
| item_name)); | ||
| err.help(&format!("use `({0}.{1})(...)` if you \ |
There was a problem hiding this comment.
oh, we do that already =)
| stored in the `{1}` field", | ||
| expr_string, | ||
| item_name)); | ||
| err.span_label(span, |
There was a problem hiding this comment.
Personally, I think I would give the same span_label either way (i.e., just "is a field, not a method") but change the help text. I think this syntax is a bit long and specific for a label.
There was a problem hiding this comment.
I just realized I misread this comment. I'm keeping different labels, but much shortened (field, not a method vs field storing a function, not a method). Is that ok?
There was a problem hiding this comment.
personally, I find "field storing a function" confusing. It makes it sound (to me) like this is an error specifically because the field stores a function (where indeed it would be an error for any field).
There was a problem hiding this comment.
Changed so that both cases have the same label as originally requested.
| o.closure(); | ||
| //~^ ERROR no method named `closure` found | ||
| //~| HELP use `(o.closure)(...)` if you meant to call the function stored in the `closure` field | ||
| //~| NOTE `closure` is a field storing a function, not a method |
There was a problem hiding this comment.
can you change this to a ui test? I'd personally also rename it to something like suggestion-for-field-with-fn-type-issue-18343.rs, since issue-18343.rs seems like a name suitable only for "fix random ICE regression test" to me.
| o_closure.closure(); //~ ERROR no method named `closure` found | ||
| //~^ NOTE use `(o_closure.closure)(...)` if you meant to call the function stored | ||
| //~^ HELP use `(o_closure.closure)(...)` if you meant to call the function stored | ||
| //~| NOTE `closure` is a field storing a function, not a method |
There was a problem hiding this comment.
I think this should be a UI test too
| demo.example(1); | ||
| //~^ ERROR no method named `example` | ||
| //~| HELP use `(demo.example)(...)` | ||
| //~| NOTE `example` is a field storing a function, not a method |
There was a problem hiding this comment.
really all of these feel like ui tests to me :)
maybe make a directory like src/test/ui/suggestions/confuse-field-and-method/ and just move the (not renamed) issue-123.rs files into that directory?
nikomatsakis
left a comment
There was a problem hiding this comment.
r=me once you make those ui tests
estebank
commented
Mar 28, 2017
@nikomatsakis all done! |
nikomatsakis
commented
Mar 29, 2017
@bors r+ |
bors
commented
Mar 29, 2017
📌 Commit 872d3bc has been approved by |
Clarify suggetion for field used as method Instead of ```rust error: no method named `src_addr` found for type `&wire::ipv4::Repr` in the current scope --> src/wire/ipv4.rs:409:34 | 409 | packet.set_src_addr(self.src_addr()); | ^^^^^^^^ | note: did you mean to write `self.src_addr`? --> src/wire/ipv4.rs:409:34 | 409 | packet.set_src_addr(self.src_addr()); | ^^^^^^^^ ``` present ```rust error: no method named `src_addr` found for type `&wire::ipv4::Repr` in the current scope --> src/wire/ipv4.rs:409:34 | 409 | packet.set_src_addr(self.src_addr()); | ^^^^^^^^ field, not a method | = help: did you mean to write `self.src_addr` instead of `self.src_addr(...)`? ``` Fixrust-lang#38321.
Instead of
present
Fix#38321.