diff --git a/compiler/testData/loadJava/compiledJavaIncludeObjectMethods/ClassWithObjectMethod.txt b/compiler/testData/loadJava/compiledJavaIncludeObjectMethods/ClassWithObjectMethod.txt index 5c3598d178b..35ef35ce452 100644 --- a/compiler/testData/loadJava/compiledJavaIncludeObjectMethods/ClassWithObjectMethod.txt +++ b/compiler/testData/loadJava/compiledJavaIncludeObjectMethods/ClassWithObjectMethod.txt @@ -3,7 +3,7 @@ package test public final class ClassWithObjectMethod : java.lang.Object { public constructor ClassWithObjectMethod() protected/*protected and package*/ open override /*1*/ /*fake_override*/ fun clone(): jet.Any - public open override /*1*/ /*fake_override*/ fun equals(/*0*/ p0: jet.Any?): jet.Boolean + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: jet.Any?): jet.Boolean protected/*protected and package*/ open override /*1*/ /*fake_override*/ fun finalize(): jet.Unit public final override /*1*/ /*fake_override*/ fun getClass(): java.lang.Class public open override /*1*/ /*fake_override*/ fun hashCode(): jet.Int diff --git a/compiler/testData/loadJava/compiledJavaIncludeObjectMethods/InterfaceWithObjectMethods.txt b/compiler/testData/loadJava/compiledJavaIncludeObjectMethods/InterfaceWithObjectMethods.txt index c725e868a1d..816c8141c73 100644 --- a/compiler/testData/loadJava/compiledJavaIncludeObjectMethods/InterfaceWithObjectMethods.txt +++ b/compiler/testData/loadJava/compiledJavaIncludeObjectMethods/InterfaceWithObjectMethods.txt @@ -2,7 +2,7 @@ package test public trait InterfaceWithObjectMethods : java.lang.Object { public abstract override /*1*/ fun clone(): jet.Any? - public open override /*1*/ /*fake_override*/ fun equals(/*0*/ p0: jet.Any?): jet.Boolean + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: jet.Any?): jet.Boolean public abstract override /*1*/ fun finalize(): jet.Unit public final override /*1*/ /*fake_override*/ fun getClass(): java.lang.Class public open override /*1*/ /*fake_override*/ fun hashCode(): jet.Int diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt index b2c5042e3cf..9d15e352636 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt @@ -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 diff --git a/idea/testData/quickfix/changeSignature/beforeAddParameterNotAvailableForLibrary.kt b/idea/testData/quickfix/changeSignature/beforeAddParameterNotAvailableForLibrary.kt index e62a6189b9e..5f35a166b9b 100644 --- a/idea/testData/quickfix/changeSignature/beforeAddParameterNotAvailableForLibrary.kt +++ b/idea/testData/quickfix/changeSignature/beforeAddParameterNotAvailableForLibrary.kt @@ -1,5 +1,5 @@ // "class org.jetbrains.jet.plugin.quickfix.AddFunctionParametersFix" "false" -// ERROR: Too many arguments for public open fun equals(p0: jet.Any?): jet.Boolean defined in java.lang.Object +// ERROR: Too many arguments for public open fun equals(other: jet.Any?): jet.Boolean defined in java.lang.Object fun f(d: java.lang.Object) { d.equals("a", "b")