@@ -1943,12 +1943,26 @@ object desugar {
19431943 case AndType (tp1, tp2) => stripToCore(tp1) ::: stripToCore(tp2)
19441944 case _ => defn.AnyType :: Nil
19451945 }
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+
19461960 val parentCores = stripToCore(parent.tpe)
19471961 val untpdParent = TypedSplice (parent)
19481962 val (classParents, self) =
19491963 if (parentCores.length == 1 && (parent.tpe eq parentCores.head)) (untpdParent :: Nil , EmptyValDef )
19501964 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 )
19521966 TypeDef (tpnme.REFINE_CLASS , impl).withFlags(Trait )
19531967 }
19541968
0 commit comments