@@ -1943,12 +1943,27 @@ object desugar {
1943
1943
case AndType (tp1, tp2) => stripToCore(tp1) ::: stripToCore(tp2)
1944
1944
case _ => defn.AnyType :: Nil
1945
1945
}
1946
+
1947
+ val refinements1 = Trees .flatten:
1948
+ refinements.mapConserve {
1949
+ case tree : ValDef if tree.mods.is(Mutable ) =>
1950
+ val getter =
1951
+ cpy.DefDef (tree)(name = tree.name, paramss = Nil , tpt = tree.tpt, rhs = tree.rhs)
1952
+ .withFlags(tree.mods.flags & (AccessFlags | Synthetic ))
1953
+ val setterParam = makeSyntheticParameter(tpt = tree.tpt)
1954
+ val setter =
1955
+ cpy.DefDef (tree)(name = tree.name.setterName, paramss = List (List (setterParam)), tpt = untpd.scalaUnit, rhs = EmptyTree )
1956
+ .withFlags(tree.mods.flags & (AccessFlags | Synthetic ))
1957
+ Thicket (getter, setter)
1958
+ case tree => tree
1959
+ }
1960
+
1946
1961
val parentCores = stripToCore(parent.tpe)
1947
1962
val untpdParent = TypedSplice (parent)
1948
1963
val (classParents, self) =
1949
1964
if (parentCores.length == 1 && (parent.tpe eq parentCores.head)) (untpdParent :: Nil , EmptyValDef )
1950
1965
else (parentCores map TypeTree , ValDef (nme.WILDCARD , untpdParent, EmptyTree ))
1951
- val impl = Template (emptyConstructor, classParents, Nil , self, refinements )
1966
+ val impl = Template (emptyConstructor, classParents, Nil , self, refinements1 )
1952
1967
TypeDef (tpnme.REFINE_CLASS , impl).withFlags(Trait )
1953
1968
}
1954
1969
0 commit comments