diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2013-10-02 17:22:17 +0200 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-11-12 18:40:02 -0800 |
commit | f83296552aa80faf8a9350131c0448bc05b34c96 (patch) | |
tree | 181a29f647609ba4d9cd8566fcde96c603d61259 /src | |
parent | 0d5c2f76ea30c6a45471dac635f035e931075453 (diff) | |
download | scala-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.scala | 7 |
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() } |