diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java index 8b86d40a0c3..502bd083c61 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java @@ -14,6 +14,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.vfs.VirtualFileSystem; import com.intellij.psi.FileContextProvider; import com.intellij.psi.augment.PsiAugmentProvider; +import com.intellij.psi.impl.smartPointers.SmartPointerAnchorProvider; import com.intellij.psi.meta.MetaDataContributor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -41,6 +42,7 @@ public class KotlinCoreApplicationEnvironment extends JavaCoreApplicationEnviron registerApplicationExtensionPoint(ContainerProvider.EP_NAME, ContainerProvider.class); registerApplicationExtensionPoint(MetaLanguage.EP_NAME, MetaLanguage.class); + registerApplicationExtensionPoint(SmartPointerAnchorProvider.EP_NAME, SmartPointerAnchorProvider.class); IdeaExtensionPoints.INSTANCE.registerVersionSpecificAppExtensionPoints(ApplicationManager.getApplication().getExtensionArea()); } diff --git a/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/fir/frontend/api/symbols/AbstractSymbolTest.kt b/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/fir/frontend/api/symbols/AbstractSymbolTest.kt index f8799155ef0..c34133c2c54 100644 --- a/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/fir/frontend/api/symbols/AbstractSymbolTest.kt +++ b/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/fir/frontend/api/symbols/AbstractSymbolTest.kt @@ -5,22 +5,38 @@ package org.jetbrains.kotlin.idea.fir.frontend.api.symbols +import com.intellij.DynamicBundle +import com.intellij.core.CoreApplicationEnvironment +import com.intellij.openapi.components.ServiceManager +import com.intellij.psi.impl.smartPointers.SmartPointerAnchorProvider import org.jetbrains.kotlin.idea.fir.analyseOnPooledThreadInReadAction import org.jetbrains.kotlin.idea.fir.frontend.api.test.framework.AbstractHLApiSingleFileTest +import org.jetbrains.kotlin.idea.fir.low.level.api.api.KotlinOutOfBlockModificationTrackerFactory +import org.jetbrains.kotlin.idea.fir.low.level.api.api.createProjectWideOutOfBlockModificationTracker import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession import org.jetbrains.kotlin.idea.frontend.api.symbols.DebugSymbolRenderer import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder +import org.jetbrains.kotlin.test.directives.model.DirectiveApplicability +import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.assertions abstract class AbstractSymbolTest : AbstractHLApiSingleFileTest() { + override fun configureTest(builder: TestConfigurationBuilder) { + super.configureTest(builder) + with(builder) { + useDirectives(SymbolTestDirectives) + } + } + abstract fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): List override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) { - val createPointers = false //TODO !fileStructure.directives.isDirectivePresent(DIRECTIVES.DO_NOT_CHECK_SYMBOL_RESTORE) + val createPointers = SymbolTestDirectives.DO_NOT_CHECK_SYMBOL_RESTORE !in module.directives val pointersWithRendered = analyseOnPooledThreadInReadAction(ktFile) { collectSymbols(ktFile, testServices).map { symbol -> PointerWithRenderedSymbol( @@ -65,8 +81,16 @@ abstract class AbstractSymbolTest : AbstractHLApiSingleFileTest() { } private fun doOutOfBlockModification(ktFile: KtFile) { - //TODO + ServiceManager.getService(ktFile.project, KotlinOutOfBlockModificationTrackerFactory::class.java) + .incrementModificationsCount() } } +private object SymbolTestDirectives : SimpleDirectivesContainer() { + val DO_NOT_CHECK_SYMBOL_RESTORE by directive( + description = "Symbol restoring for some symbols in current test is not yet supported yet", + applicability = DirectiveApplicability.Global + ) +} + private data class PointerWithRenderedSymbol(val pointer: KtSymbolPointer<*>?, val rendered: String) \ No newline at end of file