Move static method to new util class

This commit is contained in:
Vladimir Rudev
2012-11-02 20:00:04 +04:00
committed by Nikolay Krasko
parent 66ea6ab2cd
commit 0be6b8bb22
2 changed files with 35 additions and 19 deletions
@@ -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);