diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java b/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java index 5dcb490153e..fad79da6c0b 100644 --- a/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java +++ b/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java @@ -16,6 +16,7 @@ package org.jetbrains.jet.plugin.libraries; +import com.google.common.base.Predicates; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.OrderEntry; @@ -32,16 +33,18 @@ import com.intellij.psi.util.PsiTreeUtil; import jet.Tuple2; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.FqName; import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM; +import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.resolve.DescriptorRenderer; -import org.jetbrains.jet.util.slicedmap.WritableSlice; +import org.jetbrains.jet.util.slicedmap.ReadOnlySlice; import java.util.ArrayList; import java.util.Collections; @@ -58,21 +61,23 @@ public class JetSourceNavigationHelper { @Nullable private static Tuple2 - getBindingContextAndClassOrNamespaceDescriptor(@NotNull WritableSlice slice, + getBindingContextAndClassOrNamespaceDescriptor(@NotNull ReadOnlySlice slice, @NotNull JetDeclaration declaration, @Nullable FqName fqName) { if (fqName == null || DumbService.isDumb(declaration.getProject())) { return null; } + final Project project = declaration.getProject(); final List libraryFiles = findAllSourceFilesWhichContainIdentifier(declaration); - for (JetFile libraryFile : libraryFiles) { - BindingContext bindingContext = AnalyzerFacadeForJVM.analyzeFileWithCache(libraryFile, - AnalyzerFacadeForJVM.SINGLE_DECLARATION_PROVIDER) - .getBindingContext(); - D descriptor = bindingContext.get(slice, fqName); - if (descriptor != null) { - return new Tuple2(bindingContext, descriptor); - } + BindingContext bindingContext = AnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration( + project, + libraryFiles, + Predicates.alwaysTrue(), + JetControlFlowDataTraceFactory.EMPTY, + CompilerSpecialMode.REGULAR).getBindingContext(); + D descriptor = bindingContext.get(slice, fqName); + if (descriptor != null) { + return new Tuple2(bindingContext, descriptor); } return null; }