Switched to use of new import insertion API in a test (but had to use a hack!)
This commit is contained in:
+18
-4
@@ -19,17 +19,14 @@ package org.jetbrains.kotlin.idea.debugger.evaluate
|
||||
import org.jetbrains.kotlin.checkers.AbstractJetPsiCheckerTest
|
||||
import org.jetbrains.kotlin.completion.AbstractJvmBasicCompletionTest
|
||||
import com.intellij.testFramework.fixtures.JavaCodeInsightTestFixture
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import java.io.File
|
||||
import org.jetbrains.kotlin.psi.JetPsiFactory
|
||||
import org.jetbrains.kotlin.idea.util.ImportInsertHelper
|
||||
import org.jetbrains.kotlin.psi.JetFile
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||
import org.jetbrains.kotlin.psi.JetCodeFragment
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully
|
||||
import org.jetbrains.kotlin.psi.JetTypeReference
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
@@ -37,6 +34,14 @@ import org.jetbrains.kotlin.completion.ExpectedCompletionUtils
|
||||
import org.jetbrains.kotlin.psi.JetElement
|
||||
import org.jetbrains.kotlin.completion.handlers.AbstractCompletionHandlerTest
|
||||
import com.intellij.codeInsight.completion.CompletionType
|
||||
import org.jetbrains.kotlin.resolve.JetModuleUtil
|
||||
import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver
|
||||
import org.jetbrains.kotlin.resolve.BindingTraceContext
|
||||
import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver.LookupMode
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.*
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.util.PsiModificationTracker
|
||||
import com.intellij.psi.impl.PsiModificationTrackerImpl
|
||||
|
||||
public abstract class AbstractCodeFragmentHighlightingTest : AbstractJetPsiCheckerTest() {
|
||||
override fun doTest(filePath: String) {
|
||||
@@ -49,8 +54,17 @@ public abstract class AbstractCodeFragmentHighlightingTest : AbstractJetPsiCheck
|
||||
|
||||
ApplicationManager.getApplication()?.runWriteAction {
|
||||
val fileText = FileUtil.loadFile(File(filePath), true)
|
||||
val file = myFixture.getFile() as JetFile
|
||||
InTextDirectivesUtils.findListWithPrefixes(fileText, "// IMPORT: ").forEach {
|
||||
ImportInsertHelper.getInstance(getProject()).addImportDirectiveIfNeeded(FqName(it), (myFixture.getFile() as JetFile))
|
||||
val importDirective = JetPsiFactory(getProject()).createImportDirective(it)
|
||||
val moduleDescriptor = file.getResolutionFacade().findModuleDescriptor(file)
|
||||
val scope = JetModuleUtil.getSubpackagesOfRootScope(moduleDescriptor)
|
||||
val descriptor = QualifiedExpressionResolver()
|
||||
.processImportReference(importDirective, scope, scope, null, BindingTraceContext(), LookupMode.EVERYTHING)
|
||||
.singleOrNull() ?: error("Could not resolve descriptor to import: $it")
|
||||
ImportInsertHelper.getInstance(getProject()).importDescriptor(file, descriptor)
|
||||
//TODO: it's a hack! we need to discuss it
|
||||
(PsiModificationTracker.SERVICE.getInstance(getProject()) as PsiModificationTrackerImpl).incOutOfCodeBlockModificationCounter()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user