@@ -20,7 +20,7 @@ import config.SourceVersion.{`3.0`, `future`}
20
20
import config .Printers .refcheck
21
21
import reporting ._
22
22
import Constants .Constant
23
- import cc .{mapRoots , localRoot , isCaptureChecking }
23
+ import cc .{mapRoots , localRoot , isCaptureChecking , isLevelOwner }
24
24
25
25
object RefChecks {
26
26
import tpd ._
@@ -269,7 +269,7 @@ object RefChecks {
269
269
if dcl.is(Deferred ) then
270
270
for other <- dcl.allOverriddenSymbols do
271
271
if ! other.is(Deferred ) then
272
- checkOverride(checkSubType , dcl, other)
272
+ checkOverride(subtypeChecker , dcl, other)
273
273
end checkAll
274
274
end OverridingPairsChecker
275
275
@@ -375,7 +375,11 @@ object RefChecks {
375
375
def memberTp (self : Type ) =
376
376
if (member.isClass) TypeAlias (member.typeRef.EtaExpand (member.typeParams))
377
377
else self.memberInfo(member)
378
- def otherTp (self : Type ) = self.memberInfo(other)
378
+ def otherTp (self : Type ) =
379
+ val info = self.memberInfo(other)
380
+ if isCaptureChecking && member.isLevelOwner && other.isLevelOwner
381
+ then info.substSym(other.localRoot :: Nil , member.localRoot :: Nil )
382
+ else info
379
383
380
384
refcheck.println(i " check override ${infoString(member)} overriding ${infoString(other)}" )
381
385
0 commit comments