summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-06-30 20:18:58 +0000
committerPaul Phillips <paulp@improving.org>2011-06-30 20:18:58 +0000
commita1375bf437dccf5ade90823a5c8b65cb5d84874b (patch)
treec1edd233323f1a8610a808793bd6feecfcbe8f59 /src
parent30ccdc9da64335f9120bfd9c582c823bc8741ebe (diff)
downloadscala-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.scala4
-rw-r--r--src/compiler/scala/reflect/internal/Types.scala4
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala6
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 =>