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