Refactor: Introduce JetElement#getModuleDescriptorForElement()

This commit is contained in:
Pavel V. Talanov
2014-11-20 15:58:41 +03:00
parent 0319ef797e
commit e4670a791d
4 changed files with 10 additions and 9 deletions
@@ -22,6 +22,7 @@ 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
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor
public fun JetElement.getLazyResolveSession(): ResolutionFacade {
return KotlinCacheService.getInstance(getProject()).getResolutionFacade(listOf(this))
@@ -39,6 +40,10 @@ public fun JetElement.resolveToElement(): BindingContext {
return getLazyResolveSession().resolveToElement(this)
}
public fun JetElement.getModuleDescriptorForElement(): ModuleDescriptor {
return getLazyResolveSession().getModuleDescriptorForElement(this)
}
public fun JetElement.getBindingContext(): BindingContext {
return getAnalysisResults().bindingContext
}
@@ -27,7 +27,6 @@ import org.jetbrains.jet.lang.psi.JetTypeProjection
import org.jetbrains.jet.lang.psi.Call
import org.jetbrains.jet.di.InjectorForMacros
import org.jetbrains.jet.lang.resolve.BindingTraceContext
import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession
import org.jetbrains.jet.lang.psi.JetProperty
import org.jetbrains.jet.lang.psi.JetTypeArgumentList
import org.jetbrains.jet.lang.psi.JetReturnExpression
@@ -36,6 +35,7 @@ import org.jetbrains.jet.lang.resolve.calls.callUtil.getResolvedCall
import org.jetbrains.jet.lang.psi.psiUtil.getTextWithLocation
import org.jetbrains.jet.lang.resolve.bindingContextUtil.getDataFlowInfo
import org.jetbrains.jet.plugin.util.approximateFlexibleTypes
import org.jetbrains.jet.plugin.caches.resolve.getModuleDescriptorForElement
public class RemoveExplicitTypeArguments : JetSelfTargetingIntention<JetTypeArgumentList>(
"remove.explicit.type.arguments", javaClass()) {
@@ -47,8 +47,7 @@ public class RemoveExplicitTypeArguments : JetSelfTargetingIntention<JetTypeArgu
val context = AnalyzerFacadeWithCache.getContextForElement(callExpression)
if (callExpression.getTypeArguments().isEmpty()) return false
val resolveSession = callExpression.getLazyResolveSession()
val injector = InjectorForMacros(callExpression.getProject(), resolveSession.getModuleDescriptorForElement(callExpression))
val injector = InjectorForMacros(callExpression.getProject(), callExpression.getModuleDescriptorForElement())
val scope = context[BindingContext.RESOLUTION_SCOPE, callExpression]
val originalCall = callExpression.getResolvedCall(context)
@@ -40,7 +40,6 @@ import com.intellij.psi.PsiNamedElement
import org.jetbrains.jet.lang.descriptors.impl.LocalVariableDescriptor
import org.jetbrains.jet.utils.DFS
import org.jetbrains.jet.utils.DFS.*
import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession
import com.intellij.refactoring.util.RefactoringUIUtil
import com.intellij.util.containers.MultiMap
import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache
@@ -67,6 +66,7 @@ import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.traverseFollowingInstructi
import org.jetbrains.jet.plugin.refactoring.extractFunction.OutputValueBoxer.AsList
import org.jetbrains.jet.plugin.refactoring.getContextForContainingDeclarationBody
import org.jetbrains.jet.plugin.util.IdeDescriptorRenderers
import org.jetbrains.jet.plugin.caches.resolve.getModuleDescriptorForElement
private val DEFAULT_FUNCTION_NAME = "myFun"
private val DEFAULT_RETURN_TYPE = KotlinBuiltIns.getInstance().getUnitType()
@@ -697,12 +697,11 @@ fun ExtractionData.performAnalysis(): AnalysisResult {
val modifiedVarDescriptorsForControlFlow = HashMap(modifiedVarDescriptorsWithExpressions)
modifiedVarDescriptorsForControlFlow.keySet().retainAll(localInstructions.getVarDescriptorsAccessedAfterwards(bindingContext))
val moduleDescriptor = originalFile.getLazyResolveSession().getModuleDescriptorForElement(originalFile)
val (controlFlow, controlFlowMessage) =
analyzeControlFlow(
localInstructions,
pseudocode,
moduleDescriptor,
originalFile.getModuleDescriptorForElement(),
bindingContext,
modifiedVarDescriptorsForControlFlow,
options,
@@ -31,7 +31,6 @@ import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.plugin.JetWithJdkAndRuntimeLightProjectDescriptor;
import org.jetbrains.jet.plugin.KotlinCodeInsightTestCase;
import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.test.util.RecursiveDescriptorComparator;
import org.junit.Assert;
@@ -65,8 +64,7 @@ public abstract class AbstractLazyResolveByStubTest extends KotlinCodeInsightTes
private void performTest(@NotNull String path, boolean checkPrimaryConstructors, boolean checkPropertyAccessors) {
JetFile file = (JetFile) getFile();
ResolutionFacade resolveSession = ResolvePackage.getLazyResolveSession(file);
ModuleDescriptor module = resolveSession.getModuleDescriptorForElement(file);
ModuleDescriptor module = ResolvePackage.getModuleDescriptorForElement(file);
PackageViewDescriptor packageViewDescriptor = module.getPackage(new FqName("test"));
Assert.assertNotNull(packageViewDescriptor);