Load 'equals' parameter from Java code with the name 'other'

This fixes a lot of warnings on mixed Kotlin+Java code about different names
for the same parameter because we always loaded 'equals' parameter with the
name 'p0', whereas in Kotlin we usually name it 'other'
This commit is contained in:
Alexander Udalov
2014-02-14 23:21:34 +04:00
parent 004c289a0b
commit 9537b68724
4 changed files with 18 additions and 5 deletions
@@ -188,12 +188,25 @@ public abstract class LazyJavaMemberScope(
else Pair(jetType, null)
}
val name = if (function.getName().asString() == "equals" &&
jValueParameters.size() == 1 &&
KotlinBuiltIns.getInstance().getNullableAnyType() == outType) {
// This is a hack to prevent numerous warnings on Kotlin classes that inherit Java classes: if you override "equals" in such
// class without this hack, you'll be warned that in the superclass the name is "p0" (regardless of the fact that it's
// "other" in Any)
// TODO: fix Java parameter name loading logic somehow (don't always load "p0", "p1", etc.)
Name.identifier("other")
}
else {
// TODO: parameter names may be drawn from attached sources, which is slow; it's better to make them lazy
javaParameter.getName() ?: Name.identifier("p$index")
}
ValueParameterDescriptorImpl(
function,
index,
c.resolveAnnotations(javaParameter),
// TODO: parameter names may be drawn from attached sources, which is slow; it's better to make them lazy
javaParameter.getName() ?: Name.identifier("p$index"),
name,
outType,
false,
varargElementType