summaryrefslogtreecommitdiff
path: root/test/files/run
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2014-03-23 16:43:35 +0100
committerEugene Burmako <xeno.by@gmail.com>2014-03-25 15:38:27 +0100
commit932626471f90c038511647400518d8c32607315b (patch)
tree2dc84cc4913dc21778343571b2e24bb9e03a17d8 /test/files/run
parentbcf24ec9ba07408ad9e8745135cc941ac3e76289 (diff)
downloadscala-932626471f90c038511647400518d8c32607315b.tar.gz
scala-932626471f90c038511647400518d8c32607315b.tar.bz2
scala-932626471f90c038511647400518d8c32607315b.zip
SI-8437 macro runtime now also picks inherited macro implementations
Previously it didn't matter much that we used Class.getDeclaredMethods instead of just getMethods, but with the introduction of macro bundles it can make a difference which is fixed in this commit. I'd also like to note that the fact that getMethods only returns public methods and getDeclaredMethods also sees private methods, doesn't make a difference, because macro implementations must be public.
Diffstat (limited to 'test/files/run')
-rw-r--r--test/files/run/t8437.check2
-rw-r--r--test/files/run/t8437/Macros_1.scala18
-rw-r--r--test/files/run/t8437/Test_2.scala4
3 files changed, 24 insertions, 0 deletions
diff --git a/test/files/run/t8437.check b/test/files/run/t8437.check
new file mode 100644
index 0000000000..fd3c81a4d7
--- /dev/null
+++ b/test/files/run/t8437.check
@@ -0,0 +1,2 @@
+5
+5
diff --git a/test/files/run/t8437/Macros_1.scala b/test/files/run/t8437/Macros_1.scala
new file mode 100644
index 0000000000..6286ea2a8c
--- /dev/null
+++ b/test/files/run/t8437/Macros_1.scala
@@ -0,0 +1,18 @@
+import scala.language.experimental.macros
+import scala.reflect.macros._
+
+abstract class AbstractBundle(val c: blackbox.Context) {
+ import c.Expr
+ import c.universe._
+ def foo: Expr[Int] = Expr[Int](q"5")
+}
+
+class ConcreteBundle(override val c: blackbox.Context) extends AbstractBundle(c) {
+ import c.Expr
+ val bar: Expr[Int] = foo
+}
+
+object InvokeBundle {
+ def foo: Int = macro ConcreteBundle.foo // nope
+ def bar: Int = macro ConcreteBundle.bar // yep
+} \ No newline at end of file
diff --git a/test/files/run/t8437/Test_2.scala b/test/files/run/t8437/Test_2.scala
new file mode 100644
index 0000000000..47bb84ad0e
--- /dev/null
+++ b/test/files/run/t8437/Test_2.scala
@@ -0,0 +1,4 @@
+object Test extends App {
+ println(InvokeBundle.foo)
+ println(InvokeBundle.bar)
+} \ No newline at end of file