File tree 2 files changed +12
-3
lines changed
compiler/src/dotty/tools/dotc/core
2 files changed +12
-3
lines changed Original file line number Diff line number Diff line change @@ -403,7 +403,7 @@ object Denotations {
403
403
}
404
404
case denot1 : SingleDenotation =>
405
405
if (denot1 eq denot2) denot1
406
- else if ( denot1.matches(denot2)) mergeSingleDenot(denot1, denot2)
406
+ else if denot1.matches(denot2) then mergeSingleDenot(denot1, denot2)
407
407
else NoDenotation
408
408
}
409
409
@@ -438,8 +438,11 @@ object Denotations {
438
438
else defn.RootClass )
439
439
440
440
def isHidden (sym : Symbol ) = sym.exists && ! sym.isAccessibleFrom(pre)
441
- val hidden1 = isHidden(sym1)
442
- val hidden2 = isHidden(sym2)
441
+ // In typer phase filter out denotations with symbols that are not
442
+ // accessible. After typer, this is not possible since we cannot guarantee
443
+ // that the current owner is set correctly. See pos/14660.scala.
444
+ val hidden1 = isHidden(sym1) && ctx.isTyper
445
+ val hidden2 = isHidden(sym2) && ctx.isTyper
443
446
if hidden1 && ! hidden2 then denot2
444
447
else if hidden2 && ! hidden1 then denot1
445
448
else
Original file line number Diff line number Diff line change
1
+ trait Foo :
2
+ class Bar :
3
+ private [Foo ] opaque type Baz = Int
4
+
5
+ def foo : Bar # Baz
6
+
You can’t perform that action at this time.
0 commit comments