summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/interpreter/IMain.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-04-08 16:42:38 +0000
committerPaul Phillips <paulp@improving.org>2011-04-08 16:42:38 +0000
commit8e093b517f2c987cb5b4efe8dfb6736d54708e35 (patch)
tree50a963109d8cd6851a05cd9d040fbfd4a676c737 /src/compiler/scala/tools/nsc/interpreter/IMain.scala
parent6eae720732d493a3a3370a067a3b3b05aef73820 (diff)
downloadscala-8e093b517f2c987cb5b4efe8dfb6736d54708e35.tar.gz
scala-8e093b517f2c987cb5b4efe8dfb6736d54708e35.tar.bz2
scala-8e093b517f2c987cb5b4efe8dfb6736d54708e35.zip
Added :imports command, no review.
Diffstat (limited to 'src/compiler/scala/tools/nsc/interpreter/IMain.scala')
-rw-r--r--src/compiler/scala/tools/nsc/interpreter/IMain.scala14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/interpreter/IMain.scala b/src/compiler/scala/tools/nsc/interpreter/IMain.scala
index f407b42689..62e781958f 100644
--- a/src/compiler/scala/tools/nsc/interpreter/IMain.scala
+++ b/src/compiler/scala/tools/nsc/interpreter/IMain.scala
@@ -860,8 +860,10 @@ class IMain(val settings: Settings, protected val out: PrintWriter) extends Impo
case _ => naming.mostRecentVar
})
- private def requestForName(name: Name): Option[Request] =
+ private def requestForName(name: Name): Option[Request] = {
+ assert(definedNameMap != null, "definedNameMap is null")
definedNameMap get name
+ }
private def requestForIdent(line: String): Option[Request] =
requestForName(newTermName(line)) orElse requestForName(newTypeName(line))
@@ -927,17 +929,23 @@ class IMain(val settings: Settings, protected val out: PrintWriter) extends Impo
return None
}
+ def asQualifiedImport = {
+ val name = expr.takeWhile(_ != '.')
+ importedTermNamed(name) flatMap { sym =>
+ typeOfExpression(sym.fullName + expr.drop(name.length))
+ }
+ }
def asModule = safeModule(expr) map (_.tpe)
def asExpr = beSilentDuring {
val lhs = freshInternalVarName()
- interpret("lazy val " + lhs + " = { " + expr + " } ") match {
+ interpret("lazy val " + lhs + " = { " + expr + " } ", true) match {
case IR.Success => typeOfExpression(lhs)
case _ => None
}
}
typeOfExpressionDepth += 1
- try typeOfTerm(expr) orElse asModule orElse asExpr
+ try typeOfTerm(expr) orElse asModule orElse asExpr orElse asQualifiedImport
finally typeOfExpressionDepth -= 1
}
// def compileAndTypeExpr(expr: String): Option[Typer] = {