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
- All
Instance Constructors
- new PreTyperComponent(global: Global)
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
StdTermNamesCompat extends AnyRef
- Definition Classes
- CompatComponent
-
implicit final
class
StdTypeNamesCompat extends AnyRef
- Definition Classes
- CompatComponent
-
implicit final
class
SymbolCompat 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
-
type
SAMFunctionCompat = scala.tools.nsc.Global.SAMFunction
- Definition Classes
- CompatComponent
-
abstract
class
StdPhase extends GlobalPhase
- Definition Classes
- SubComponent
Abstract Value Members
-
abstract
val
runsAfter: List[String]
- Definition Classes
- SubComponent
Concrete Value Members
-
object
SAMFunctionAttachCompat
- Definition Classes
- CompatComponent
-
object
SAMFunctionAttachCompatDef
- 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
SAMFunctionCompat: scala.tools.nsc.Global.SAMFunction.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( ... ) @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: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- 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
-
def
isImplClass(sym: scala.tools.nsc.Global.Symbol): Boolean
- Definition Classes
- CompatComponent
-
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
-
lazy val
scalaUsesImplClasses: Boolean
- Definition Classes
- CompatComponent
-
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( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()