Skip to content

Commit 82f876c

Browse files
authored
Merge pull request #489 from scala/backport-lts-3.3-23348
Backport "Add accessible check for import usage" to 3.3 LTS
2 parents cb15a16 + 07d3eba commit 82f876c

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

compiler/src/dotty/tools/dotc/transform/CheckUnused.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,10 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
283283
def matchingSelector(info: ImportInfo): ImportSelector | Null =
284284
val qtpe = info.site
285285
def hasAltMember(nm: Name) = qtpe.member(nm).hasAltWith: alt =>
286-
alt.symbol == sym
287-
|| nm.isTypeName && alt.symbol.isAliasType && alt.info.dealias.typeSymbol == sym
286+
val sameSym =
287+
alt.symbol == sym
288+
|| nm.isTypeName && alt.symbol.isAliasType && alt.info.dealias.typeSymbol == sym
289+
sameSym && alt.symbol.isAccessibleFrom(qtpe)
288290
def loop(sels: List[ImportSelector]): ImportSelector | Null = sels match
289291
case sel :: sels =>
290292
val matches =

tests/warn/i23347.scala

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
//> using options -Wunused:all
2+
3+
object USED {
4+
case class A(value: Int)
5+
}
6+
7+
object UNUSED {
8+
// In reality UNUSED would contain several other necessary members!
9+
private type A = USED.A // warn private
10+
class B
11+
}
12+
13+
object Test {
14+
import USED.*
15+
import UNUSED.*
16+
17+
def foo(a: A): Int = a.value
18+
19+
def g(b: B) = ()
20+
21+
}
22+

0 commit comments

Comments
 (0)