diff --git a/compiler/src/dotty/tools/dotc/transform/CheckUnused.scala b/compiler/src/dotty/tools/dotc/transform/CheckUnused.scala index 4dfaea70cb50..73b2d1b6c9a3 100644 --- a/compiler/src/dotty/tools/dotc/transform/CheckUnused.scala +++ b/compiler/src/dotty/tools/dotc/transform/CheckUnused.scala @@ -580,6 +580,7 @@ object CheckUnused: end checkExplicit // begin if !infos.skip(m) + && !m.nextOverriddenSymbol.exists && !allowed then checkExplicit() diff --git a/tests/warn/i15503e.scala b/tests/warn/i15503e.scala index 2fafec339ac1..63a9dea163d4 100644 --- a/tests/warn/i15503e.scala +++ b/tests/warn/i15503e.scala @@ -70,10 +70,10 @@ package foo.test.i16865: trait Bar extends Foo object Ex extends Bar: - def fn(a: Int, b: Int): Int = b + 3 // warn + def fn(a: Int, b: Int): Int = b + 3 // no warn (override) object Ex2 extends Bar: - override def fn(a: Int, b: Int): Int = b + 3 // warn + override def fn(a: Int, b: Int): Int = b + 3 // no warn (override) final class alpha(externalName: String) extends StaticAnnotation // no warn annotation arg diff --git a/tests/warn/i22742.scala b/tests/warn/i22742.scala new file mode 100644 index 000000000000..0927d29e1a05 --- /dev/null +++ b/tests/warn/i22742.scala @@ -0,0 +1,10 @@ +//> using options -Wunused:all -Werror + +trait Foldable[F[_]]: + def foldLeft[A, B](fa: F[A], b: B)(f: (B, A) => B): B + +type Id[A] = A + +given foldableId: Foldable[Id] = + new Foldable[Id]: + def foldLeft[A, B](fa: Id[A], b: B)(f: (B, A) => B): B = b diff --git a/tests/warn/scala2-t11681.scala b/tests/warn/scala2-t11681.scala index 5d752777f64c..507b58bf2277 100644 --- a/tests/warn/scala2-t11681.scala +++ b/tests/warn/scala2-t11681.scala @@ -23,7 +23,7 @@ trait BadAPI extends InterFace { a } override def call(a: Int, - b: String, // warn now + b: String, // no warn (override) c: Double): Int = { println(c) a diff --git a/tests/warn/unused-params.scala b/tests/warn/unused-params.scala index 5ef339c942ac..3266f3957247 100644 --- a/tests/warn/unused-params.scala +++ b/tests/warn/unused-params.scala @@ -23,7 +23,7 @@ trait BadAPI extends InterFace { a } override def call(a: Int, - b: String, // warn + b: String, // no warn (override) c: Double): Int = { println(c) a @@ -136,7 +136,7 @@ trait BadMix { self: InterFace => } class Unequal { - override def equals(other: Any) = toString.nonEmpty // warn + override def equals(other: Any) = toString.nonEmpty // no warn (override) } class Seriously {