Refactor: Introduce JetDeclaration#resolveToDescriptor utility

This commit is contained in:
Pavel V. Talanov
2014-11-20 15:30:02 +03:00
parent 95e668b1f1
commit 585b556f52
10 changed files with 19 additions and 16 deletions
@@ -20,6 +20,8 @@ import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.psi.JetFile
import org.jetbrains.jet.analyzer.AnalyzeExhaust
import org.jetbrains.jet.lang.resolve.BindingContext
import org.jetbrains.jet.lang.psi.JetDeclaration
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
public fun JetElement.getLazyResolveSession(): ResolutionFacade {
return KotlinCacheService.getInstance(getProject()).getResolutionFacade(listOf(this))
@@ -29,6 +31,10 @@ public fun JetElement.getAnalysisResults(vararg extraFiles: JetFile): AnalyzeExh
return KotlinCacheService.getInstance(getProject()).getAnalysisResults(listOf(this) + extraFiles.toList())
}
public fun JetDeclaration.resolveToDescriptor(): DeclarationDescriptor {
return getLazyResolveSession().resolveToDescriptor(this)
}
public fun JetElement.getBindingContext(): BindingContext {
return getAnalysisResults().bindingContext
}
@@ -131,7 +131,7 @@ public class JetStructureViewElement implements StructureViewTreeElement, Querya
return null;
}
return ResolvePackage.getLazyResolveSession(declaration).resolveToDescriptor(declaration);
return ResolvePackage.resolveToDescriptor(declaration);
}
@NotNull
@@ -59,7 +59,7 @@ public class GotoSuperActionHandler implements CodeInsightActionHandler {
JetObjectDeclaration.class);
if (declaration == null) return;
DeclarationDescriptor descriptor = ResolvePackage.getLazyResolveSession(declaration).resolveToDescriptor(declaration);
DeclarationDescriptor descriptor = ResolvePackage.resolveToDescriptor(declaration);
Collection<? extends DeclarationDescriptor> superDescriptors;
String message;
@@ -28,7 +28,7 @@ public class JetFunctionPsiElementCellRenderer extends DefaultPsiElementCellRend
public String getElementText(PsiElement element) {
if (element instanceof JetNamedFunction) {
JetNamedFunction function = (JetNamedFunction) element;
DeclarationDescriptor descriptor = ResolvePackage.getLazyResolveSession(function).resolveToDescriptor(function);
DeclarationDescriptor descriptor = ResolvePackage.resolveToDescriptor(function);
return DescriptorRenderer.SHORT_NAMES_IN_TYPES.render(descriptor);
}
return super.getElementText(element);
@@ -260,7 +260,7 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
@NotNull
public Set<CallableMemberDescriptor> collectMethodsToGenerate(@NotNull JetClassOrObject classOrObject) {
DeclarationDescriptor descriptor = ResolvePackage.getLazyResolveSession(classOrObject).resolveToDescriptor(classOrObject);
DeclarationDescriptor descriptor = ResolvePackage.resolveToDescriptor(classOrObject);
if (descriptor instanceof ClassDescriptor) {
return collectMethodsToGenerate((ClassDescriptor) descriptor);
}
@@ -29,11 +29,11 @@ import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns
import org.jetbrains.jet.plugin.util.makeNotNullable
import org.jetbrains.jet.plugin.util.makeNullable
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession
import org.jetbrains.jet.renderer.DescriptorRenderer
import org.jetbrains.jet.lang.psi.psiUtil.getReceiverExpression
import org.jetbrains.jet.plugin.util.IdeDescriptorRenderers
import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade
import org.jetbrains.jet.plugin.caches.resolve.resolveToDescriptor
class SmartCompletion(val expression: JetSimpleNameExpression,
val resolveSession: ResolutionFacade,
@@ -151,7 +151,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression,
val offset = declaration.getTextRange()!!.getStartOffset()
val originalDeclaration = PsiTreeUtil.findElementOfClassAtOffset(originalFile, offset, javaClass<JetDeclaration>(), true)
if (originalDeclaration != null) {
val originalDescriptor = originalDeclaration.getLazyResolveSession().resolveToDescriptor(originalDeclaration) as? CallableDescriptor
val originalDescriptor = originalDeclaration.resolveToDescriptor() as? CallableDescriptor
val returnType = originalDescriptor?.getReturnType()
return if (returnType != null) listOf(ExpectedInfo(returnType, declaration.getName(), null)) else null
}
@@ -26,8 +26,8 @@ import org.jetbrains.jet.lang.psi.*
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns
import org.jetbrains.jet.lexer.JetTokens
import com.intellij.openapi.util.TextRange
import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorWithVisibility
import org.jetbrains.jet.plugin.caches.resolve.resolveToDescriptor
public class ConvertToExpressionBodyAction : PsiElementBaseIntentionAction() {
override fun getFamilyName(): String = JetBundle.message("convert.to.expression.body.action.family.name")
@@ -63,7 +63,7 @@ public class ConvertToExpressionBodyAction : PsiElementBaseIntentionAction() {
private fun canOmitType(declaration: JetCallableDeclaration): Boolean {
if (declaration.getModifierList()?.hasModifier(JetTokens.OVERRIDE_KEYWORD) ?: false) return true
val descriptor = declaration.getLazyResolveSession().resolveToDescriptor(declaration)
val descriptor = declaration.resolveToDescriptor()
return !((descriptor as? DeclarationDescriptorWithVisibility)?.getVisibility()?.isPublicAPI() ?: false)
}
@@ -17,9 +17,9 @@
package org.jetbrains.jet.plugin.j2k
import org.jetbrains.jet.j2k.ResolverForConverter
import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession
import org.jetbrains.jet.lang.psi.JetDeclaration
import org.jetbrains.jet.plugin.caches.resolve.resolveToDescriptor
public object IdeaResolverForConverter: ResolverForConverter {
override fun resolveToDescriptor(declaration: JetDeclaration) = declaration.getLazyResolveSession().resolveToDescriptor(declaration)
public object IdeaResolverForConverter : ResolverForConverter {
override fun resolveToDescriptor(declaration: JetDeclaration) = declaration.resolveToDescriptor()
}
@@ -51,8 +51,7 @@ public class AddFunctionToSupertypeFix extends JetHintAction<JetNamedFunction> {
}
private static List<FunctionDescriptor> generateFunctionsToAdd(JetNamedFunction functionElement) {
FunctionDescriptor functionDescriptor =
(FunctionDescriptor) ResolvePackage.getLazyResolveSession(functionElement).resolveToDescriptor(functionElement);
FunctionDescriptor functionDescriptor = (FunctionDescriptor) ResolvePackage.resolveToDescriptor(functionElement);
DeclarationDescriptor containingDeclaration = functionDescriptor.getContainingDeclaration();
if (!(containingDeclaration instanceof ClassDescriptor)) return Collections.emptyList();
@@ -34,7 +34,6 @@ import org.jetbrains.jet.lang.psi.JetCallableDeclaration;
import org.jetbrains.jet.lang.psi.JetDeclaration;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.plugin.JetBundle;
import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import java.util.*;
@@ -61,8 +60,7 @@ public class MakeOverriddenMemberOpenFix extends JetIntentionAction<JetDeclarati
overriddenNonOverridableMembers.clear();
containingDeclarationsNames.clear();
ResolutionFacade resolveSession = ResolvePackage.getLazyResolveSession((JetFile) file);
DeclarationDescriptor descriptor = resolveSession.resolveToDescriptor(element);
DeclarationDescriptor descriptor = ResolvePackage.resolveToDescriptor(element);
if (!(descriptor instanceof CallableMemberDescriptor)) return false;
for (CallableMemberDescriptor overriddenDescriptor : getAllDeclaredNonOverridableOverriddenDescriptors(