Skip to content

Commit 83ade96

Browse files
committed
Lint enum case in outer context
1 parent ecb1fd3 commit 83ade96

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
189189
if !tree.symbol.is(Deferred) && tree.rhs.symbol != defn.Predef_undefined then
190190
register(tree)
191191
relax(tree.rhs, tree.tpt.tpe)
192-
ctx
192+
if tree.symbol.isAllOf(EnumCase) then ctx.outer else ctx
193193
override def transformValDef(tree: ValDef)(using Context): tree.type =
194194
traverseAnnotations(tree.symbol)
195195
if tree.name.startsWith("derived$") && tree.hasType then
@@ -222,6 +222,8 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
222222
resolveUsage(defn.Compiletime_deferred, nme.NO_NAME, NoPrefix)
223223
tree
224224

225+
override def prepareForTypeDef(tree: TypeDef)(using Context): Context =
226+
if tree.symbol.isAllOf(EnumCase) then ctx.outer else ctx
225227
override def transformTypeDef(tree: TypeDef)(using Context): tree.type =
226228
traverseAnnotations(tree.symbol)
227229
if !tree.symbol.is(Param) then // type parameter to do?

tests/warn/i24646.scala

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//> using options -Wunused:all
2+
3+
import Test.OnlyFirst
4+
import Test.OnlyThird
5+
6+
enum Test:
7+
case First extends Test with OnlyFirst
8+
case Second extends Test
9+
case Third(s: String) extends Test with OnlyThird
10+
11+
object Test:
12+
sealed trait OnlyFirst
13+
sealed trait OnlyThird

0 commit comments

Comments
 (0)