File tree 2 files changed +19
-3
lines changed
compiler/src/dotty/tools/dotc/transform
2 files changed +19
-3
lines changed Original file line number Diff line number Diff line change @@ -173,7 +173,7 @@ object SymUtils:
173
173
else {
174
174
val children = self.children
175
175
val companionMirror = self.useCompanionAsSumMirror
176
- val ownerScope = if pre.isInstanceOf [SingletonType ] then pre.classSymbol else NoSymbol
176
+ val ownerScope = if pre.isInstanceOf [SingletonType ] then pre.classSymbols else Nil
177
177
def problem (child : Symbol ) = {
178
178
179
179
def accessibleMessage (sym : Symbol ): String =
@@ -183,8 +183,7 @@ object SymUtils:
183
183
self.isContainedIn(sym) || sym.is(Module ) && isVisibleToParent(sym.owner)
184
184
def isVisibleToScope (sym : Symbol ): Boolean =
185
185
def isReachable : Boolean = ctx.owner.isContainedIn(sym)
186
- def isMemberOfPrefix : Boolean =
187
- ownerScope.exists && inherits(sym, ownerScope)
186
+ def isMemberOfPrefix : Boolean = ownerScope.exists(inherits(sym, _))
188
187
isReachable || isMemberOfPrefix || sym.is(Module ) && isVisibleToScope(sym.owner)
189
188
if ! isVisibleToParent(sym) then i " to its parent $self"
190
189
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