.get(0)
.map(|p| (p.span.shrink_to_lo(), "&self, "))
.unwrap_or_else(|| {
+ // Try to look for the "(" after the function name, if possible.
+ // This avoids placing the suggestion into the visibility specifier.
+ let span = fn_kind
+ .ident()
+ .map_or(*span, |ident| span.with_lo(ident.span.hi()));
(
self.r
.session
.source_map()
- .span_through_char(*span, '(')
+ .span_through_char(span, '(')
.shrink_to_hi(),
"&self",
)
--- /dev/null
+struct X(i32);
+
+impl X {
+ pub(crate) fn f() {
+ self.0
+ //~^ ERROR expected value, found module `self`
+ }
+
+ pub fn g() {
+ self.0
+ //~^ ERROR expected value, found module `self`
+ }
+}
+
+fn main() {}
--- /dev/null
+error[E0424]: expected value, found module `self`
+ --> $DIR/suggest-add-self.rs:5:9
+ |
+LL | pub(crate) fn f() {
+ | - this function doesn't have a `self` parameter
+LL | self.0
+ | ^^^^ `self` value is a keyword only available in methods with a `self` parameter
+ |
+help: add a `self` receiver parameter to make the associated `fn` a method
+ |
+LL | pub(crate) fn f(&self) {
+ | +++++
+
+error[E0424]: expected value, found module `self`
+ --> $DIR/suggest-add-self.rs:10:9
+ |
+LL | pub fn g() {
+ | - this function doesn't have a `self` parameter
+LL | self.0
+ | ^^^^ `self` value is a keyword only available in methods with a `self` parameter
+ |
+help: add a `self` receiver parameter to make the associated `fn` a method
+ |
+LL | pub fn g(&self) {
+ | +++++
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0424`.