Transform assignment, adding a protected setter if needed
Transform select node, adding super and protected accessors as needed
Wrap DefDef
producing operation op
, potentially setting invalidClass
info
Wrap template to template transform op
with needed initialization and finalization
This class performs the following functions:
(1) Adds super accessors for all super calls that either appear in a trait or have as a target a member of some outer class.
(2) Adds protected accessors if the access to the protected member happens in a class which is not a subclass of the member's owner.
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