From cc43126a20affb6aab8b0647550d1a64d964e59f Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Tue, 19 Sep 2006 15:17:49 +0000 Subject: fixed problem in test4 --- src/compiler/scala/tools/nsc/symtab/Symbols.scala | 5 ++++- src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/compiler/scala/tools/nsc/symtab/Symbols.scala b/src/compiler/scala/tools/nsc/symtab/Symbols.scala index 4ddb5689c3..3b7c2f6874 100644 --- a/src/compiler/scala/tools/nsc/symtab/Symbols.scala +++ b/src/compiler/scala/tools/nsc/symtab/Symbols.scala @@ -479,7 +479,10 @@ trait Symbols requires SymbolTable { throw new Error("typeConstructor inapplicable for " + this) /** The type parameters of this symbol */ - def unsafeTypeParams: List[Symbol] = rawInfo.typeParams + def unsafeTypeParams: List[Symbol] = { + val limit = phaseId(validTo) + (if (limit < phase.id) infos.info else rawInfo).typeParams + } def typeParams: List[Symbol] = { rawInfo.load(this); rawInfo.typeParams diff --git a/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala b/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala index 0caa0f6522..6ba1524213 100644 --- a/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala +++ b/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala @@ -99,10 +99,10 @@ abstract class ExplicitOuter extends InfoTransform with TransMatcher with Patter val mixinOuterAcc: Symbol = atPhase(phase.next)(outerAccessor(mc)) if (mixinOuterAcc != NoSymbol) { if (decls1 eq decls) decls1 = newScope(decls.toList) - decls1 enter ( - mixinOuterAcc.cloneSymbol(clazz) - .setInfo(clazz.thisType.memberType(mixinOuterAcc)) - .resetFlag(DEFERRED)) + val newAcc = mixinOuterAcc.cloneSymbol(clazz) + newAcc.resetFlag(DEFERRED) + newAcc.setInfo(clazz.thisType.memberType(mixinOuterAcc)) + decls1 enter newAcc } } } -- cgit v1.2.3