@@ -101,19 +101,8 @@ import Decorators._
101101 cpy.installAfter(thisTransform)
102102 }
103103
104- lazy val field = sym.field.orElse(newField).asTerm
105-
106- def adaptToField (tree : Tree ): Tree =
107- if (tree.isEmpty) tree else tree.ensureConforms(field.info.widen)
108-
109104 val NoFieldNeeded = Lazy | Deferred | JavaDefined | (if (ctx.settings.YnoInline .value) EmptyFlags else Inline )
110105
111- def isErasableBottomField (cls : Symbol ): Boolean = {
112- // TODO: For Scala.js, return false if this field is in a js.Object unless it is an ErasedPhantomClass.
113- ! field.isVolatile &&
114- ((cls eq defn.NothingClass ) || (cls eq defn.NullClass ) || (cls eq defn.BoxedUnitClass ) || (cls eq defn.ErasedPhantomClass ))
115- }
116-
117106 def erasedBottomTree (sym : Symbol ) = {
118107 if (sym eq defn.NothingClass ) Throw (Literal (Constant (null )))
119108 else if (sym eq defn.NullClass ) Literal (Constant (null ))
@@ -125,7 +114,18 @@ import Decorators._
125114 }
126115 }
127116
128- if (sym.is(Accessor , butNot = NoFieldNeeded ))
117+ if (sym.is(Accessor , butNot = NoFieldNeeded )) {
118+ val field = sym.field.orElse(newField).asTerm
119+
120+ def adaptToField (tree : Tree ): Tree =
121+ if (tree.isEmpty) tree else tree.ensureConforms(field.info.widen)
122+
123+ def isErasableBottomField (cls : Symbol ): Boolean = {
124+ // TODO: For Scala.js, return false if this field is in a js.Object unless it is an ErasedPhantomClass.
125+ ! field.isVolatile &&
126+ ((cls eq defn.NothingClass ) || (cls eq defn.NullClass ) || (cls eq defn.BoxedUnitClass ) || (cls eq defn.ErasedPhantomClass ))
127+ }
128+
129129 if (sym.isGetter) {
130130 var rhs = tree.rhs.changeOwnerAfter(sym, field, thisTransform)
131131 if (isWildcardArg(rhs)) rhs = EmptyTree
@@ -151,6 +151,7 @@ import Decorators._
151151 }
152152 else tree // curiously, some accessors from Scala2 have ' ' suffixes. They count as
153153 // neither getters nor setters
154+ }
154155 else tree
155156 }
156157}
0 commit comments