@@ -646,7 +646,7 @@ class SyntheticMembers(thisPhase: DenotTransformer) {
646
646
synthesizeDef(meth, vrefss => body(cls, vrefss.head.head))
647
647
}
648
648
}
649
- def overrideMethod (name : TermName , info : Type , cls : Symbol , body : (Symbol , Tree ) => Context ?=> Tree ): Unit = { // TODO online override if changed
649
+ def overrideMethod (name : TermName , info : Type , cls : Symbol , body : (Symbol , Tree ) => Context ?=> Tree ): Unit = {
650
650
val meth = newSymbol(clazz, name, Synthetic | Method | Override , info, coord = clazz.coord)
651
651
meth.enteredAfter(thisPhase)
652
652
newBody = newBody :+ synthesizeExperimentalDef(meth, vrefss => body(cls, vrefss.head.head))
@@ -668,8 +668,8 @@ class SyntheticMembers(thisPhase: DenotTransformer) {
668
668
addParent(defn.Mirror_ProductClass .typeRef)
669
669
addMethod(nme.fromProduct, MethodType (defn.ProductClass .typeRef :: Nil , monoType.typeRef), cls,
670
670
fromProductBody(_, _, optInfo).ensureConforms(monoType.typeRef)) // t4758.scala or i3381.scala are examples where a cast is needed
671
- if cls.primaryConstructor.hasDefaultParams then overrideMethod(nme.defaultArgument,
672
- MethodType (defn.IntType :: Nil , defn.AnyType ), cls, defaultArgumentBody(_, _, optInfo))
671
+ if cls.mirrorSupportsDefaultArguments && cls. primaryConstructor.hasDefaultParams then overrideMethod(
672
+ nme.defaultArgument, MethodType (defn.IntType :: Nil , defn.AnyType ), cls, defaultArgumentBody(_, _, optInfo))
673
673
}
674
674
def makeSumMirror (cls : Symbol , optInfo : Option [MirrorImpl .OfSum ]) = {
675
675
addParent(defn.Mirror_SumClass .typeRef)
0 commit comments