summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-03-12 19:11:24 -0700
committerPaul Phillips <paulp@improving.org>2013-03-12 19:11:24 -0700
commitccd1bc082630a3c4b4cfe2e64689b9e316ad8714 (patch)
treed75200b511d2717195aa5c4f42c4076c5f9fbf5b /src
parent52adf130409df57fd612a119e352345cf1c93979 (diff)
parenteb365f9158f29c61410affde21c8f3cd0c6db08f (diff)
downloadscala-ccd1bc082630a3c4b4cfe2e64689b9e316ad8714.tar.gz
scala-ccd1bc082630a3c4b4cfe2e64689b9e316ad8714.tar.bz2
scala-ccd1bc082630a3c4b4cfe2e64689b9e316ad8714.zip
Merge pull request #2227 from mergeconflict/2.10.x-SI-7132
SI-7132 - don't discard Unit type in interpreter
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/interpreter/ExprTyper.scala12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/interpreter/ExprTyper.scala b/src/compiler/scala/tools/nsc/interpreter/ExprTyper.scala
index c4a672ac37..827ebe1678 100644
--- a/src/compiler/scala/tools/nsc/interpreter/ExprTyper.scala
+++ b/src/compiler/scala/tools/nsc/interpreter/ExprTyper.scala
@@ -57,15 +57,13 @@ trait ExprTyper {
// Typing it with a lazy val would give us the right type, but runs
// into compiler bugs with things like existentials, so we compile it
// behind a def and strip the NullaryMethodType which wraps the expr.
- val line = "def " + name + " = {\n" + code + "\n}"
+ val line = "def " + name + " = " + code
interpretSynthetic(line) match {
case IR.Success =>
val sym0 = symbolOfTerm(name)
// drop NullaryMethodType
- val sym = sym0.cloneSymbol setInfo afterTyper(sym0.info.finalResultType)
- if (sym.info.typeSymbol eq UnitClass) NoSymbol
- else sym
+ sym0.cloneSymbol setInfo afterTyper(sym0.info.finalResultType)
case _ => NoSymbol
}
}
@@ -82,7 +80,11 @@ trait ExprTyper {
case _ => NoSymbol
}
}
- beQuietDuring(asExpr()) orElse beQuietDuring(asDefn())
+ def asError(): Symbol = {
+ interpretSynthetic(code)
+ NoSymbol
+ }
+ beSilentDuring(asExpr()) orElse beSilentDuring(asDefn()) orElse asError()
}
private var typeOfExpressionDepth = 0