Basic implementation of partial body resolve
This commit is contained in:
@@ -75,6 +75,11 @@ public class BodyResolver {
|
||||
this.expressionTypingServices = expressionTypingServices;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public ExpressionTypingServices getExpressionTypingServices() {
|
||||
return expressionTypingServices;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setCallResolver(@NotNull CallResolver callResolver) {
|
||||
this.callResolver = callResolver;
|
||||
|
||||
+17
@@ -19,6 +19,8 @@ package org.jetbrains.jet.lang.types.expressions;
|
||||
import com.google.common.base.Function;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import kotlin.Function1;
|
||||
import kotlin.KotlinPackage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.analyzer.AnalyzerPackage;
|
||||
@@ -73,6 +75,8 @@ public class ExpressionTypingServices {
|
||||
private AnnotationResolver annotationResolver;
|
||||
@NotNull
|
||||
private CallResolverExtensionProvider extensionProvider;
|
||||
@Nullable
|
||||
private Function1<JetElement, Boolean> filter;
|
||||
|
||||
@NotNull
|
||||
public Project getProject() {
|
||||
@@ -139,6 +143,15 @@ public class ExpressionTypingServices {
|
||||
this.extensionProvider = extensionProvider;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Function1<JetElement, Boolean> getFilter() {
|
||||
return filter;
|
||||
}
|
||||
|
||||
public void setFilter(@Nullable Function1<JetElement, Boolean> filter) {
|
||||
this.filter = filter;
|
||||
}
|
||||
|
||||
public ExpressionTypingServices(@NotNull ExpressionTypingComponents components) {
|
||||
this.expressionTypingComponents = components;
|
||||
this.expressionTypingFacade = ExpressionTypingVisitorDispatcher.create(components);
|
||||
@@ -206,6 +219,10 @@ public class ExpressionTypingServices {
|
||||
) {
|
||||
List<JetElement> block = expression.getStatements();
|
||||
|
||||
if (filter != null && !(expression instanceof JetPsiUtil.JetExpressionWrapper)) {
|
||||
block = KotlinPackage.filter(block, filter);
|
||||
}
|
||||
|
||||
// SCRIPT: get code descriptor for script declaration
|
||||
DeclarationDescriptor containingDescriptor = context.scope.getContainingDeclaration();
|
||||
if (containingDescriptor instanceof ScriptDescriptor) {
|
||||
|
||||
Reference in New Issue
Block a user