@@ -1148,6 +1148,9 @@ object RefChecks {
11481148 def strippedResultType = Applications .stripImplicit(tp.stripPoly, wildcardOnly = true ).resultType
11491149 def firstExplicitParamTypes = Applications .stripImplicit(tp.stripPoly, wildcardOnly = true ).firstParamTypes
11501150 def hasImplicitParams = tp.stripPoly match { case mt : MethodType => mt.isImplicitMethod case _ => false }
1151+ def isAnyAlias =
1152+ val denot = tp.typeSymbol.denot
1153+ denot.isAliasType || denot.isOpaqueAlias
11511154 val target = sym.info.firstExplicitParamTypes.head // required for extension method, the putative receiver
11521155 val methTp = sym.info.strippedResultType // skip leading implicits and the "receiver" parameter
11531156 def hidden =
@@ -1159,14 +1162,14 @@ object RefChecks {
11591162 if memberIsImplicit then methTp.stripPoly.firstParamTypes
11601163 else methTp.firstExplicitParamTypes
11611164
1162- paramTps.isEmpty || memberIsImplicit && ! methTp.hasImplicitParams || {
1165+ paramTps.isEmpty || memberIsImplicit && ! methTp.hasImplicitParams || ! paramTps.exists(_.typeSymbol.denot.isOpaqueAlias) && {
11631166 val memberParamTps = member.info.stripPoly.firstParamTypes
11641167 ! memberParamTps.isEmpty
11651168 && memberParamTps.lengthCompare(paramTps) == 0
11661169 && memberParamTps.lazyZip(paramTps).forall((m, x) => x frozen_<:< m)
11671170 }
11681171 .exists
1169- if ! target.typeSymbol.denot.isAliasType && ! target.typeSymbol.denot.isOpaqueAlias && hidden
1172+ if ! target.isAnyAlias && hidden
11701173 then report.warning(ExtensionNullifiedByMember (sym, target.typeSymbol), sym.srcPos)
11711174 end checkExtensionMethods
11721175
0 commit comments