This phase extracts the arguments of phantom type before the application to avoid losing any effects in the argument tree. This trivializes the removal of parameter in the Erasure phase.
f(x1,...)(y1,...)...(...) with at least one phantom argument
val ev$f = f // if
f is some expression that needs evaluation
val ev$x1 = x1
val ev$y1 = y1
Check what the phase achieves, to be called at any point after it is finished.
Returns true if at least on of the arguments is an impure phantom. Inner applies are also checked in case of multiple parameter list.
A name given to the
Phase that can be used to debug the compiler. For
instance, it is possible to print trees after a given phase using:
$ ./bin/dotc -Xprint:<phaseNameHere> sourceFile.scala