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

class Object
trait Matchable
class Any

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

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

Wrap template to template transform op with needed initialization and finalization

Wrap template to template transform op with needed initialization and finalization