Skip to content

Commit 7f906af

Browse files
committed
Untroduce SumUtils.superInterfaces which is different from mixins.
1 parent e07716e commit 7f906af

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

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

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,24 @@ class SymUtils(val self: Symbol) extends AnyVal {
3030
else parents.head.symbol
3131
}
3232

33+
34+
/**
35+
* For a class: All interfaces implemented by a class except for those inherited through the superclass.
36+
* For a trait: all parent traits
37+
*/
38+
39+
def superInterfaces(implicit ctx: Context) = {
40+
val superCls = self.superClass
41+
val baseClasses = self.asClass.baseClasses
42+
if (baseClasses.isEmpty) Nil
43+
else baseClasses.tail.takeWhile(_ ne superCls).reverse
44+
45+
}
46+
3347
/** All interfaces implemented by a class, except for those inherited through the superclass. */
3448
def mixins(implicit ctx: Context) = {
35-
val superCls = self.superClass
3649
if (self is Trait) Nil
37-
else {
38-
val baseClasses = self.asClass.baseClasses
39-
if (baseClasses.isEmpty) Nil
40-
else baseClasses.tail.takeWhile(_ ne superCls).reverse
41-
}
50+
else superInterfaces
4251
}
4352

4453
def isTypeTestOrCast(implicit ctx: Context): Boolean =

0 commit comments

Comments
 (0)