@@ -68,6 +68,10 @@ import Decorators._
68
68
}
69
69
70
70
lazy val field = sym.field.orElse(newField).asTerm
71
+
72
+ def adaptToField (tree : Tree ) =
73
+ if (tree.isEmpty) tree else tree.ensureConforms(field.info.widen)
74
+
71
75
if (sym.is(Accessor , butNot = NoFieldNeeded ))
72
76
if (sym.isGetter) {
73
77
def skipBlocks (t : Tree ): Tree = t match {
@@ -85,14 +89,15 @@ import Decorators._
85
89
case _ =>
86
90
var rhs = tree.rhs.changeOwnerAfter(sym, field, thisTransform)
87
91
if (isWildcardArg(rhs)) rhs = EmptyTree
88
- val fieldDef = transformFollowing(ValDef (field, rhs))
92
+
93
+ val fieldDef = transformFollowing(ValDef (field, adaptToField(rhs)))
89
94
val getterDef = cpy.DefDef (tree)(rhs = transformFollowingDeep(ref(field))(ctx.withOwner(sym), info))
90
95
Thicket (fieldDef, getterDef)
91
96
}
92
97
} else if (sym.isSetter) {
93
98
if (! sym.is(ParamAccessor )) { val Literal (Constant (())) = tree.rhs } // this is intended as an assertion
94
99
field.setFlag(Mutable ) // necessary for vals mixed in from Scala2 traits
95
- val initializer = Assign (ref(field), ref(tree.vparamss.head.head.symbol))
100
+ val initializer = Assign (ref(field), adaptToField( ref(tree.vparamss.head.head.symbol) ))
96
101
cpy.DefDef (tree)(rhs = transformFollowingDeep(initializer)(ctx.withOwner(sym), info))
97
102
}
98
103
else tree // curiously, some accessors from Scala2 have ' ' suffixes. They count as
0 commit comments