Correct scope declarations in completion for code fragments
This commit is contained in:
@@ -24,10 +24,7 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.KtElement
|
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
|
||||||
import org.jetbrains.kotlin.psi.KtPsiFactory
|
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.BindingTraceContext
|
import org.jetbrains.kotlin.resolve.BindingTraceContext
|
||||||
import org.jetbrains.kotlin.resolve.ImportPath
|
import org.jetbrains.kotlin.resolve.ImportPath
|
||||||
@@ -93,8 +90,12 @@ public fun ResolutionFacade.resolveImportReference(
|
|||||||
// this scope can't be used to search for kotlin declarations in index in order to resolve in that case
|
// this scope can't be used to search for kotlin declarations in index in order to resolve in that case
|
||||||
// see com.intellij.psi.impl.file.impl.ResolveScopeManagerImpl.getInherentResolveScope
|
// see com.intellij.psi.impl.file.impl.ResolveScopeManagerImpl.getInherentResolveScope
|
||||||
public fun getResolveScope(file: KtFile): GlobalSearchScope {
|
public fun getResolveScope(file: KtFile): GlobalSearchScope {
|
||||||
|
if (file is KtCodeFragment) {
|
||||||
|
file.forcedResolveScope?.let { return it }
|
||||||
|
}
|
||||||
|
|
||||||
return when (file.getModuleInfo()) {
|
return when (file.getModuleInfo()) {
|
||||||
is ModuleSourceInfo -> file.getResolveScope()
|
is ModuleSourceInfo -> file.resolveScope
|
||||||
else -> GlobalSearchScope.EMPTY_SCOPE
|
else -> GlobalSearchScope.EMPTY_SCOPE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -22,6 +22,7 @@ import com.intellij.openapi.roots.OrderRootType
|
|||||||
import com.intellij.openapi.vfs.LocalFileSystem
|
import com.intellij.openapi.vfs.LocalFileSystem
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import org.jetbrains.kotlin.idea.completion.test.AbstractJvmBasicCompletionTest
|
import org.jetbrains.kotlin.idea.completion.test.AbstractJvmBasicCompletionTest
|
||||||
import org.jetbrains.kotlin.idea.completion.test.testCompletion
|
import org.jetbrains.kotlin.idea.completion.test.testCompletion
|
||||||
import org.jetbrains.kotlin.idea.test.JdkAndMockLibraryProjectDescriptor
|
import org.jetbrains.kotlin.idea.test.JdkAndMockLibraryProjectDescriptor
|
||||||
@@ -78,6 +79,7 @@ public class CodeFragmentCompletionInLibraryTest : AbstractJvmBasicCompletionTes
|
|||||||
fragmentText,
|
fragmentText,
|
||||||
KotlinCodeFragmentFactory.getContextElement(fooFunctionFromLibrary.getBodyExpression())
|
KotlinCodeFragmentFactory.getContextElement(fooFunctionFromLibrary.getBodyExpression())
|
||||||
)
|
)
|
||||||
|
codeFragment.forceResolveScope(GlobalSearchScope.allScope(project))
|
||||||
myFixture.configureFromExistingVirtualFile(codeFragment.getVirtualFile())
|
myFixture.configureFromExistingVirtualFile(codeFragment.getVirtualFile())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user