diff options
author | Paul Phillips <paulp@improving.org> | 2011-06-30 20:18:58 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-06-30 20:18:58 +0000 |
commit | a1375bf437dccf5ade90823a5c8b65cb5d84874b (patch) | |
tree | c1edd233323f1a8610a808793bd6feecfcbe8f59 /src | |
parent | 30ccdc9da64335f9120bfd9c582c823bc8741ebe (diff) | |
download | scala-a1375bf437dccf5ade90823a5c8b65cb5d84874b.tar.gz scala-a1375bf437dccf5ade90823a5c8b65cb5d84874b.tar.bz2 scala-a1375bf437dccf5ade90823a5c8b65cb5d84874b.zip |
Fix for recently introduced performance regress...
Fix for recently introduced performance regression, no review.
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/reflect/internal/Symbols.scala | 4 | ||||
-rw-r--r-- | src/compiler/scala/reflect/internal/Types.scala | 4 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 6 |
3 files changed, 7 insertions, 7 deletions
diff --git a/src/compiler/scala/reflect/internal/Symbols.scala b/src/compiler/scala/reflect/internal/Symbols.scala index ca22c16e76..4d6ec1a41a 100644 --- a/src/compiler/scala/reflect/internal/Symbols.scala +++ b/src/compiler/scala/reflect/internal/Symbols.scala @@ -307,8 +307,8 @@ trait Symbols /* extends reflect.generic.Symbols*/ { self: SymbolTable => final def isModuleClass = isClass && hasFlag(MODULE) final def isOverloaded = hasFlag(OVERLOADED) final def isRefinementClass = isClass && name == tpnme.REFINE_CLASS_NAME - final def isRefinementMember = owner.isStructuralRefinement && isVisibleInRefinement && !hasAccessBoundary - final def isVisibleInRefinement = !(isConstructor || isOverridingSymbol || isPrivate) + final def isPossibleInRefinement = !isConstructor && !isOverridingSymbol + final def isStructuralRefinementMember = owner.isStructuralRefinement && isPossibleInRefinement && isPublic final def isSourceMethod = isMethod && !hasFlag(STABLE) // exclude all accessors!!! final def isTypeParameter = isType && isParameter && !isSkolem diff --git a/src/compiler/scala/reflect/internal/Types.scala b/src/compiler/scala/reflect/internal/Types.scala index 6300c8731a..75243c6e1c 100644 --- a/src/compiler/scala/reflect/internal/Types.scala +++ b/src/compiler/scala/reflect/internal/Types.scala @@ -1410,7 +1410,7 @@ trait Types /*extends reflect.generic.Types*/ { self: SymbolTable => override def isNotNull: Boolean = parents exists (_.isNotNull) override def isStructuralRefinement: Boolean = - typeSymbol.isAnonOrRefinementClass && decls.exists(_.isVisibleInRefinement) + typeSymbol.isAnonOrRefinementClass && decls.exists(_.isPossibleInRefinement) // override def isNullable: Boolean = // parents forall (p => p.isNullable && !p.typeSymbol.isAbstractType); @@ -2019,7 +2019,7 @@ A type's typeSymbol should never be inspected directly. else if (sym.isAnonymousClass && sym.isInitialized && !settings.debug.value && !phase.erasedTypes) thisInfo.parents.mkString(" with ") + { if (sym.isStructuralRefinement) - decls filter (_.isVisibleInRefinement) map (_.defString) mkString("{", "; ", "}") + decls filter (sym => sym.isPossibleInRefinement && sym.isPublic) map (_.defString) mkString("{", "; ", "}") else "" } else if (sym.isRefinementClass && sym.isInitialized) diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index ba965290fe..23d7210758 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -1784,7 +1784,7 @@ trait Typers extends Modes { } } - if (meth.isRefinementMember) + if (meth.isStructuralRefinementMember) checkMethodStructuralCompatible(meth) treeCopy.DefDef(ddef, typedMods, ddef.name, tparams1, vparamss1, tpt1, rhs1) setType NoType @@ -1907,8 +1907,8 @@ trait Typers extends Modes { // -> members that are hidden by the type of the block are made private ( classDecls filter (member => member.isTerm - && member.isVisibleInRefinement - && !member.hasAccessBoundary + && member.isPossibleInRefinement + && member.isPublic && !matchesVisibleMember(member) ) foreach { member => |