From bdefbc182a3084fdcdf49878f2475e0b034ac720 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 23 Dec 2014 14:37:21 +0300 Subject: [PATCH] Take declaration's origin element before looking for declaration by descriptor --- .../state/BuilderFactoryForDuplicateSignatureDiagnostics.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/state/BuilderFactoryForDuplicateSignatureDiagnostics.kt b/compiler/backend/src/org/jetbrains/jet/codegen/state/BuilderFactoryForDuplicateSignatureDiagnostics.kt index 46f71c409e8..fdeda9427fe 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/state/BuilderFactoryForDuplicateSignatureDiagnostics.kt +++ b/compiler/backend/src/org/jetbrains/jet/codegen/state/BuilderFactoryForDuplicateSignatureDiagnostics.kt @@ -31,7 +31,6 @@ import org.jetbrains.jet.codegen.ClassBuilderMode import org.jetbrains.jet.lang.resolve.java.descriptor.SamAdapterDescriptor import org.jetbrains.jet.lang.resolve.DescriptorToSourceUtils import org.jetbrains.jet.lang.diagnostics.DiagnosticSink -import org.jetbrains.jet.lang.resolve.scopes.JetScope class BuilderFactoryForDuplicateSignatureDiagnostics( builderFactory: ClassBuilderFactory, @@ -82,7 +81,8 @@ class BuilderFactoryForDuplicateSignatureDiagnostics( var memberElement: PsiElement? = null var nonFakeCount = 0 - for (member in origins.stream().map { it.descriptor as? CallableMemberDescriptor? }) { + for (origin in origins) { + val member = origin.descriptor as? CallableMemberDescriptor? if (member != null && member.getKind() != FAKE_OVERRIDE) { nonFakeCount++ // If there's more than one real element, the clashing signature is already reported. @@ -91,7 +91,7 @@ class BuilderFactoryForDuplicateSignatureDiagnostics( if (member.getKind() != DELEGATION) { // Delegates don't have declarations in the code - memberElement = DescriptorToSourceUtils.callableDescriptorToDeclaration(member) + memberElement = origin.element ?: DescriptorToSourceUtils.callableDescriptorToDeclaration(member) if (memberElement == null && member is PropertyAccessorDescriptor) { memberElement = DescriptorToSourceUtils.callableDescriptorToDeclaration(member.getCorrespondingProperty()) }