aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/typer/Applications.scala
diff options
context:
space:
mode:
authorodersky <odersky@gmail.com>2017-04-13 11:43:37 +0200
committerGitHub <noreply@github.com>2017-04-13 11:43:37 +0200
commitb8ed254e38480eb8892eccd897d525d977d9e6a7 (patch)
tree902b9c8fa209f730746ef84dc895ff2710badd24 /compiler/src/dotty/tools/dotc/typer/Applications.scala
parent46e3395693b6f8749aa0b01b41b7d643f3bef5dc (diff)
parent3e04b6f3aa4e4088220f199bd6aa5c6644c22354 (diff)
downloaddotty-b8ed254e38480eb8892eccd897d525d977d9e6a7.tar.gz
dotty-b8ed254e38480eb8892eccd897d525d977d9e6a7.tar.bz2
dotty-b8ed254e38480eb8892eccd897d525d977d9e6a7.zip
Merge pull request #2249 from dotty-staging/revert-product
Revert <: Product requierment in pattern matching
Diffstat (limited to 'compiler/src/dotty/tools/dotc/typer/Applications.scala')
-rw-r--r--compiler/src/dotty/tools/dotc/typer/Applications.scala7
1 files changed, 2 insertions, 5 deletions
diff --git a/compiler/src/dotty/tools/dotc/typer/Applications.scala b/compiler/src/dotty/tools/dotc/typer/Applications.scala
index c4d3e2292..7e17abbcd 100644
--- a/compiler/src/dotty/tools/dotc/typer/Applications.scala
+++ b/compiler/src/dotty/tools/dotc/typer/Applications.scala
@@ -48,9 +48,6 @@ object Applications {
ref.info.widenExpr.dealias
}
- def canProductMatch(tp: Type)(implicit ctx: Context) =
- extractorMemberType(tp, nme._1).exists
-
/** Does `tp` fit the "product match" conditions as an unapply result type
* for a pattern with `numArgs` subpatterns?
* This is the case of `tp` has members `_1` to `_N` where `N == numArgs`.
@@ -72,7 +69,7 @@ object Applications {
}
def productArity(tp: Type)(implicit ctx: Context) =
- if (canProductMatch(tp)) productSelectorTypes(tp).size else -1
+ if (defn.isProductSubType(tp)) productSelectorTypes(tp).size else -1
def productSelectors(tp: Type)(implicit ctx: Context): List[Symbol] = {
val sels = for (n <- Iterator.from(0)) yield tp.member(nme.selectorName(n)).symbol
@@ -114,7 +111,7 @@ object Applications {
getUnapplySelectors(getTp, args, pos)
else if (unapplyResult isRef defn.BooleanClass)
Nil
- else if (canProductMatch(unapplyResult))
+ else if (defn.isProductSubType(unapplyResult))
productSelectorTypes(unapplyResult)
// this will cause a "wrong number of arguments in pattern" error later on,
// which is better than the message in `fail`.