diff options
author | Paul Phillips <paulp@improving.org> | 2013-03-12 19:11:24 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-03-12 19:11:24 -0700 |
commit | ccd1bc082630a3c4b4cfe2e64689b9e316ad8714 (patch) | |
tree | d75200b511d2717195aa5c4f42c4076c5f9fbf5b /src/compiler | |
parent | 52adf130409df57fd612a119e352345cf1c93979 (diff) | |
parent | eb365f9158f29c61410affde21c8f3cd0c6db08f (diff) | |
download | scala-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/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/interpreter/ExprTyper.scala | 12 |
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 |