abstract class PreTyperComponent extends PluginComponent with Transform with CompatComponent
This jspretyper phase prepares a fix for issue SI-9487 in the case of
anonymous classes that extend js.Any.
During typer, due to a bug (SI-9487), Scalac transfroms some public method
definitions of a quite specific syntactic form of anonymous classes into
private methods. This affects both methods and field accessors. This phase
identifies any anonymous class and adds a @WasPublicBeforeTyper annotation
on its public methods and fields. After the typer in jsinterop the
anonymous classes are fixed if they extend js.Any using the annotations as
reference.
As an example:
class $anon extends ... { val foo = ??? var bar = ??? def baz = ??? private val foo2 = ??? private var bar2 = ??? private def baz2 = ??? }
Would become:
class $anon extends ... { @WasPublicBeforeTyper val foo = ??? @WasPublicBeforeTyper var bar = ??? @WasPublicBeforeTyper def baz = ??? private val foo2 = ??? private var bar2 = ??? private def baz2 = ??? }
And after typer (if has SI-9487) will be:
class $anon extends ... { @WasPublicBeforeTyper private[this] var foo = ??? private <stable> <accessor> def foo = ??? // Needs fix @WasPublicBeforeTyper private[this] var bar = ??? private <accessor> def bar = ??? // Needs fix private <accessor> def bar_=(...) = ??? // Needs fix @WasPublicBeforeTyper private def baz = ??? // Needs fix ... }
Linear Supertypes
Known Subclasses
Ordering
- Alphabetic
- By Inheritance
Inherited
- PreTyperComponent
- CompatComponent
- Transform
- PluginComponent
- SubComponent
- AnyRef
- Any
- Hide All
- Show All
Visibility
- Public
- Protected
Type Members
- implicit class BTypesCompat extends AnyRef
- Definition Classes
- CompatComponent
- implicit final class GlobalCompat extends AnyRef
- Definition Classes
- CompatComponent
- implicit final class SAMFunctionCompatOps extends AnyRef
- Definition Classes
- CompatComponent
- implicit final class SymbolCompat extends AnyRef
- Definition Classes
- CompatComponent
- implicit final class TyperCompat extends AnyRef
- Definition Classes
- CompatComponent
- class Phase extends scala.tools.nsc.transform.Transform.StdPhase
- Definition Classes
- Transform
- class PreTyperTransformer extends scala.tools.nsc.Global.Transformer
- abstract class StdPhase extends GlobalPhase
- Definition Classes
- SubComponent
Abstract Value Members
- abstract val runsAfter: List[String]
- Definition Classes
- SubComponent
Concrete Value Members
- object AttachmentsCompat
- Definition Classes
- CompatComponent
- object AttachmentsCompatDef
- Definition Classes
- CompatComponent
- object WarningCategoryCompat
- Definition Classes
- CompatComponent
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- lazy val DottyEnumSingletonCompat: scala.tools.nsc.Global.DottyEnumSingleton.type
- Definition Classes
- CompatComponent
- val WarningCategory: scala.tools.nsc.Reporting.WarningCategory.type
- Definition Classes
- CompatComponent
- final def afterOwnPhase[T](op: => T): T
- Definition Classes
- SubComponent
- Annotations
- @inline()
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- final def beforeOwnPhase[T](op: => T): T
- Definition Classes
- SubComponent
- Annotations
- @inline()
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def description: String
- Definition Classes
- PreTyperComponent → PluginComponent
- def enabled: Boolean
- Definition Classes
- SubComponent
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- val global: Global
- Definition Classes
- PreTyperComponent → CompatComponent → SubComponent
- def hashCode(): Int
- Definition Classes
- SubComponent → AnyRef → Any
- val initial: Boolean
- Definition Classes
- SubComponent
- final val internal: Boolean(false)
- Definition Classes
- PluginComponent → SubComponent
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def newPhase(prev: scala.tools.nsc.Phase): StdPhase
- Definition Classes
- Transform → SubComponent
- def newTransformer(unit: scala.tools.nsc.Global.CompilationUnit): scala.tools.nsc.Global.Transformer
- Attributes
- protected
- Definition Classes
- PreTyperComponent → Transform
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def ownPhase: scala.tools.nsc.Phase
- Definition Classes
- SubComponent
- val phaseName: String
- Definition Classes
- PreTyperComponent → SubComponent
- def phaseNewFlags: Long
- Definition Classes
- SubComponent
- def phaseNextFlags: Long
- Definition Classes
- SubComponent
- val requires: List[String]
- Definition Classes
- SubComponent
- val runsBefore: List[String]
- Definition Classes
- SubComponent
- val runsRightAfter: Option[String]
- Definition Classes
- PluginComponent → SubComponent
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- val terminal: Boolean
- Definition Classes
- SubComponent
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()