Minor. Move method closer to it's usage and simplify it

This commit is contained in:
Denis Zharkov
2016-07-25 16:08:21 +03:00
parent f2cb86c3f6
commit 15b94bb8df
@@ -113,15 +113,27 @@ class LazyJavaClassMemberScope(
}
}) return false
if (function.doesOverrideRenamedBuiltins()) {
return false
}
return !function.doesOverrideRenamedBuiltins() && !function.shouldBeVisibleAsOverrideOfBuiltInWithErasedValueParameters()
}
if (function.name.sameAsBuiltinMethodWithErasedValueParameters && hasOverriddenBuiltinFunctionWithErasedValueParameters(function)) {
return false
}
/**
* Checks if function is a valid override of JDK analogue of built-in method with erased value parameters (e.g. Map.containsKey(k: K))
*
* Examples:
* - boolean containsKey(Object key) -> true
* - boolean containsKey(K key) -> false // Wrong JDK method override, while it's a valid Kotlin built-in override
*/
private fun SimpleFunctionDescriptor.shouldBeVisibleAsOverrideOfBuiltInWithErasedValueParameters(): Boolean {
if (!name.sameAsBuiltinMethodWithErasedValueParameters) return false
val candidatesToOverride =
getFunctionsFromSupertypes(name).mapNotNull {
BuiltinMethodsWithSpecialGenericSignature.getOverriddenBuiltinFunctionWithErasedValueParametersInJava(it)
}
return true
return candidatesToOverride.any {
candidate ->
doesOverrideBuiltinFunctionWithErasedValueParameters(candidate)
}
}
private fun searchMethodsByNameWithoutBuiltinMagic(name: Name): Collection<SimpleFunctionDescriptor> =
@@ -484,20 +496,6 @@ class LazyJavaClassMemberScope(
)
}
private fun hasOverriddenBuiltinFunctionWithErasedValueParameters(
simpleFunctionDescriptor: SimpleFunctionDescriptor
): Boolean {
val candidatesToOverride =
getFunctionsFromSupertypes(simpleFunctionDescriptor.name).mapNotNull {
BuiltinMethodsWithSpecialGenericSignature.getOverriddenBuiltinFunctionWithErasedValueParametersInJava(it)
}
return candidatesToOverride.any {
candidate ->
simpleFunctionDescriptor.doesOverrideBuiltinFunctionWithErasedValueParameters(candidate)
}
}
private fun SimpleFunctionDescriptor.doesOverrideBuiltinFunctionWithErasedValueParameters(
builtinWithErasedParameters: FunctionDescriptor
): Boolean {