@@ -95,28 +95,15 @@ import Decorators._
95
95
def adaptToField (tree : Tree ) =
96
96
if (tree.isEmpty) tree else tree.ensureConforms(field.info.widen)
97
97
98
+ val NoFieldNeeded = Lazy | Deferred | JavaDefined | (if (ctx.settings.YnoInline .value) EmptyFlags else Inline )
99
+
98
100
if (sym.is(Accessor , butNot = NoFieldNeeded ))
99
101
if (sym.isGetter) {
100
- def skipBlocks (t : Tree ): Tree = t match {
101
- case Block (_, t1) => skipBlocks(t1)
102
- case _ => t
103
- }
104
- skipBlocks(tree.rhs) match {
105
- case lit : Literal if sym.is(Final , butNot = Mutable ) && isIdempotentExpr(tree.rhs) =>
106
- // duplicating scalac behavior: for final vals that have rhs as constant, we do not create a field
107
- // and instead return the value. This seemingly minor optimization has huge effect on initialization
108
- // order and the values that can be observed during superconstructor call
109
-
110
- // see remark about idempotency in PostTyper#normalizeTree
111
- cpy.DefDef (tree)(rhs = lit)
112
- case _ =>
113
- var rhs = tree.rhs.changeOwnerAfter(sym, field, thisTransform)
114
- if (isWildcardArg(rhs)) rhs = EmptyTree
115
-
116
- val fieldDef = transformFollowing(ValDef (field, adaptToField(rhs)))
117
- val getterDef = cpy.DefDef (tree)(rhs = transformFollowingDeep(ref(field))(ctx.withOwner(sym), info))
118
- Thicket (fieldDef, getterDef)
119
- }
102
+ var rhs = tree.rhs.changeOwnerAfter(sym, field, thisTransform)
103
+ if (isWildcardArg(rhs)) rhs = EmptyTree
104
+ val fieldDef = transformFollowing(ValDef (field, adaptToField(rhs)))
105
+ val getterDef = cpy.DefDef (tree)(rhs = transformFollowingDeep(ref(field))(ctx.withOwner(sym), info))
106
+ Thicket (fieldDef, getterDef)
120
107
} else if (sym.isSetter) {
121
108
if (! sym.is(ParamAccessor )) { val Literal (Constant (())) = tree.rhs } // this is intended as an assertion
122
109
field.setFlag(Mutable ) // necessary for vals mixed in from Scala2 traits
@@ -127,5 +114,4 @@ import Decorators._
127
114
// neither getters nor setters
128
115
else tree
129
116
}
130
- private val NoFieldNeeded = Lazy | Deferred | JavaDefined
131
117
}
0 commit comments