Move static method to new util class
This commit is contained in:
committed by
Nikolay Krasko
parent
66ea6ab2cd
commit
0be6b8bb22
@@ -0,0 +1,34 @@
|
|||||||
|
package org.jetbrains.jet.plugin.codeInsight;
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
|
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
||||||
|
import org.jetbrains.jet.plugin.references.StandardLibraryReferenceResolver;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Vladimir Rudev
|
||||||
|
*/
|
||||||
|
public final class DescriptorToDeclarationUtil {
|
||||||
|
private DescriptorToDeclarationUtil() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PsiElement getDeclaration(JetFile file, DeclarationDescriptor descriptor, BindingContext bindingContext) {
|
||||||
|
Collection<PsiElement> elements = BindingContextUtils.descriptorToDeclarations(bindingContext, descriptor);
|
||||||
|
|
||||||
|
if (elements.isEmpty()) {
|
||||||
|
StandardLibraryReferenceResolver libraryReferenceResolver =
|
||||||
|
file.getProject().getComponent(StandardLibraryReferenceResolver.class);
|
||||||
|
elements = libraryReferenceResolver.resolveStandardLibrarySymbol(descriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!elements.isEmpty()) {
|
||||||
|
return elements.iterator().next();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -33,12 +33,10 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||||
import org.jetbrains.jet.plugin.project.WholeProjectAnalyzerFacade;
|
import org.jetbrains.jet.plugin.project.WholeProjectAnalyzerFacade;
|
||||||
import org.jetbrains.jet.plugin.references.StandardLibraryReferenceResolver;
|
|
||||||
import org.jetbrains.jet.resolve.DescriptorRenderer;
|
import org.jetbrains.jet.resolve.DescriptorRenderer;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -48,22 +46,6 @@ import java.util.*;
|
|||||||
*/
|
*/
|
||||||
public abstract class OverrideImplementMethodsHandler implements LanguageCodeInsightActionHandler {
|
public abstract class OverrideImplementMethodsHandler implements LanguageCodeInsightActionHandler {
|
||||||
|
|
||||||
public static PsiElement getDeclaration(JetFile file, DeclarationDescriptor descriptor, BindingContext bindingContext) {
|
|
||||||
Collection<PsiElement> elements = BindingContextUtils.descriptorToDeclarations(bindingContext, descriptor);
|
|
||||||
|
|
||||||
if (elements.isEmpty()) {
|
|
||||||
StandardLibraryReferenceResolver libraryReferenceResolver =
|
|
||||||
file.getProject().getComponent(StandardLibraryReferenceResolver.class);
|
|
||||||
elements = libraryReferenceResolver.resolveStandardLibrarySymbol(descriptor);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!elements.isEmpty()) {
|
|
||||||
return elements.iterator().next();
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<DescriptorClassMember> membersFromDescriptors(
|
public static List<DescriptorClassMember> membersFromDescriptors(
|
||||||
JetFile file, Iterable<CallableMemberDescriptor> missingImplementations,
|
JetFile file, Iterable<CallableMemberDescriptor> missingImplementations,
|
||||||
BindingContext bindingContext
|
BindingContext bindingContext
|
||||||
@@ -71,7 +53,7 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
|||||||
List<DescriptorClassMember> members = new ArrayList<DescriptorClassMember>();
|
List<DescriptorClassMember> members = new ArrayList<DescriptorClassMember>();
|
||||||
for (CallableMemberDescriptor memberDescriptor : missingImplementations) {
|
for (CallableMemberDescriptor memberDescriptor : missingImplementations) {
|
||||||
|
|
||||||
PsiElement declaration = getDeclaration(file, memberDescriptor, bindingContext);
|
PsiElement declaration = DescriptorToDeclarationUtil.getDeclaration(file, memberDescriptor, bindingContext);
|
||||||
assert declaration != null : "Can not find declaration for descriptor " + memberDescriptor;
|
assert declaration != null : "Can not find declaration for descriptor " + memberDescriptor;
|
||||||
DescriptorClassMember member = new DescriptorClassMember(declaration, memberDescriptor);
|
DescriptorClassMember member = new DescriptorClassMember(declaration, memberDescriptor);
|
||||||
members.add(member);
|
members.add(member);
|
||||||
|
|||||||
Reference in New Issue
Block a user