File tree 2 files changed +19
-3
lines changed
compiler/src/dotty/tools/dotc/core
2 files changed +19
-3
lines changed Original file line number Diff line number Diff line change @@ -181,7 +181,7 @@ class SymUtils:
181
181
else {
182
182
val children = self.children
183
183
val companionMirror = self.useCompanionAsSumMirror
184
- val ownerScope = if pre.isInstanceOf [SingletonType ] then pre.classSymbol else NoSymbol
184
+ val ownerScope = if pre.isInstanceOf [SingletonType ] then pre.classSymbols else Nil
185
185
def problem (child : Symbol ) = {
186
186
187
187
def accessibleMessage (sym : Symbol ): String =
@@ -191,8 +191,7 @@ class SymUtils:
191
191
self.isContainedIn(sym) || sym.is(Module ) && isVisibleToParent(sym.owner)
192
192
def isVisibleToScope (sym : Symbol ): Boolean =
193
193
def isReachable : Boolean = ctx.owner.isContainedIn(sym)
194
- def isMemberOfPrefix : Boolean =
195
- ownerScope.exists && inherits(sym, ownerScope)
194
+ def isMemberOfPrefix : Boolean = ownerScope.exists(inherits(sym, _))
196
195
isReachable || isMemberOfPrefix || sym.is(Module ) && isVisibleToScope(sym.owner)
197
196
if ! isVisibleToParent(sym) then i " to its parent $self"
198
197
else if ! companionMirror && ! isVisibleToScope(sym) then i " to call site ${ctx.owner}"
Original file line number Diff line number Diff line change
1
+
2
+ trait SuperTrait {
3
+ sealed trait InnerTrait
4
+ case class Foo () extends InnerTrait
5
+ }
6
+
7
+ trait OtherTrait
8
+
9
+ trait TraitWithSelfType extends SuperTrait { this : OtherTrait =>
10
+ summon[deriving.Mirror .Of [Foo ]]
11
+ summon[deriving.Mirror .Of [InnerTrait ]]
12
+ }
13
+
14
+ object Implementation extends TraitWithSelfType , OtherTrait {
15
+ summon[deriving.Mirror .Of [Foo ]]
16
+ summon[deriving.Mirror .Of [InnerTrait ]]
17
+ }
You can’t perform that action at this time.
0 commit comments