diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt index 02b3b5054d1..da640a67245 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt @@ -19,7 +19,6 @@ package org.jetbrains.kotlin.idea.decompiler.navigation import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.module.Module import com.intellij.openapi.project.DumbService -import com.intellij.openapi.project.Project import com.intellij.openapi.roots.OrderEntry import com.intellij.openapi.roots.ProjectRootManager import com.intellij.openapi.vfs.VirtualFile @@ -31,14 +30,11 @@ import com.intellij.util.containers.ContainerUtil import gnu.trove.THashSet import org.jetbrains.annotations.TestOnly import org.jetbrains.kotlin.asJava.toLightClass -import org.jetbrains.kotlin.builtins.DefaultBuiltIns -import org.jetbrains.kotlin.context.ContextForNewModule -import org.jetbrains.kotlin.context.ProjectContext import org.jetbrains.kotlin.descriptors.CallableDescriptor -import org.jetbrains.kotlin.frontend.di.createLazyResolveSession import org.jetbrains.kotlin.idea.caches.resolve.BinaryModuleInfo import org.jetbrains.kotlin.idea.caches.resolve.SourceForBinaryModuleInfo import org.jetbrains.kotlin.idea.caches.resolve.getModuleInfoByVirtualFile +import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor import org.jetbrains.kotlin.idea.decompiler.navigation.MemberMatching.* import org.jetbrains.kotlin.idea.stubindex.KotlinFullClassNameIndex import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelFunctionFqnNameIndex @@ -50,7 +46,6 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.JavaToKotlinClassMap import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.debugText.getDebugText -import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer object SourceNavigationHelper { private val LOG = Logger.getInstance(SourceNavigationHelper::class.java) @@ -162,10 +157,8 @@ object SourceNavigationHelper { } } - val analyzer = createAnalyzer(candidates, declaration.project) - for (candidate in candidates) { - val candidateDescriptor = analyzer.resolveToDescriptor(candidate) as CallableDescriptor + val candidateDescriptor = candidate.resolveToDescriptor() as CallableDescriptor if (receiversMatch(declaration, candidateDescriptor) && valueParametersTypesMatch(declaration, candidateDescriptor) && typeParametersMatch(declaration as KtTypeParameterListOwner, candidateDescriptor.typeParameters)) { @@ -176,19 +169,6 @@ object SourceNavigationHelper { return null } - private fun createAnalyzer( - candidates: Collection, - project: Project - ): KotlinCodeAnalyzer { - val context = ContextForNewModule( - ProjectContext(project), Name.special(""), DefaultBuiltIns.Instance, null - ) - context.setDependencies(context.module, context.module.builtIns.builtInsModule) - val resolveSession = createLazyResolveSession(context, candidates.getContainingFiles()) - context.initializeModuleContents(resolveSession.packageFragmentProvider) - return resolveSession - } - private fun findFirstMatchingInIndex( entity: T, navigationKind: NavigationKind, diff --git a/idea/testData/decompiler/navigation/library/extra.kt b/idea/testData/decompiler/navigation/library/extra.kt index 3c89c06e307..19bae8f188f 100644 --- a/idea/testData/decompiler/navigation/library/extra.kt +++ b/idea/testData/decompiler/navigation/library/extra.kt @@ -1,4 +1,8 @@ package testData.libraries public fun func(str : kotlin.String) { -} \ No newline at end of file +} + +public fun processDouble(d: Double) {} + +public fun processDouble(d: kotlin.Double) {} \ No newline at end of file diff --git a/idea/testData/decompiler/navigation/library/main.kt b/idea/testData/decompiler/navigation/library/main.kt index 6045e163b19..8156b236733 100644 --- a/idea/testData/decompiler/navigation/library/main.kt +++ b/idea/testData/decompiler/navigation/library/main.kt @@ -111,11 +111,6 @@ public inline fun T.filter(predicate: (T)-> Boolean) : T? = this public class Double -public fun processDouble(d: Double) {} - -public fun processDouble(d: kotlin.Double) {} - - public fun funWithTypeParam(t: T) { } diff --git a/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.decompiled.expected b/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.decompiled.expected index aa4ab5e6bbe..0ed0b1e29a3 100644 --- a/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.decompiled.expected +++ b/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.decompiled.expected @@ -1,6 +1,6 @@ -Double.class + Double.class public final class Double public <3>constructor() { - MainKt.class + ExtraKt.class public fun <1>processDouble(d: kotlin.Double): kotlin.Unit { /* compiled code */ } public fun <2>processDouble(d: testData.libraries.Double): kotlin.Unit { /* compiled code */ } diff --git a/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.source.expected b/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.source.expected index 46dd7a79db7..9c2eb8e07e8 100644 --- a/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.source.expected +++ b/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.source.expected @@ -1,6 +1,6 @@ -main.kt -public class <3>Double - + extra.kt public fun <2>processDouble(d: Double) {} public fun <1>processDouble(d: kotlin.Double) {} + main.kt +public class <3>Double