diff options
author | Paul Phillips <paulp@improving.org> | 2011-04-08 16:42:38 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-04-08 16:42:38 +0000 |
commit | 8e093b517f2c987cb5b4efe8dfb6736d54708e35 (patch) | |
tree | 50a963109d8cd6851a05cd9d040fbfd4a676c737 /src/compiler/scala/tools/nsc/interpreter/IMain.scala | |
parent | 6eae720732d493a3a3370a067a3b3b05aef73820 (diff) | |
download | scala-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.scala | 14 |
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] = { |