summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/reflect/internal/Importers.scala8
-rw-r--r--src/compiler/scala/reflect/runtime/ToolBoxes.scala4
-rw-r--r--test/disabled/pos/code.scala10
3 files changed, 11 insertions, 11 deletions
diff --git a/src/compiler/scala/reflect/internal/Importers.scala b/src/compiler/scala/reflect/internal/Importers.scala
index 47a9a8f8a6..440b5aa509 100644
--- a/src/compiler/scala/reflect/internal/Importers.scala
+++ b/src/compiler/scala/reflect/internal/Importers.scala
@@ -80,7 +80,9 @@ trait Importers { self: SymbolTable =>
mysym resetFlag Flags.LOCKED
} // end doImport
- if (myowner.isClass && !myowner.isRefinementClass && !(myowner hasFlag Flags.LOCKED) && sym.owner.info.decl(sym.name).exists) {
+ if (sym.isModuleClass) {
+ importSymbol(sym.sourceModule).moduleClass
+ } else if (myowner.isClass && !myowner.isRefinementClass && !(myowner hasFlag Flags.LOCKED) && sym.owner.info.decl(sym.name).exists) {
// symbol is in class scope, try to find equivalent one in local scope
if (sym.isOverloaded)
myowner.newOverloaded(myowner.thisType, sym.alternatives map importSymbol)
@@ -98,10 +100,10 @@ trait Importers { self: SymbolTable =>
"import failure: cannot determine unique overloaded method alternative from\n "+
(existing.alternatives map (_.defString) mkString "\n")+"\n that matches "+sym+":"+sym.tpe)
}
- if (existing.exists) existing
+ if (existing != NoSymbol) existing
else {
val mysym = doImport
- assert(myowner.info.decls.lookup(myname) == NoSymbol, myname+" "+myowner.info.decl(myname).exists)
+ assert(myowner.info.decls.lookup(myname) == NoSymbol, myname+" "+myowner.info.decl(myname)+" "+existing)
myowner.info.decls enter mysym
mysym
}
diff --git a/src/compiler/scala/reflect/runtime/ToolBoxes.scala b/src/compiler/scala/reflect/runtime/ToolBoxes.scala
index 8b7242e6b4..90b5aba27d 100644
--- a/src/compiler/scala/reflect/runtime/ToolBoxes.scala
+++ b/src/compiler/scala/reflect/runtime/ToolBoxes.scala
@@ -24,7 +24,9 @@ trait ToolBoxes extends { self: Universe =>
lazy val exporter = importer.reverse
def typeCheck(tree: Tree, expectedType: Type = WildcardType): Tree = {
- new compiler.Run
+ println("typing "+tree+", pt = "+expectedType)
+ val run = new compiler.Run
+ compiler.phase = run.refchecksPhase
val ctree: compiler.Tree = importer.importTree(tree)
val pt: compiler.Type = importer.importType(expectedType)
val ttree: compiler.Tree = compiler.typer.typed(ctree, compiler.analyzer.EXPRmode, pt)
diff --git a/test/disabled/pos/code.scala b/test/disabled/pos/code.scala
index e9e458ac10..8355c51e06 100644
--- a/test/disabled/pos/code.scala
+++ b/test/disabled/pos/code.scala
@@ -1,5 +1,6 @@
import reflect.runtime.Mirror.ToolBox
import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
object Test extends App {
def foo[T](ys: List[T]) = {
@@ -9,14 +10,9 @@ object Test extends App {
val code = foo(List(2))
val tree = code.tree.asInstanceOf[scala.reflect.runtime.Mirror.Tree]
val targetType = code.manifest.tpe.asInstanceOf[scala.reflect.runtime.Mirror.Type]
- val reporter = new StoreReporter
+ val reporter = new ConsoleReporter(new Settings)
val toolbox = new ToolBox(reporter, args mkString " ")
val ttree = toolbox.typeCheck(tree, targetType)
- if (reporter.infos.nonEmpty) {
- reporter.infos foreach println
- println("compilaton failed")
- } else {
- println("result = "+ttree)
- }
+ println("result = "+ttree)
}