summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-03-05 07:45:24 -0800
committerPaul Phillips <paulp@improving.org>2013-03-05 07:45:24 -0800
commit62aa0a4f6f20b014e4a30f8922b975827b7d68e8 (patch)
treef8ffdc104f66caf2c96775c157bbabd2deb9e241 /src
parent2dd1a2b8f0e9c46bb600720a9b3fc20f275623a5 (diff)
parent1b9c2f51d0fc37b1f2065a2b7c575cbfcd4665cd (diff)
downloadscala-62aa0a4f6f20b014e4a30f8922b975827b7d68e8.tar.gz
scala-62aa0a4f6f20b014e4a30f8922b975827b7d68e8.tar.bz2
scala-62aa0a4f6f20b014e4a30f8922b975827b7d68e8.zip
Merge pull request #2191 from mergeconflict/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 b087547cf8..9edd54b939 100644
--- a/src/compiler/scala/tools/nsc/interpreter/ExprTyper.scala
+++ b/src/compiler/scala/tools/nsc/interpreter/ExprTyper.scala
@@ -49,15 +49,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 exitingTyper(sym0.info.finalResultType)
- if (sym.info.typeSymbol eq UnitClass) NoSymbol
- else sym
+ sym0.cloneSymbol setInfo exitingTyper(sym0.info.finalResultType)
case _ => NoSymbol
}
}
@@ -74,7 +72,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