Skip to content

Commit 2514c3b

Browse files
committed
Tweaks to matches
1) Drop redundant signature comparison in overriding pairs 2) Abstract from repeated parameters when calculating matches
1 parent e2f9fb0 commit 2514c3b

File tree

3 files changed

+3
-8
lines changed

3 files changed

+3
-8
lines changed

src/dotty/tools/dotc/core/TypeApplications.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ class TypeApplications(val self: Type) extends AnyVal {
285285
*/
286286
def underlyingIfRepeated(isJava: Boolean)(implicit ctx: Context): Type =
287287
if (self.isRepeatedParam) {
288-
val seqClass = if(isJava) defn.ArrayClass else defn.SeqClass
288+
val seqClass = if (isJava) defn.ArrayClass else defn.SeqClass
289289
translateParameterized(defn.RepeatedParamClass, seqClass)
290290
}
291291
else self

src/dotty/tools/dotc/core/TypeComparer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,7 @@ class TypeComparer(initctx: Context) extends DotClass with ConstraintHandling wi
680680
case formal1 :: rest1 =>
681681
formals2 match {
682682
case formal2 :: rest2 =>
683-
(isSameType(formal1, formal2)
683+
(isSameType(formal1.underlyingIfRepeated(isJava1), formal2.underlyingIfRepeated(isJava2))
684684
|| isJava1 && (formal2 isRef ObjectClass) && (formal1 isRef AnyClass)
685685
|| isJava2 && (formal1 isRef ObjectClass) && (formal2 isRef AnyClass)) &&
686686
matchingParams(rest1, rest2, isJava1, isJava2)

src/dotty/tools/dotc/transform/OverridingPairs.scala

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,7 @@ object OverridingPairs {
3939
* relative to <base>.this do
4040
*/
4141
protected def matches(sym1: Symbol, sym2: Symbol): Boolean =
42-
sym1.isType || {
43-
val info1 = self.memberInfo(sym1)
44-
val info2 = self.memberInfo(sym2)
45-
info1.signature.sameParams(info2.signature) &&
46-
info1.matches(info2)
47-
}
42+
sym1.isType || self.memberInfo(sym1).matches(self.memberInfo(sym2))
4843

4944
/** The symbols that can take part in an overriding pair */
5045
private val decls = {

0 commit comments

Comments
 (0)