Use original descriptor when trying to obtain source

Also refine `getOriginal` of `DeclarationDescriptorWithSource` for comfortable use
This commit is contained in:
Denis Zharkov
2015-06-17 17:44:38 +03:00
parent 0375e45936
commit a551f21e9f
5 changed files with 14 additions and 3 deletions
@@ -21,4 +21,8 @@ import org.jetbrains.annotations.NotNull;
public interface DeclarationDescriptorWithSource extends DeclarationDescriptor {
@NotNull
SourceElement getSource();
@Override
@NotNull
DeclarationDescriptorWithSource getOriginal();
}
@@ -66,7 +66,7 @@ public abstract class AbstractClassDescriptor implements ClassDescriptor {
@NotNull
@Override
public DeclarationDescriptor getOriginal() {
public DeclarationDescriptorWithSource getOriginal() {
return this;
}
@@ -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() {
@@ -146,7 +146,7 @@ public class LazySubstitutingClassDescriptor implements ClassDescriptor {
@NotNull
@Override
public DeclarationDescriptor getOriginal() {
public DeclarationDescriptorWithSource getOriginal() {
return original.getOriginal();
}
@@ -104,7 +104,7 @@ private fun JavaDescriptorResolver.getContainingScope(member: JavaMember): JetSc
private fun <T : DeclarationDescriptorWithSource> Collection<T>.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