diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/DeclarationDescriptorWithSource.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/DeclarationDescriptorWithSource.java index 3fb6c5c672b..8da3c734972 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/DeclarationDescriptorWithSource.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/DeclarationDescriptorWithSource.java @@ -21,4 +21,8 @@ import org.jetbrains.annotations.NotNull; public interface DeclarationDescriptorWithSource extends DeclarationDescriptor { @NotNull SourceElement getSource(); + + @Override + @NotNull + DeclarationDescriptorWithSource getOriginal(); } diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractClassDescriptor.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractClassDescriptor.java index 336195d6f3d..21c4b60d743 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractClassDescriptor.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractClassDescriptor.java @@ -66,7 +66,7 @@ public abstract class AbstractClassDescriptor implements ClassDescriptor { @NotNull @Override - public DeclarationDescriptor getOriginal() { + public DeclarationDescriptorWithSource getOriginal() { return this; } diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/DeclarationDescriptorNonRootImpl.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/DeclarationDescriptorNonRootImpl.java index 018cf921e16..6b83fd6d018 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/DeclarationDescriptorNonRootImpl.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/DeclarationDescriptorNonRootImpl.java @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.descriptors.impl; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.descriptors.DeclarationDescriptor; import org.jetbrains.kotlin.descriptors.DeclarationDescriptorNonRoot; +import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource; import org.jetbrains.kotlin.descriptors.SourceElement; import org.jetbrains.kotlin.descriptors.annotations.Annotations; import org.jetbrains.kotlin.name.Name; @@ -45,6 +46,12 @@ public abstract class DeclarationDescriptorNonRootImpl this.source = source; } + @NotNull + @Override + public DeclarationDescriptorWithSource getOriginal() { + return (DeclarationDescriptorWithSource) super.getOriginal(); + } + @Override @NotNull public DeclarationDescriptor getContainingDeclaration() { diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/LazySubstitutingClassDescriptor.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/LazySubstitutingClassDescriptor.java index aeb3b18cbee..224498d01e7 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/LazySubstitutingClassDescriptor.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/LazySubstitutingClassDescriptor.java @@ -146,7 +146,7 @@ public class LazySubstitutingClassDescriptor implements ClassDescriptor { @NotNull @Override - public DeclarationDescriptor getOriginal() { + public DeclarationDescriptorWithSource getOriginal() { return original.getOriginal(); } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt index 95cfd9a5edf..ba0e9518b98 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt @@ -104,7 +104,7 @@ private fun JavaDescriptorResolver.getContainingScope(member: JavaMember): JetSc private fun Collection.findByJavaElement(javaElement: JavaElement): T? { return firstOrNull { member -> - val memberJavaElement = (member.getSource() as? JavaSourceElement)?.javaElement + val memberJavaElement = (member.getOriginal().getSource() as? JavaSourceElement)?.javaElement when { memberJavaElement == javaElement -> true