abstract classPreTyperComponent extends PluginComponent with Transform with PluginComponent210Compat
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 = ???
privateval foo2 = ???
privatevar bar2 = ???
privatedef baz2 = ???
}
Would become:
class $anon extends ... {
@WasPublicBeforeTyper val foo = ???
@WasPublicBeforeTyper var bar = ???
@WasPublicBeforeTyper def baz = ???
privateval foo2 = ???
privatevar bar2 = ???
privatedef baz2 = ???
}
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 thetyper
injsinterop
the anonymous classes are fixed if they extend js.Any using the annotations as reference.As an example:
Would become:
And after
typer
(if has SI-9487) will be: