@@ -1167,8 +1167,9 @@ object RefChecks {
1167
1167
extension (tp : Type )
1168
1168
def explicit = Applications .stripImplicit(tp.stripPoly, wildcardOnly = true )
1169
1169
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
1172
1173
def hidden =
1173
1174
target.nonPrivateMember(sym.name)
1174
1175
.filterWithPredicate: member =>
@@ -1188,12 +1189,14 @@ object RefChecks {
1188
1189
}
1189
1190
}
1190
1191
.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)
1197
1200
if ! target.typeSymbol.isOpaqueAlias && ! sym.nextOverriddenSymbol.exists && hidden
1198
1201
then report.warning(ExtensionNullifiedByMember (sym, target.typeSymbol), sym.srcPos)
1199
1202
end checkExtensionMethods
0 commit comments