@@ -273,7 +273,10 @@ class Simplify extends MiniPhaseTransform with IdentityDenotTransformer {
273
273
else a
274
274
case t => t
275
275
}
276
- (" inlineCaseIntrinsics" , BeforeAndAfterErasure , NoVisitor , transformer)
276
+ // To run this optimisation after erasure one would need to specialize it
277
+ // for constructor with outer pointer and values classes. There is probably
278
+ // no need to run this more than once.
279
+ (" inlineCaseIntrinsics" , BeforeErasure , NoVisitor , transformer)
277
280
}
278
281
279
282
/** Various constant folding.
@@ -811,8 +814,8 @@ class Simplify extends MiniPhaseTransform with IdentityDenotTransformer {
811
814
(t.symbol.is(CaseAccessor ) && ! t.symbol.is(Mutable )) =>
812
815
keepOnlySideEffects(rec) // Accessing a field of a product
813
816
case s @ Select (qual, name) if
814
- ! name.eq(nme.TYPE_ ) && // Keep the .TYPE added by ClassOf
815
- ! t.symbol.is(Flags . Mutable | Flags . Lazy ) && ! t.symbol.is(Flags . Method ) =>
817
+ // !name.eq(nme.TYPE_) && // Keep the .TYPE added by ClassOf, would be needed for AfterErasure
818
+ ! t.symbol.is(Mutable | Lazy ) && ! t.symbol.is(Method ) =>
816
819
keepOnlySideEffects(qual)
817
820
case Block (List (t : DefDef ), s : Closure ) =>
818
821
EmptyTree
@@ -905,7 +908,8 @@ class Simplify extends MiniPhaseTransform with IdentityDenotTransformer {
905
908
} else a
906
909
case t => t
907
910
}
908
- (" dropNoEffects" , BeforeAndAfterErasure , NoVisitor , transformer)
911
+ // BoxedUnit messes up this phase after erasure
912
+ (" dropNoEffects" , BeforeErasure , NoVisitor , transformer)
909
913
}
910
914
911
915
/** Inlines LabelDef which are used exactly once. */
@@ -945,7 +949,7 @@ class Simplify extends MiniPhaseTransform with IdentityDenotTransformer {
945
949
EmptyTree
946
950
case t => t
947
951
}
948
- (" inlineLabelsCalledOnce" , BeforeAndAfterErasure , visitor, transformer)
952
+ (" inlineLabelsCalledOnce" , BeforeErasure , visitor, transformer)
949
953
}
950
954
951
955
/** Rewrites pairs of consecutive LabelDef jumps by jumping directly to the target. */
0 commit comments