aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-01-28 16:31:42 +0100
committerMartin Odersky <odersky@gmail.com>2015-02-07 17:32:47 +0100
commit86735bf73de4a165a46ce6215af2e7a814adb9f4 (patch)
treeaa5abf08ea00e68f0821323214cf0dd4cf7f574c /src/dotty/tools/dotc/core
parent945576e421e5f7dc82984c4673884ad4c7ddf969 (diff)
downloaddotty-86735bf73de4a165a46ce6215af2e7a814adb9f4.tar.gz
dotty-86735bf73de4a165a46ce6215af2e7a814adb9f4.tar.bz2
dotty-86735bf73de4a165a46ce6215af2e7a814adb9f4.zip
Tweaks to matches
1) Drop redundant signature comparison in overriding pairs 2) Abstract from repeated parameters when calculating matches
Diffstat (limited to 'src/dotty/tools/dotc/core')
-rw-r--r--src/dotty/tools/dotc/core/TypeApplications.scala2
-rw-r--r--src/dotty/tools/dotc/core/TypeComparer.scala2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/core/TypeApplications.scala b/src/dotty/tools/dotc/core/TypeApplications.scala
index 998b4f944..4a16ca45d 100644
--- a/src/dotty/tools/dotc/core/TypeApplications.scala
+++ b/src/dotty/tools/dotc/core/TypeApplications.scala
@@ -285,7 +285,7 @@ class TypeApplications(val self: Type) extends AnyVal {
*/
def underlyingIfRepeated(isJava: Boolean)(implicit ctx: Context): Type =
if (self.isRepeatedParam) {
- val seqClass = if(isJava) defn.ArrayClass else defn.SeqClass
+ val seqClass = if (isJava) defn.ArrayClass else defn.SeqClass
translateParameterized(defn.RepeatedParamClass, seqClass)
}
else self
diff --git a/src/dotty/tools/dotc/core/TypeComparer.scala b/src/dotty/tools/dotc/core/TypeComparer.scala
index 1687d6159..75f7c5922 100644
--- a/src/dotty/tools/dotc/core/TypeComparer.scala
+++ b/src/dotty/tools/dotc/core/TypeComparer.scala
@@ -684,7 +684,7 @@ class TypeComparer(initctx: Context) extends DotClass with ConstraintHandling wi
case formal1 :: rest1 =>
formals2 match {
case formal2 :: rest2 =>
- (isSameType(formal1, formal2)
+ (isSameType(formal1.underlyingIfRepeated(isJava1), formal2.underlyingIfRepeated(isJava2))
|| isJava1 && (formal2 isRef ObjectClass) && (formal1 isRef AnyClass)
|| isJava2 && (formal1 isRef ObjectClass) && (formal2 isRef AnyClass)) &&
matchingParams(rest1, rest2, isJava1, isJava2)