@@ -1167,8 +1167,9 @@ object RefChecks {
11671167 extension (tp : Type )
11681168 def explicit = Applications .stripImplicit(tp.stripPoly, wildcardOnly = true )
11691169 def hasImplicitParams = tp.stripPoly match { case mt : MethodType => mt.isImplicitMethod case _ => false }
1170- val target = sym.info.explicit.firstParamTypes.head // required for extension method, the putative receiver
1171- val methTp = sym.info.explicit.resultType // skip leading implicits and the "receiver" parameter
1170+ val explicitInfo = sym.info.explicit // consider explicit value params
1171+ val target = explicitInfo.firstParamTypes.head // required for extension method, the putative receiver
1172+ val methTp = explicitInfo.resultType // skip leading implicits and the "receiver" parameter
11721173 def hidden =
11731174 target.nonPrivateMember(sym.name)
11741175 .filterWithPredicate: member =>
@@ -1188,12 +1189,14 @@ object RefChecks {
11881189 }
11891190 }
11901191 .exists
1191- val receiverName = sym.info.explicit.firstParamNames.head
1192- val num = sym.info.paramNamess.flatten.indexWhere(_ == receiverName)
1193- val getterName = DefaultGetterName (sym.name.toTermName, num = num)
1194- val getterDenot = sym.owner.info.member(getterName)
1195- if getterDenot.exists
1196- then report.warning(ExtensionHasDefault (sym), getterDenot.symbol.srcPos)
1192+ if sym.is(HasDefaultParams ) then
1193+ val getterDenot =
1194+ val receiverName = explicitInfo.firstParamNames.head
1195+ val num = sym.info.paramNamess.flatten.indexWhere(_ == receiverName)
1196+ val getterName = DefaultGetterName (sym.name.toTermName, num = num)
1197+ sym.owner.info.member(getterName)
1198+ if getterDenot.exists
1199+ then report.warning(ExtensionHasDefault (sym), getterDenot.symbol.srcPos)
11971200 if ! target.typeSymbol.isOpaqueAlias && ! sym.nextOverriddenSymbol.exists && hidden
11981201 then report.warning(ExtensionNullifiedByMember (sym, target.typeSymbol), sym.srcPos)
11991202 end checkExtensionMethods
0 commit comments