From 97286d761a5eaf18cc7018aa162866232a87ed91 Mon Sep 17 00:00:00 2001 From: Eugene Burmako Date: Fri, 10 Jan 2014 20:28:19 +0100 Subject: moves analyzer.ImportType into scala.reflect.internal This cute little type is necessary for importers to work correctly. I wonder how we could overlook its existence for almost 2 years. --- src/compiler/scala/tools/nsc/ast/TreeBrowsers.scala | 2 +- src/compiler/scala/tools/nsc/ast/TreeGen.scala | 2 +- src/compiler/scala/tools/nsc/typechecker/Contexts.scala | 5 ++--- src/interactive/scala/tools/nsc/interactive/Global.scala | 6 +++--- src/reflect/scala/reflect/internal/Importers.scala | 2 ++ src/reflect/scala/reflect/internal/Types.scala | 4 ++++ src/reflect/scala/reflect/runtime/JavaUniverseForce.scala | 1 + 7 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/compiler/scala/tools/nsc/ast/TreeBrowsers.scala b/src/compiler/scala/tools/nsc/ast/TreeBrowsers.scala index c68b248240..eb7409836c 100644 --- a/src/compiler/scala/tools/nsc/ast/TreeBrowsers.scala +++ b/src/compiler/scala/tools/nsc/ast/TreeBrowsers.scala @@ -632,7 +632,7 @@ abstract class TreeBrowsers { Document.group("(" :/: symsToDocument(tparams) :/: "), ") :/: toDocument(result) :: ")")) - case global.analyzer.ImportType(expr) => + case ImportType(expr) => "ImportType(" + expr.toString + ")" diff --git a/src/compiler/scala/tools/nsc/ast/TreeGen.scala b/src/compiler/scala/tools/nsc/ast/TreeGen.scala index 4ac6672727..a87a04472a 100644 --- a/src/compiler/scala/tools/nsc/ast/TreeGen.scala +++ b/src/compiler/scala/tools/nsc/ast/TreeGen.scala @@ -37,7 +37,7 @@ abstract class TreeGen extends scala.reflect.internal.TreeGen with TreeDSL { NoSymbol newImport NoPosition setFlag SYNTHETIC - setInfo analyzer.ImportType(qual) + setInfo ImportType(qual) ) val importTree = ( Import(qual, selector) diff --git a/src/compiler/scala/tools/nsc/typechecker/Contexts.scala b/src/compiler/scala/tools/nsc/typechecker/Contexts.scala index 53bc9a2772..598b12b00d 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Contexts.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Contexts.scala @@ -1353,9 +1353,8 @@ trait Contexts { self: Analyzer => override def toString = tree.toString } - case class ImportType(expr: Tree) extends Type { - override def safeToString = "ImportType("+expr+")" - } + type ImportType = global.ImportType + val ImportType = global.ImportType } object ContextMode { diff --git a/src/interactive/scala/tools/nsc/interactive/Global.scala b/src/interactive/scala/tools/nsc/interactive/Global.scala index b55a573029..0e897d6492 100644 --- a/src/interactive/scala/tools/nsc/interactive/Global.scala +++ b/src/interactive/scala/tools/nsc/interactive/Global.scala @@ -956,7 +956,7 @@ class Global(settings: Settings, _reporter: Reporter, projectName: String = "") singleType(qual.tpe, tree.symbol) case Import(expr, selectors) => tree.symbol.info match { - case analyzer.ImportType(expr) => expr match { + case ImportType(expr) => expr match { case s@Select(qual, name) if treeInfo.admitsTypeSelection(expr) => singleType(qual.tpe, s.symbol) case i : Ident => i.tpe case _ => tree.tpe @@ -1021,7 +1021,7 @@ class Global(settings: Settings, _reporter: Reporter, projectName: String = "") def addScopeMember(sym: Symbol, pre: Type, viaImport: Tree) = locals.add(sym, pre, implicitlyAdded = false) { (s, st) => // imported val and var are always marked as inaccessible, but they could be accessed through their getters. SI-7995 - if (s.hasGetter) + if (s.hasGetter) new ScopeMember(s, st, context.isAccessible(s.getter, pre, superAccess = false), viaImport) else new ScopeMember(s, st, context.isAccessible(s, pre, superAccess = false), viaImport) @@ -1111,7 +1111,7 @@ class Global(settings: Settings, _reporter: Reporter, projectName: String = "") val pre = stabilizedType(tree) val ownerTpe = tree.tpe match { - case analyzer.ImportType(expr) => expr.tpe + case ImportType(expr) => expr.tpe case null => pre case MethodType(List(), rtpe) => rtpe case _ => tree.tpe diff --git a/src/reflect/scala/reflect/internal/Importers.scala b/src/reflect/scala/reflect/internal/Importers.scala index 91ba552012..26d55e21c4 100644 --- a/src/reflect/scala/reflect/internal/Importers.scala +++ b/src/reflect/scala/reflect/internal/Importers.scala @@ -260,6 +260,8 @@ trait Importers extends api.Importers { to: SymbolTable => newExistentialType(tparams map importSymbol, importType(result)) case from.OverloadedType(pre, alts) => OverloadedType(importType(pre), alts map importSymbol) + case from.ImportType(qual) => + ImportType(importTree(qual)) case from.AntiPolyType(pre, targs) => AntiPolyType(importType(pre), targs map importType) case their: from.TypeVar => diff --git a/src/reflect/scala/reflect/internal/Types.scala b/src/reflect/scala/reflect/internal/Types.scala index 99e6ae633f..45daa2ae04 100644 --- a/src/reflect/scala/reflect/internal/Types.scala +++ b/src/reflect/scala/reflect/internal/Types.scala @@ -2747,6 +2747,10 @@ trait Types case _ => OverloadedType(pre, alternatives) } + case class ImportType(expr: Tree) extends Type { + override def safeToString = "ImportType("+expr+")" + } + /** A class remembering a type instantiation for some a set of overloaded * polymorphic symbols. * Not used after phase `typer`. diff --git a/src/reflect/scala/reflect/runtime/JavaUniverseForce.scala b/src/reflect/scala/reflect/runtime/JavaUniverseForce.scala index c87995275f..9dfa5bcf2e 100644 --- a/src/reflect/scala/reflect/runtime/JavaUniverseForce.scala +++ b/src/reflect/scala/reflect/runtime/JavaUniverseForce.scala @@ -169,6 +169,7 @@ trait JavaUniverseForce { self: runtime.JavaUniverse => this.PolyType this.ExistentialType this.OverloadedType + this.ImportType this.AntiPolyType this.HasTypeMember this.ArrayTypeRef -- cgit v1.2.3