Skip to content

Commit a97b162

Browse files
committed
Dealias for unused param check
1 parent 7c3ddc3 commit a97b162

File tree

4 files changed

+21
-4
lines changed

4 files changed

+21
-4
lines changed

compiler/src/dotty/tools/dotc/core/SymDenotations.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,7 @@ object SymDenotations {
685685
isAbstractOrAliasType && !isAbstractOrParamType
686686

687687
/** Is this symbol an abstract or alias type? */
688-
final def isAbstractOrAliasType: Boolean = isType & !isClass
688+
final def isAbstractOrAliasType: Boolean = isType && !isClass
689689

690690
/** Is this symbol an abstract type or type parameter? */
691691
final def isAbstractOrParamType(using Context): Boolean = this.isOneOf(DeferredOrTypeParam)

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -575,14 +575,14 @@ object CheckUnused:
575575
|| m.hasAnnotation(dd.UnusedAnnot) // param of unused method
576576
|| sym.name.is(ContextFunctionParamName) // a ubiquitous parameter
577577
|| sym.isCanEqual
578-
|| sym.info.typeSymbol.match // more ubiquity
578+
|| sym.info.dealias.typeSymbol.match // more ubiquity
579579
case dd.DummyImplicitClass | dd.SubTypeClass | dd.SameTypeClass => true
580580
case tps =>
581581
tps.isMarkerTrait // no members to use; was only if sym.name.is(ContextBoundParamName)
582582
|| // but consider NotGiven
583583
tps.hasAnnotation(dd.LanguageFeatureMetaAnnot)
584584
|| sym.info.isSingleton // DSL friendly
585-
|| sym.info.isInstanceOf[RefinedType] // can't be expressed as a context bound
585+
|| sym.info.dealias.isInstanceOf[RefinedType] // can't be expressed as a context bound
586586
if ctx.settings.WunusedHas.implicits
587587
&& !infos.skip(m)
588588
&& !m.isEffectivelyOverride

tests/warn/i17314.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ object circelike {
1010
type Configuration
1111
trait ConfiguredCodec[T]
1212
object ConfiguredCodec:
13-
inline final def derived[A](using conf: Configuration)(using inline mirror: Mirror.Of[A]): ConfiguredCodec[A] = // warn // warn
13+
inline final def derived[A](using conf: Configuration)(using inline mirror: Mirror.Of[A]): ConfiguredCodec[A] = // warn
1414
class InlinedConfiguredCodec extends ConfiguredCodec[A]:
1515
val codec = summonInline[Codec[URI]] // simplification
1616
new InlinedConfiguredCodec

tests/warn/i23250.scala

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//> using options -Wunused:all -Werror
2+
3+
trait MonadError[F[_], E]
4+
type MonadThrow[F[_]] = MonadError[F, Throwable]
5+
6+
trait MetaStreams[F[_]]:
7+
def use[A]: F[A] = ???
8+
trait WriteResult
9+
10+
trait MetaStreamsSyntax:
11+
extension [F[_]](ms: MetaStreams[F])(using MonadThrow[F])
12+
def setMaxAge(): F[WriteResult] =
13+
summon[MonadThrow[F]]
14+
ms.use[WriteResult]
15+
16+
def setTruncateBefore(): F[WriteResult] =
17+
ms.use[WriteResult]

0 commit comments

Comments
 (0)