summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2013-01-30 16:25:15 -0800
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2013-01-30 16:25:15 -0800
commit7d80e0846964053b81b4e4b5db7b9356e3bcc601 (patch)
treec51c06601f48dce122c584e488173312b3030fed
parent74b3e9aefe05363a14c217b558d8f9890c008379 (diff)
parenteba079b6522cc112d949c1f2c18960e31750efd6 (diff)
downloadscala-7d80e0846964053b81b4e4b5db7b9356e3bcc601.tar.gz
scala-7d80e0846964053b81b4e4b5db7b9356e3bcc601.tar.bz2
scala-7d80e0846964053b81b4e4b5db7b9356e3bcc601.zip
Merge pull request #2008 from paulp/pr/asSeenFromOpt
Optimization in AsSeenFromMap.
-rw-r--r--src/reflect/scala/reflect/internal/Types.scala12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/reflect/scala/reflect/internal/Types.scala b/src/reflect/scala/reflect/internal/Types.scala
index d0c9b8dd03..a2b3fd5d97 100644
--- a/src/reflect/scala/reflect/internal/Types.scala
+++ b/src/reflect/scala/reflect/internal/Types.scala
@@ -746,7 +746,7 @@ trait Types extends api.Types { self: SymbolTable =>
val trivial = (
this.isTrivial
|| phase.erasedTypes && pre.typeSymbol != ArrayClass
- || pre.normalize.isTrivial && !isPossiblePrefix(clazz)
+ || skipPrefixOf(pre, clazz)
)
if (trivial) this
else {
@@ -4471,14 +4471,15 @@ trait Types extends api.Types { self: SymbolTable =>
*/
def isPossiblePrefix(clazz: Symbol) = clazz.isClass && !clazz.isPackageClass
+ private def skipPrefixOf(pre: Type, clazz: Symbol) = (
+ (pre eq NoType) || (pre eq NoPrefix) || !isPossiblePrefix(clazz)
+ )
+
/** A map to compute the asSeenFrom method */
class AsSeenFromMap(pre: Type, clazz: Symbol) extends TypeMap with KeepOnlyTypeConstraints {
var capturedSkolems: List[Symbol] = List()
var capturedParams: List[Symbol] = List()
- private def skipPrefixOf(pre: Type, clazz: Symbol) = (
- (pre eq NoType) || (pre eq NoPrefix) || !isPossiblePrefix(clazz)
- )
override def mapOver(tree: Tree, giveup: ()=>Nothing): Tree = {
object annotationArgRewriter extends TypeMapTransformer {
private def canRewriteThis(sym: Symbol) = (
@@ -4511,8 +4512,7 @@ trait Types extends api.Types { self: SymbolTable =>
}
def apply(tp: Type): Type =
- if (skipPrefixOf(pre, clazz)) tp
- else tp match {
+ tp match {
case ThisType(sym) =>
def toPrefix(pre: Type, clazz: Symbol): Type =
if (skipPrefixOf(pre, clazz)) tp