Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 13 additions & 8 deletions compiler/src/dotty/tools/dotc/transform/CheckUnused.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package transform

import ast.*, desugar.{ForArtifact, PatternVar}, tpd.*, untpd.ImportSelector
import config.ScalaSettings
import core.*, Contexts.*, Flags.*
import core.*, Contexts.*, Decorators.*, Flags.*
import Names.{Name, SimpleName, DerivedName, TermName, termName}
import NameKinds.{BodyRetainerName, ContextBoundParamName, ContextFunctionParamName, DefaultGetterName, WildcardParamName}
import NameOps.{isAnonymousFunctionName, isReplWrapperName, setterName}
Expand Down Expand Up @@ -161,7 +161,7 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
tree

override def prepareForBind(tree: Bind)(using Context): Context =
refInfos.register(tree)
register(tree)
ctx
/* cf QuotePattern
override def transformBind(tree: Bind)(using Context): tree.type =
Expand All @@ -179,7 +179,7 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha

override def prepareForValDef(tree: ValDef)(using Context): Context =
if !tree.symbol.is(Deferred) && tree.rhs.symbol != defn.Predef_undefined then
refInfos.register(tree)
register(tree)
relax(tree.rhs, tree.tpt.tpe)
ctx
override def transformValDef(tree: ValDef)(using Context): tree.type =
Expand All @@ -203,7 +203,7 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
if tree.symbol.is(Inline) then
refInfos.inliners += 1
else if !tree.symbol.is(Deferred) && tree.rhs.symbol != defn.Predef_undefined then
refInfos.register(tree)
register(tree)
relax(tree.rhs, tree.tpt.tpe)
ctx
override def transformDefDef(tree: DefDef)(using Context): tree.type =
Expand All @@ -217,7 +217,7 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
override def transformTypeDef(tree: TypeDef)(using Context): tree.type =
traverseAnnotations(tree.symbol)
if !tree.symbol.is(Param) then // type parameter to do?
refInfos.register(tree)
register(tree)
tree

override def prepareForStats(trees: List[Tree])(using Context): Context =
Expand All @@ -233,8 +233,7 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
override def transformOther(tree: Tree)(using Context): tree.type =
tree match
case imp: Import =>
if phaseMode eq PhaseMode.Aggregate then
refInfos.register(imp)
register(imp)
transformAllDeep(imp.expr)
for selector <- imp.selectors do
if selector.isGiven then
Expand Down Expand Up @@ -399,7 +398,7 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
while !done && ctxs.hasNext do
val cur = ctxs.next()
if cur.owner.userSymbol == sym && !sym.is(Package) then
enclosed = true // found enclosing definition, don't register the reference
enclosed = true // found enclosing definition, don't record the reference
if isLocal then
if cur.owner eq sym.owner then
done = true // for local def, just checking that it is not enclosing
Expand Down Expand Up @@ -471,6 +470,12 @@ class CheckUnused private (phaseMode: PhaseMode, suffix: String) extends MiniPha
return
case _ =>
end resolveScoped

/** Register new element for warnings only at typer */
def register(tree: Tree)(using Context): Unit =
if phaseMode eq PhaseMode.Aggregate then
refInfos.register(tree)

end CheckUnused

object CheckUnused:
Expand Down
10 changes: 10 additions & 0 deletions tests/warn/i24265.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
//> using options -Wall -Werror

object test {
inline def f(testFun: => Any) = testFun

f {
val i = 1
summon[i.type <:< Int]
}
}
Loading