From f83296552aa80faf8a9350131c0448bc05b34c96 Mon Sep 17 00:00:00 2001 From: Eugene Burmako Date: Wed, 2 Oct 2013 17:22:17 +0200 Subject: blackbox restriction #4: can't customize pattern matching When an application of a blackbox macro is used as an extractor in a pattern match, it triggers an unconditional compiler error, preventing customizations of pattern matching implemented with macros. --- .../neg/macro-blackbox-extractor/Macros_1.scala | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 test/files/neg/macro-blackbox-extractor/Macros_1.scala (limited to 'test/files/neg/macro-blackbox-extractor/Macros_1.scala') diff --git a/test/files/neg/macro-blackbox-extractor/Macros_1.scala b/test/files/neg/macro-blackbox-extractor/Macros_1.scala new file mode 100644 index 0000000000..5c7748bec9 --- /dev/null +++ b/test/files/neg/macro-blackbox-extractor/Macros_1.scala @@ -0,0 +1,21 @@ +import scala.reflect.macros.BlackboxContext +import language.experimental.macros + +object Extractor { + def unapply(x: Int) = macro Macros.unapplyImpl +} + +object Macros { + def unapplyImpl(c: BlackboxContext)(x: c.Tree) = { + import c.universe._ + q""" + new { + class Match(x: Int) { + def isEmpty = false + def get = x + } + def unapply(x: Int) = new Match(x) + }.unapply($x) + """ + } +} -- cgit v1.2.3