Changed way to pass statementFilter from ElementResolver into ExpressionTypingServices
This commit is contained in:
@@ -75,11 +75,6 @@ public class BodyResolver {
|
|||||||
this.expressionTypingServices = expressionTypingServices;
|
this.expressionTypingServices = expressionTypingServices;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public ExpressionTypingServices getExpressionTypingServices() {
|
|
||||||
return expressionTypingServices;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setCallResolver(@NotNull CallResolver callResolver) {
|
public void setCallResolver(@NotNull CallResolver callResolver) {
|
||||||
this.callResolver = callResolver;
|
this.callResolver = callResolver;
|
||||||
|
|||||||
+26
-8
@@ -18,9 +18,12 @@ package org.jetbrains.jet.lang.resolve;
|
|||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile;
|
||||||
|
import kotlin.Function1;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.context.GlobalContext;
|
import org.jetbrains.jet.context.GlobalContext;
|
||||||
import org.jetbrains.jet.context.LazinessToken;
|
import org.jetbrains.jet.context.LazinessToken;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetElement;
|
||||||
import org.jetbrains.jet.storage.ExceptionTracker;
|
import org.jetbrains.jet.storage.ExceptionTracker;
|
||||||
import org.jetbrains.jet.storage.StorageManager;
|
import org.jetbrains.jet.storage.StorageManager;
|
||||||
|
|
||||||
@@ -42,7 +45,7 @@ public class TopDownAnalysisParameters extends LazinessToken implements GlobalCo
|
|||||||
boolean analyzingBootstrapLibrary,
|
boolean analyzingBootstrapLibrary,
|
||||||
boolean declaredLocally
|
boolean declaredLocally
|
||||||
) {
|
) {
|
||||||
return new TopDownAnalysisParameters(storageManager, exceptionTracker, analyzeCompletely, analyzingBootstrapLibrary,
|
return new TopDownAnalysisParameters(storageManager, exceptionTracker, analyzeCompletely, null, analyzingBootstrapLibrary,
|
||||||
declaredLocally, LAZY);
|
declaredLocally, LAZY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,7 +57,7 @@ public class TopDownAnalysisParameters extends LazinessToken implements GlobalCo
|
|||||||
boolean analyzingBootstrapLibrary,
|
boolean analyzingBootstrapLibrary,
|
||||||
boolean declaredLocally
|
boolean declaredLocally
|
||||||
) {
|
) {
|
||||||
return new TopDownAnalysisParameters(storageManager, exceptionTracker, analyzeCompletely, analyzingBootstrapLibrary,
|
return new TopDownAnalysisParameters(storageManager, exceptionTracker, analyzeCompletely, null, analyzingBootstrapLibrary,
|
||||||
declaredLocally, true);
|
declaredLocally, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,15 +67,23 @@ public class TopDownAnalysisParameters extends LazinessToken implements GlobalCo
|
|||||||
@NotNull ExceptionTracker exceptionTracker,
|
@NotNull ExceptionTracker exceptionTracker,
|
||||||
@NotNull Predicate<PsiFile> analyzeCompletely
|
@NotNull Predicate<PsiFile> analyzeCompletely
|
||||||
) {
|
) {
|
||||||
return new TopDownAnalysisParameters(storageManager, exceptionTracker, analyzeCompletely, false, true, false);
|
return createForLocalDeclarations(storageManager, exceptionTracker, analyzeCompletely, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private final StorageManager storageManager;
|
public static TopDownAnalysisParameters createForLocalDeclarations(
|
||||||
@NotNull
|
@NotNull StorageManager storageManager,
|
||||||
private final ExceptionTracker exceptionTracker;
|
@NotNull ExceptionTracker exceptionTracker,
|
||||||
@NotNull
|
@NotNull Predicate<PsiFile> analyzeCompletely,
|
||||||
private final Predicate<PsiFile> analyzeCompletely;
|
@Nullable Function1<JetElement, Boolean> statementFilter
|
||||||
|
) {
|
||||||
|
return new TopDownAnalysisParameters(storageManager, exceptionTracker, analyzeCompletely, statementFilter, false, true, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull private final StorageManager storageManager;
|
||||||
|
@NotNull private final ExceptionTracker exceptionTracker;
|
||||||
|
@NotNull private final Predicate<PsiFile> analyzeCompletely;
|
||||||
|
@Nullable private final Function1<JetElement, Boolean> statementFilter;
|
||||||
private final boolean analyzingBootstrapLibrary;
|
private final boolean analyzingBootstrapLibrary;
|
||||||
private final boolean declaredLocally;
|
private final boolean declaredLocally;
|
||||||
private final boolean lazyTopDownAnalysis;
|
private final boolean lazyTopDownAnalysis;
|
||||||
@@ -81,6 +92,7 @@ public class TopDownAnalysisParameters extends LazinessToken implements GlobalCo
|
|||||||
@NotNull StorageManager storageManager,
|
@NotNull StorageManager storageManager,
|
||||||
@NotNull ExceptionTracker exceptionTracker,
|
@NotNull ExceptionTracker exceptionTracker,
|
||||||
@NotNull Predicate<PsiFile> analyzeCompletely,
|
@NotNull Predicate<PsiFile> analyzeCompletely,
|
||||||
|
@Nullable Function1<JetElement, Boolean> statementFilter,
|
||||||
boolean analyzingBootstrapLibrary,
|
boolean analyzingBootstrapLibrary,
|
||||||
boolean declaredLocally,
|
boolean declaredLocally,
|
||||||
boolean lazyTopDownAnalysis
|
boolean lazyTopDownAnalysis
|
||||||
@@ -88,6 +100,7 @@ public class TopDownAnalysisParameters extends LazinessToken implements GlobalCo
|
|||||||
this.storageManager = storageManager;
|
this.storageManager = storageManager;
|
||||||
this.exceptionTracker = exceptionTracker;
|
this.exceptionTracker = exceptionTracker;
|
||||||
this.analyzeCompletely = analyzeCompletely;
|
this.analyzeCompletely = analyzeCompletely;
|
||||||
|
this.statementFilter = statementFilter;
|
||||||
this.analyzingBootstrapLibrary = analyzingBootstrapLibrary;
|
this.analyzingBootstrapLibrary = analyzingBootstrapLibrary;
|
||||||
this.declaredLocally = declaredLocally;
|
this.declaredLocally = declaredLocally;
|
||||||
this.lazyTopDownAnalysis = lazyTopDownAnalysis;
|
this.lazyTopDownAnalysis = lazyTopDownAnalysis;
|
||||||
@@ -110,6 +123,11 @@ public class TopDownAnalysisParameters extends LazinessToken implements GlobalCo
|
|||||||
return analyzeCompletely;
|
return analyzeCompletely;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public Function1<JetElement, Boolean> getStatementFilter() {
|
||||||
|
return statementFilter;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAnalyzingBootstrapLibrary() {
|
public boolean isAnalyzingBootstrapLibrary() {
|
||||||
return analyzingBootstrapLibrary;
|
return analyzingBootstrapLibrary;
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-8
@@ -24,6 +24,7 @@ import kotlin.KotlinPackage;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.analyzer.AnalyzerPackage;
|
import org.jetbrains.jet.analyzer.AnalyzerPackage;
|
||||||
|
import org.jetbrains.jet.context.GlobalContext;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
|
||||||
@@ -75,8 +76,6 @@ public class ExpressionTypingServices {
|
|||||||
private AnnotationResolver annotationResolver;
|
private AnnotationResolver annotationResolver;
|
||||||
@NotNull
|
@NotNull
|
||||||
private CallResolverExtensionProvider extensionProvider;
|
private CallResolverExtensionProvider extensionProvider;
|
||||||
@Nullable
|
|
||||||
private Function1<JetElement, Boolean> filter;
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public Project getProject() {
|
public Project getProject() {
|
||||||
@@ -144,12 +143,9 @@ public class ExpressionTypingServices {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public Function1<JetElement, Boolean> getFilter() {
|
private Function1<JetElement, Boolean> getStatementFilter() {
|
||||||
return filter;
|
GlobalContext context = expressionTypingComponents.globalContext;
|
||||||
}
|
return context instanceof TopDownAnalysisParameters ? ((TopDownAnalysisParameters) context).getStatementFilter() : null;
|
||||||
|
|
||||||
public void setFilter(@Nullable Function1<JetElement, Boolean> filter) {
|
|
||||||
this.filter = filter;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExpressionTypingServices(@NotNull ExpressionTypingComponents components) {
|
public ExpressionTypingServices(@NotNull ExpressionTypingComponents components) {
|
||||||
@@ -219,6 +215,7 @@ public class ExpressionTypingServices {
|
|||||||
) {
|
) {
|
||||||
List<JetElement> block = expression.getStatements();
|
List<JetElement> block = expression.getStatements();
|
||||||
|
|
||||||
|
Function1<JetElement, Boolean> filter = getStatementFilter();
|
||||||
if (filter != null && !(expression instanceof JetPsiUtil.JetExpressionWrapper)) {
|
if (filter != null && !(expression instanceof JetPsiUtil.JetExpressionWrapper)) {
|
||||||
block = KotlinPackage.filter(block, filter);
|
block = KotlinPackage.filter(block, filter);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -338,7 +338,7 @@ public abstract class ElementResolver {
|
|||||||
JetScope propertyResolutionScope = resolveSession.getScopeProvider().getResolutionScopeForDeclaration(jetProperty);
|
JetScope propertyResolutionScope = resolveSession.getScopeProvider().getResolutionScopeForDeclaration(jetProperty);
|
||||||
|
|
||||||
BodyResolveContextForLazy bodyResolveContext = new BodyResolveContextForLazy(
|
BodyResolveContextForLazy bodyResolveContext = new BodyResolveContextForLazy(
|
||||||
createParameters(resolveSession),
|
createParameters(resolveSession, null),
|
||||||
new Function<JetDeclaration, JetScope>() {
|
new Function<JetDeclaration, JetScope>() {
|
||||||
@Override
|
@Override
|
||||||
public JetScope apply(JetDeclaration declaration) {
|
public JetScope apply(JetDeclaration declaration) {
|
||||||
@@ -418,28 +418,27 @@ public abstract class ElementResolver {
|
|||||||
bodyResolver.resolveAnonymousInitializer(createEmptyContext(resolveSession), classInitializer, classOrObjectDescriptor);
|
bodyResolver.resolveAnonymousInitializer(createEmptyContext(resolveSession), classInitializer, classOrObjectDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
private BodyResolver createBodyResolver(ResolveSession resolveSession, BindingTrace trace, JetFile file, @Nullable Function1<JetElement, Boolean> filter) {
|
private BodyResolver createBodyResolver(ResolveSession resolveSession, BindingTrace trace, JetFile file, @Nullable Function1<JetElement, Boolean> statementFilter) {
|
||||||
InjectorForBodyResolve bodyResolve = new InjectorForBodyResolve(
|
InjectorForBodyResolve bodyResolve = new InjectorForBodyResolve(
|
||||||
file.getProject(),
|
file.getProject(),
|
||||||
createParameters(resolveSession),
|
createParameters(resolveSession, statementFilter),
|
||||||
trace,
|
trace,
|
||||||
resolveSession.getModuleDescriptor(),
|
resolveSession.getModuleDescriptor(),
|
||||||
getAdditionalCheckerProvider(file)
|
getAdditionalCheckerProvider(file)
|
||||||
);
|
);
|
||||||
BodyResolver resolver = bodyResolve.getBodyResolver();
|
return bodyResolve.getBodyResolver();
|
||||||
resolver.getExpressionTypingServices().setFilter(filter);
|
|
||||||
return resolver;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static TopDownAnalysisParameters createParameters(@NotNull ResolveSession resolveSession) {
|
private static TopDownAnalysisParameters createParameters(@NotNull ResolveSession resolveSession, @Nullable Function1<JetElement, Boolean> statementFilter) {
|
||||||
return TopDownAnalysisParameters.createForLocalDeclarations(
|
return TopDownAnalysisParameters.createForLocalDeclarations(
|
||||||
resolveSession.getStorageManager(), resolveSession.getExceptionTracker(),
|
resolveSession.getStorageManager(), resolveSession.getExceptionTracker(),
|
||||||
Predicates.<PsiFile>alwaysTrue());
|
Predicates.<PsiFile>alwaysTrue(),
|
||||||
|
statementFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private static BodyResolveContextForLazy createEmptyContext(@NotNull ResolveSession resolveSession) {
|
private static BodyResolveContextForLazy createEmptyContext(@NotNull ResolveSession resolveSession) {
|
||||||
return new BodyResolveContextForLazy(createParameters(resolveSession), Functions.<JetScope>constant(null));
|
return new BodyResolveContextForLazy(createParameters(resolveSession, null), Functions.<JetScope>constant(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static JetScope getExpressionResolutionScope(@NotNull ResolveSession resolveSession, @NotNull JetExpression expression) {
|
private static JetScope getExpressionResolutionScope(@NotNull ResolveSession resolveSession, @NotNull JetExpression expression) {
|
||||||
|
|||||||
Reference in New Issue
Block a user