Skip to content

Commit fbca023

Browse files
committed
small code cleanup in ExplicitOuter
1 parent 945db30 commit fbca023

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -159,19 +159,24 @@ abstract class ExplicitOuter extends InfoTransform
159159
* elides outer pointers.
160160
*/
161161
def transformInfo(sym: Symbol, tp: Type): Type = tp match {
162-
case MethodType(params, restpe1) =>
163-
val restpe = transformInfo(sym, restpe1)
164-
if (sym.owner.isTrait && ((sym hasFlag (ACCESSOR | SUPERACCESSOR)) || sym.isModule)) { // 5
165-
sym.makeNotPrivate(sym.owner)
162+
case MethodType(params, resTp) =>
163+
val resTpTransformed = transformInfo(sym, resTp)
164+
165+
// juggle flags (and mangle names) after transforming info
166+
if (sym.owner.isTrait) {
167+
// TODO: I don't believe any private accessors remain after the fields phase
168+
if ((sym hasFlag (ACCESSOR | SUPERACCESSOR)) || sym.isModule) sym.makeNotPrivate(sym.owner) // 5
169+
if (sym.isProtected) sym setFlag notPROTECTED // 6
166170
}
167-
if (sym.owner.isTrait && sym.isProtected) sym setFlag notPROTECTED // 6
168-
if (sym.isClassConstructor && isInner(sym.owner)) { // 1
169-
val p = sym.newValueParameter(innerClassConstructorParamName, sym.pos)
170-
.setInfo(sym.owner.outerClass.thisType)
171-
MethodType(p :: params, restpe)
172-
} else if (restpe ne restpe1)
173-
MethodType(params, restpe)
171+
172+
val paramsWithOuter =
173+
if (sym.isClassConstructor && isInner(sym.owner)) // 1
174+
sym.newValueParameter(innerClassConstructorParamName, sym.pos).setInfo(sym.owner.outerClass.thisType) :: params
175+
else params
176+
177+
if ((resTpTransformed ne resTp) || (paramsWithOuter ne params)) MethodType(paramsWithOuter, resTpTransformed)
174178
else tp
179+
175180
case ClassInfoType(parents, decls, clazz) =>
176181
var decls1 = decls
177182
if (isInner(clazz) && !clazz.isInterface) {

0 commit comments

Comments
 (0)