Fix accidental overrides computation

Consider the whole overridden tree instead of only direct overridden

 #KT-14146 Fixed
This commit is contained in:
Denis Zharkov
2016-10-04 14:14:58 +03:00
parent aca05003a9
commit a4978c794f
5 changed files with 57 additions and 7 deletions
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.load.java.descriptors.getParentJavaStaticClassScope
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
import org.jetbrains.kotlin.resolve.descriptorUtil.overriddenTreeUniqueAsSequence
import org.jetbrains.kotlin.resolve.jvm.diagnostics.*
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.utils.addIfNotNull
@@ -220,7 +221,10 @@ class BuilderFactoryForDuplicateSignatureDiagnostics(
else if (member is FunctionDescriptor) {
val signatures =
if (member.kind == FAKE_OVERRIDE)
member.overriddenDescriptors.mapTo(HashSet()) { it.original.asRawSignature() }
member.overriddenTreeUniqueAsSequence(useOriginal = true)
// drop the root (itself)
.drop(1)
.mapTo(HashSet()) { it.asRawSignature() }
else
setOf(member.asRawSignature())