summaryrefslogtreecommitdiff
path: root/test/files/run/t6673.scala
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2012-11-16 14:13:33 +0100
committerEugene Burmako <xeno.by@gmail.com>2012-11-18 21:13:43 +0100
commit907d6ea06ee2e2116dc24838b73990dca3d4c651 (patch)
tree164959bc1c2fc2067526d699c183c39a961015bc /test/files/run/t6673.scala
parent1a6c8597109a9eee122d01c142d8955a14f704c8 (diff)
downloadscala-907d6ea06ee2e2116dc24838b73990dca3d4c651.tar.gz
scala-907d6ea06ee2e2116dc24838b73990dca3d4c651.tar.bz2
scala-907d6ea06ee2e2116dc24838b73990dca3d4c651.zip
SI-6673 fixes macro problems with eta expansions
Eta expansions previously caused the typer to disable macros. That was done in order to detect eta expansion of macro defs and show the user an appropriate error message. Macros were disabled because to find out whether we're expanding a macro def, we need to get its symbol, and to get a symbol of something we need to typecheck that something. However typechecking automatically expands macros, so, unless we disable macros, after a typecheck we won't be able to analyze macro occurrences anymore. Unfortunately this solution has a fatal flaw. By disabling macros we not only prevent the eta-expandee from macro expanding, but also all the subtrees of that eta-expandee (see SI-6673). This commit adds a mechanism for fine-grained control over macro expansion. Now it's possible to prohibit only the node, but not its children from macro expanding.
Diffstat (limited to 'test/files/run/t6673.scala')
-rw-r--r--test/files/run/t6673.scala5
1 files changed, 5 insertions, 0 deletions
diff --git a/test/files/run/t6673.scala b/test/files/run/t6673.scala
new file mode 100644
index 0000000000..115bbdf234
--- /dev/null
+++ b/test/files/run/t6673.scala
@@ -0,0 +1,5 @@
+object Test extends App {
+ def foo(f: String => Array[String])(s: String) = f(s)
+ val test = foo(Array(_)) _
+ println(test("x").toList)
+} \ No newline at end of file