diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2013-11-22 22:13:44 +0100 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2013-11-23 14:39:11 +0100 |
commit | 66577fa6ec07de9769150019deeafb25a1e5422a (patch) | |
tree | fe6228f2a528c47c7e08d35ff3caa201410a00f3 /src | |
parent | 42657a6918ef7d6fd3f36838739ec8a3b64744a3 (diff) | |
download | scala-66577fa6ec07de9769150019deeafb25a1e5422a.tar.gz scala-66577fa6ec07de9769150019deeafb25a1e5422a.tar.bz2 scala-66577fa6ec07de9769150019deeafb25a1e5422a.zip |
SI-8001 spurious "pure expression does nothing" warning
`isPureExprForWarningPurposes` doesn’t warn on `()`, but `(): Unit`
leaves it confused. This patch fixes the problem.
The fix is important in the context of the recent split between blackbox
and whitebox macros. Macro engines wrap expansions of blackbox macros
in type ascriptions, so a macro that expands into `()` would actually
produce `(): Unit`, which would trigger a spurious warning. Thanks
@milessabin for spotting this problem!
Diffstat (limited to 'src')
-rw-r--r-- | src/reflect/scala/reflect/internal/TreeInfo.scala | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/TreeInfo.scala b/src/reflect/scala/reflect/internal/TreeInfo.scala index 8982fd4246..48db8f7bf7 100644 --- a/src/reflect/scala/reflect/internal/TreeInfo.scala +++ b/src/reflect/scala/reflect/internal/TreeInfo.scala @@ -199,7 +199,8 @@ abstract class TreeInfo { * don't reuse it for important matters like inlining * decisions. */ - def isPureExprForWarningPurposes(tree: Tree) = tree match { + def isPureExprForWarningPurposes(tree: Tree): Boolean = tree match { + case Typed(expr, _) => isPureExprForWarningPurposes(expr) case EmptyTree | Literal(Constant(())) => false case _ => def isWarnableRefTree = tree match { |