KotlinCacheManagerUtil usages replaced by lazy resolve

This commit is contained in:
Andrey Breslav
2014-04-22 19:06:33 +04:00
parent 1a92964250
commit 54f3dd20b3
10 changed files with 26 additions and 62 deletions
@@ -1,34 +0,0 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.jet.plugin.caches.resolve;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.JetElement;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache;
import org.jetbrains.jet.plugin.project.TargetPlatformDetector;
public class KotlinCacheManagerUtil {
private KotlinCacheManagerUtil() {
}
@NotNull
public static BindingContext getDeclarationsBindingContext(@NotNull JetElement element) {
return AnalyzerFacadeWithCache.analyzeFileWithCache(element.getContainingJetFile()).getBindingContext();
}
}
@@ -36,7 +36,7 @@ import org.jetbrains.jet.lang.psi.JetNamedFunction;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.plugin.JetPluginUtil;
import org.jetbrains.jet.plugin.caches.resolve.KotlinCacheManagerUtil;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.plugin.libraries.JetSourceNavigationHelper;
import org.jetbrains.jet.plugin.stubindex.JetClassShortNameIndex;
import org.jetbrains.jet.renderer.DescriptorRenderer;
@@ -70,7 +70,7 @@ public class KotlinTypeHierarchyProvider extends JavaTypeHierarchyProvider {
else if (target instanceof JetNamedFunction) {
JetNamedFunction function = (JetNamedFunction) target;
String functionName = function.getName();
FunctionDescriptor functionDescriptor = KotlinCacheManagerUtil.getDeclarationsBindingContext(function)
FunctionDescriptor functionDescriptor = ResolvePackage.getBindingContext(function)
.get(BindingContext.FUNCTION, target);
if (functionDescriptor != null) {
JetType type = functionDescriptor.getReturnType();
@@ -38,7 +38,7 @@ import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lexer.JetModifierKeywordToken;
import org.jetbrains.jet.lexer.JetTokens;
import org.jetbrains.jet.plugin.JetBundle;
import org.jetbrains.jet.plugin.caches.resolve.KotlinCacheManagerUtil;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import java.util.List;
@@ -87,7 +87,7 @@ public class ConvertMemberToExtension extends BaseIntentionAction {
JetCallableDeclaration member = getTarget(editor, file);
assert member != null : "Must be checked by isAvailable";
BindingContext bindingContext = KotlinCacheManagerUtil.getDeclarationsBindingContext(member);
BindingContext bindingContext = ResolvePackage.getBindingContext(member);
DeclarationDescriptor memberDescriptor = bindingContext.get(DECLARATION_TO_DESCRIPTOR, member);
if (memberDescriptor == null) return;
@@ -36,7 +36,7 @@ import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.plugin.JetBundle;
import org.jetbrains.jet.plugin.actions.JetAddFunctionToClassifierAction;
import org.jetbrains.jet.plugin.caches.resolve.KotlinCacheManagerUtil;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.plugin.codeInsight.CodeInsightUtils;
import java.util.Collections;
@@ -52,10 +52,8 @@ public class AddFunctionToSupertypeFix extends JetHintAction<JetNamedFunction> {
}
private static List<FunctionDescriptor> generateFunctionsToAdd(JetNamedFunction functionElement) {
BindingContext context = KotlinCacheManagerUtil.getDeclarationsBindingContext(functionElement);
FunctionDescriptor functionDescriptor = context.get(BindingContext.FUNCTION, functionElement);
if (functionDescriptor == null) return Collections.emptyList();
FunctionDescriptor functionDescriptor =
(FunctionDescriptor) ResolvePackage.getLazyResolveSession(functionElement).resolveToDescriptor(functionElement);
DeclarationDescriptor containingDeclaration = functionDescriptor.getContainingDeclaration();
if (!(containingDeclaration instanceof ClassDescriptor)) return Collections.emptyList();
@@ -143,18 +141,18 @@ public class AddFunctionToSupertypeFix extends JetHintAction<JetNamedFunction> {
}
@Override
protected void invoke(@NotNull final Project project, final Editor editor, JetFile file) {
protected void invoke(@NotNull final Project project, final Editor editor, final JetFile file) {
CommandProcessor.getInstance().runUndoTransparentAction(new Runnable() {
@Override
public void run() {
createAction(project, editor).execute();
createAction(project, editor, file).execute();
}
});
}
@NotNull
private JetAddFunctionToClassifierAction createAction(Project project, Editor editor) {
BindingContext bindingContext = KotlinCacheManagerUtil.getDeclarationsBindingContext(element);
private JetAddFunctionToClassifierAction createAction(Project project, Editor editor, JetFile file) {
BindingContext bindingContext = ResolvePackage.getLazyResolveSession(file).getBindingContext();
return new JetAddFunctionToClassifierAction(project, editor, bindingContext, functionsToAdd);
}
@@ -42,7 +42,7 @@ import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.plugin.JetBundle;
import org.jetbrains.jet.plugin.caches.resolve.KotlinCacheManagerUtil;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.plugin.intentions.SpecifyTypeExplicitlyAction;
import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache;
import org.jetbrains.jet.renderer.DescriptorRenderer;
@@ -204,7 +204,7 @@ public class ChangeFunctionReturnTypeFix extends JetIntentionAction<JetFunction>
JetFunction function = QuickFixUtil.getParentElementOfType(diagnostic, JetFunction.class);
if (function != null) {
BindingContext context = KotlinCacheManagerUtil.getDeclarationsBindingContext(function);
BindingContext context = ResolvePackage.getBindingContext(function);
JetType matchingReturnType = QuickFixUtil.findLowerBoundOfOverriddenCallablesReturnTypes(context, function);
if (matchingReturnType != null) {
actions.add(new ChangeFunctionReturnTypeFix(function, matchingReturnType));
@@ -42,7 +42,7 @@ import org.jetbrains.jet.lang.types.TypeUtils;
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
import org.jetbrains.jet.plugin.JetBundle;
import org.jetbrains.jet.plugin.actions.JetChangeFunctionSignatureAction;
import org.jetbrains.jet.plugin.caches.resolve.KotlinCacheManagerUtil;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.plugin.codeInsight.CodeInsightUtils;
import java.util.*;
@@ -108,7 +108,7 @@ public class ChangeMemberFunctionSignatureFix extends JetHintAction<JetNamedFunc
*/
@NotNull
private static List<FunctionDescriptor> computePossibleSignatures(JetNamedFunction functionElement) {
BindingContext context = KotlinCacheManagerUtil.getDeclarationsBindingContext(functionElement);
BindingContext context = ResolvePackage.getBindingContext(functionElement);
FunctionDescriptor functionDescriptor = context.get(BindingContext.FUNCTION, functionElement);
if (functionDescriptor == null) return Lists.newArrayList();
List<FunctionDescriptor> superFunctions = getPossibleSuperFunctionsDescriptors(functionDescriptor);
@@ -30,7 +30,7 @@ import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.TypeUtils;
import org.jetbrains.jet.plugin.JetBundle;
import org.jetbrains.jet.plugin.caches.resolve.KotlinCacheManagerUtil;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import java.util.List;
@@ -59,7 +59,7 @@ public class ChangeToConstructorInvocationFix extends JetIntentionAction<JetDele
}
JetTypeReference typeReference = element.getTypeReference();
BindingContext context = KotlinCacheManagerUtil.getDeclarationsBindingContext((JetFile) file);
BindingContext context = ResolvePackage.getBindingContext(typeReference);
JetType supertype = context.get(BindingContext.TYPE, typeReference);
if (supertype == null) return false;
ClassDescriptor classDescriptor = TypeUtils.getClassDescriptor(supertype);
@@ -37,7 +37,7 @@ import org.jetbrains.jet.lang.diagnostics.Errors;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.plugin.JetBundle;
import org.jetbrains.jet.plugin.caches.resolve.KotlinCacheManagerUtil;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.renderer.DescriptorRenderer;
import java.util.ArrayList;
@@ -77,7 +77,7 @@ public class MapPlatformClassToKotlinFix extends JetIntentionAction<JetReference
@Override
public void invoke(@NotNull Project project, Editor editor, JetFile file) throws IncorrectOperationException {
BindingContext context = KotlinCacheManagerUtil.getDeclarationsBindingContext(file);
BindingContext context = ResolvePackage.getBindingContext(file);
Iterable<Diagnostic> diagnostics = context.getDiagnostics();
List<JetImportDirective> imports = new ArrayList<JetImportDirective>();
List<JetUserType> usages = new ArrayList<JetUserType>();
@@ -194,7 +194,7 @@ public class MapPlatformClassToKotlinFix extends JetIntentionAction<JetReference
PsiFile psiFile = diagnostic.getPsiFile();
if (!(psiFile instanceof JetFile)) return null;
BindingContext context = KotlinCacheManagerUtil.getDeclarationsBindingContext((JetFile) psiFile);
BindingContext context = ResolvePackage.getBindingContext((JetFile) psiFile);
ClassDescriptor platformClass = resolveToClass(typeExpr, context);
if (platformClass == null) return null;
@@ -31,7 +31,7 @@ import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetParameter;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.plugin.JetBundle;
import org.jetbrains.jet.plugin.caches.resolve.KotlinCacheManagerUtil;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
public class RenameParameterToMatchOverriddenMethodFix extends JetIntentionAction<JetParameter>{
private final JetParameter parameter;
@@ -48,7 +48,7 @@ public class RenameParameterToMatchOverriddenMethodFix extends JetIntentionActio
return false;
}
BindingContext context = KotlinCacheManagerUtil.getDeclarationsBindingContext(parameter);
BindingContext context = ResolvePackage.getBindingContext(parameter);
VariableDescriptor parameterDescriptor = context.get(BindingContext.VALUE_PARAMETER, parameter);
if (parameterDescriptor == null) {
return false;
@@ -42,7 +42,7 @@ import org.jetbrains.jet.lang.psi.JetDeclaration;
import org.jetbrains.jet.lang.psi.JetNamedFunction;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.plugin.caches.resolve.KotlinCacheManagerUtil;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.plugin.stubindex.JetAnnotationsIndex;
import java.util.ArrayList;
@@ -70,10 +70,10 @@ public class KotlinAnnotatedElementsSearcher extends AnnotatedElementsSearcher {
JetDeclaration parentOfType = PsiTreeUtil.getParentOfType(elt, JetDeclaration.class);
if (parentOfType == null) return;
//TODO LazyResolve
BindingContext context = KotlinCacheManagerUtil.getDeclarationsBindingContext(parentOfType);
JetAnnotationEntry annotationEntry = (JetAnnotationEntry) elt;
AnnotationDescriptor annotationDescriptor = context.get(BindingContext.ANNOTATION, (JetAnnotationEntry) elt);
BindingContext context = ResolvePackage.getBindingContext(annotationEntry);
AnnotationDescriptor annotationDescriptor = context.get(BindingContext.ANNOTATION, annotationEntry);
if (annotationDescriptor == null) return;
ClassifierDescriptor descriptor = annotationDescriptor.getType().getConstructor().getDeclarationDescriptor();