This phase erases ErasedValueType to their underlying type. It also removes the synthetic cast methods u2evt$ and evt2u$ which are no longer needed afterwards. Finally, it checks that we don't introduce "double definitions" of pairs of methods that now have the same signature but were not considered matching before erasure.
Check that we don't have pairs of methods that override each other after
this phase, yet do not have matching types before erasure.
The before erasure test is performed after phase elimRepeated, so we
do not need to special case pairs of
T* / Seq[T] parameters.
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
List of names of phases that should precede this phase