summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-08-17 23:42:40 -0700
committerPaul Phillips <paulp@improving.org>2013-08-17 23:42:40 -0700
commita9efda40ee30796d3458604869a87a2c91f3efbf (patch)
tree7d1e685110c50ae37616c00f3c94450af03c4acc /src
parent22b82a485a53ffad3490673a481fbd79d616ed71 (diff)
parent84a335916556cb0fe939d1c51f27d80d9cf980dc (diff)
downloadscala-a9efda40ee30796d3458604869a87a2c91f3efbf.tar.gz
scala-a9efda40ee30796d3458604869a87a2c91f3efbf.tar.bz2
scala-a9efda40ee30796d3458604869a87a2c91f3efbf.zip
Merge remote-tracking branch 'xeno-by/topic/patmat2' into patmat2
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala3
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/PatternTypers.scala2
2 files changed, 5 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala b/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala
index 7f4bf0dfbc..1f4d5cbac2 100644
--- a/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala
@@ -517,6 +517,9 @@ trait ContextErrors {
def TooManyArgsPatternError(fun: Tree) =
NormalTypeError(fun, "too many arguments for unapply pattern, maximum = "+definitions.MaxTupleArity)
+ def WrongShapeExtractorExpansion(fun: Tree) =
+ NormalTypeError(fun, "extractor macros can only expand into extractor calls")
+
def WrongNumberOfArgsError(tree: Tree, fun: Tree) =
NormalTypeError(tree, "wrong number of arguments for "+ treeSymTypeMsg(fun))
diff --git a/src/compiler/scala/tools/nsc/typechecker/PatternTypers.scala b/src/compiler/scala/tools/nsc/typechecker/PatternTypers.scala
index 13926ca18b..cc0ffe2ac2 100644
--- a/src/compiler/scala/tools/nsc/typechecker/PatternTypers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/PatternTypers.scala
@@ -413,6 +413,8 @@ trait PatternTypers {
if (fun1.tpe.isErroneous)
duplErrTree
+ else if (unapplyMethod.isMacro && !fun1.isInstanceOf[Apply])
+ duplErrorTree(WrongShapeExtractorExpansion(tree))
else
makeTypedUnApply()
}