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