summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2013-10-02 17:22:17 +0200
committerAdriaan Moors <adriaan.moors@typesafe.com>2013-11-12 18:40:02 -0800
commitf83296552aa80faf8a9350131c0448bc05b34c96 (patch)
tree181a29f647609ba4d9cd8566fcde96c603d61259 /src
parent0d5c2f76ea30c6a45471dac635f035e931075453 (diff)
downloadscala-f83296552aa80faf8a9350131c0448bc05b34c96.tar.gz
scala-f83296552aa80faf8a9350131c0448bc05b34c96.tar.bz2
scala-f83296552aa80faf8a9350131c0448bc05b34c96.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/PatternTypers.scala7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/PatternTypers.scala b/src/compiler/scala/tools/nsc/typechecker/PatternTypers.scala
index f69b8a9697..ba135d7d25 100644
--- a/src/compiler/scala/tools/nsc/typechecker/PatternTypers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/PatternTypers.scala
@@ -409,9 +409,10 @@ trait PatternTypers {
if (fun1.tpe.isErroneous)
duplErrTree
- else if (unapplyMethod.isMacro && !fun1.isInstanceOf[Apply])
- duplErrorTree(WrongShapeExtractorExpansion(tree))
- else
+ else if (unapplyMethod.isMacro && !fun1.isInstanceOf[Apply]) {
+ if (isBlackbox(unapplyMethod)) duplErrorTree(BlackboxExtractorExpansion(tree))
+ else duplErrorTree(WrongShapeExtractorExpansion(tree))
+ } else
makeTypedUnApply()
}