summaryrefslogtreecommitdiff
path: root/test/files/neg/macro-invalidshape
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2013-06-05 16:51:06 +0200
committerEugene Burmako <xeno.by@gmail.com>2013-06-07 22:26:56 +0200
commitee646e9c84290e721c4ee9fe6247d4b95840e871 (patch)
tree9e95db43b84677f0f874d9e0f6c584ad2c49259c /test/files/neg/macro-invalidshape
parent488444b327f222fa4ef317b5d96fb7cdf732d4d2 (diff)
downloadscala-ee646e9c84290e721c4ee9fe6247d4b95840e871.tar.gz
scala-ee646e9c84290e721c4ee9fe6247d4b95840e871.tar.bz2
scala-ee646e9c84290e721c4ee9fe6247d4b95840e871.zip
fixes a crash on a degenerate macro definition
Previous version of the MacroImplReference extractor didn't take into the account the fact that RefTree.qualifier.symbol can be null (and it can be null if RefTree is an Ident, because then qualifier is an EmptyTree). This led to NPEs for really weird macro defs that refer to local methods as their corresponding macro impls. Now I check for this corner case, and the stuff now longer crashes. This was wrong; this is how I fixed it; the world is now a better place.
Diffstat (limited to 'test/files/neg/macro-invalidshape')
-rw-r--r--test/files/neg/macro-invalidshape/Macros_Test_2.scala5
1 files changed, 5 insertions, 0 deletions
diff --git a/test/files/neg/macro-invalidshape/Macros_Test_2.scala b/test/files/neg/macro-invalidshape/Macros_Test_2.scala
index f39ad20c5d..cf37e14d8e 100644
--- a/test/files/neg/macro-invalidshape/Macros_Test_2.scala
+++ b/test/files/neg/macro-invalidshape/Macros_Test_2.scala
@@ -2,6 +2,11 @@ object Macros {
def foo1(x: Any) = macro 2
def foo2(x: Any) = macro Impls.foo(null)(null)
def foo3(x: Any) = macro {2; Impls.foo}
+ {
+ def impl(c: scala.reflect.macros.Context) = c.literalUnit
+ def foo = macro impl
+ foo
+ }
}
object Test extends App {