SuperAccessors

dotty.tools.dotc.transform.SuperAccessors
class SuperAccessors(thisPhase: DenotTransformer)

This class adds super accessors for all super calls that either appear in a trait or have as a target a member of some outer class.

It also checks that:

(1) Symbols accessed from super are not abstract, or are overridden by an abstract override.

(2) If a symbol accessed from super is defined in a real class (not a trait), there are no abstract members which override this member in Java's rules (see SI-4989; such an access would lead to illegal bytecode)

(3) Super calls do not go to some synthetic members of Any (see isDisallowed)

(4) Super calls do not go to synthetic field accessors

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any

Members list

Value members

Concrete methods

def transformSelect(tree: Tree, targs: List[Tree])(using Context): Tree

Transform select node, adding super and protected accessors as needed

Transform select node, adding super and protected accessors as needed

Attributes

def withInvalidCurrentClass[A](trans: => A)(using Context): A
def wrapDefDef(ddef: DefDef)(op: => DefDef)(using Context): DefDef

Wrap DefDef producing operation op, potentially setting invalidClass info

Wrap DefDef producing operation op, potentially setting invalidClass info

Attributes

def wrapTemplate(tree: Template)(op: Template => Template)(using Context): Template

Wrap template to template transform op with needed initialization and finalization

Wrap template to template transform op with needed initialization and finalization

Attributes