Skip to content

Lone self in a method body should resolve to the 'self parameter' #476

@mattheww

Description

@mattheww

In a method body, a path expression consisting only of the keyword self should resolve to the (binding of the) method's 'self parameter'.

I believe at the moment the FLS says this resolves to the containing module.

Example:

  struct MyType {
      x: (),
  }

  impl MyType {
      fn simple_method(self) {
          self.x;
      }
  }

Looking at the self.x FieldAccessExpression:

The part before the . is an UnqualifiedPathExpression whose single SimplePathSegment is the keyword self.

§14.9.4.2 "Path Expression Resolution" says (in fls_dc0yv4306p82) that we resolve the leftmost (and only) segment using general path resolution.

§14.9.4:12 (fls_ri50nc2dg7c4) says that a path segment which is the keyword self resolves to "the entity of the current module".

I've also filed rust-lang/reference#1427

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-resolveName resolution, paths, namespaces, preludes, etc.C-bugCategory: This is a bug.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions