[FIR IDE] Move out-of-block modification trigger to FrontendApiTestConfiguratorService

This commit is contained in:
Yan Zhulanow
2021-10-19 23:07:10 +09:00
committed by teamcityserver
parent 2894f87541
commit b7044803d2
15 changed files with 26 additions and 89 deletions
@@ -57,4 +57,8 @@ object KtFe10FrontendApiTestConfiguratorService : FrontendApiTestConfiguratorSer
val packageProviderFactory = compilerConfigurationProvider.getPackagePartProviderFactory(module)
JvmResolveUtil.analyze(project, files, compilerConfiguration, packageProviderFactory)
}
override fun doOutOfBlockModification(file: KtFile) {
// TODO not supported yet
}
}
@@ -1,12 +0,0 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.analysis.api.descriptors.test
import org.jetbrains.kotlin.psi.KtFile
object KtFe10TestWithOutOfBlockModification {
fun doOutOfBlockModification(@Suppress("UNUSED_PARAMETER") ktFile: KtFile) {}
}
@@ -6,12 +6,6 @@
package org.jetbrains.kotlin.analysis.api.descriptors.test.scopes
import org.jetbrains.kotlin.analysis.api.descriptors.test.KtFe10FrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.descriptors.test.KtFe10TestWithOutOfBlockModification
import org.jetbrains.kotlin.analysis.api.impl.base.test.scopes.AbstractMemberScopeByFqNameTest
import org.jetbrains.kotlin.psi.KtFile
abstract class AbstractKtFe10MemberScopeByFqNameTest : AbstractMemberScopeByFqNameTest(KtFe10FrontendApiTestConfiguratorService) {
override fun doOutOfBlockModification(ktFile: KtFile) {
KtFe10TestWithOutOfBlockModification.doOutOfBlockModification(ktFile)
}
}
abstract class AbstractKtFe10MemberScopeByFqNameTest : AbstractMemberScopeByFqNameTest(KtFe10FrontendApiTestConfiguratorService)
@@ -6,12 +6,6 @@
package org.jetbrains.kotlin.analysis.api.descriptors.test.symbols
import org.jetbrains.kotlin.analysis.api.descriptors.test.KtFe10FrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.descriptors.test.KtFe10TestWithOutOfBlockModification
import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.AbstractSymbolByFqNameTest
import org.jetbrains.kotlin.psi.KtFile
abstract class AbstractKtFe10SymbolByFqNameTest : AbstractSymbolByFqNameTest(KtFe10FrontendApiTestConfiguratorService) {
override fun doOutOfBlockModification(ktFile: KtFile) {
KtFe10TestWithOutOfBlockModification.doOutOfBlockModification(ktFile)
}
}
abstract class AbstractKtFe10SymbolByFqNameTest : AbstractSymbolByFqNameTest(KtFe10FrontendApiTestConfiguratorService)
@@ -6,12 +6,6 @@
package org.jetbrains.kotlin.analysis.api.descriptors.test.symbols
import org.jetbrains.kotlin.analysis.api.descriptors.test.KtFe10FrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.descriptors.test.KtFe10TestWithOutOfBlockModification
import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.AbstractSymbolByPsiTest
import org.jetbrains.kotlin.psi.KtFile
abstract class AbstractKtFe10SymbolByPsiTest : AbstractSymbolByPsiTest(KtFe10FrontendApiTestConfiguratorService) {
override fun doOutOfBlockModification(ktFile: KtFile) {
KtFe10TestWithOutOfBlockModification.doOutOfBlockModification(ktFile)
}
}
abstract class AbstractKtFe10SymbolByPsiTest : AbstractSymbolByPsiTest(KtFe10FrontendApiTestConfiguratorService)
@@ -6,12 +6,6 @@
package org.jetbrains.kotlin.analysis.api.descriptors.test.symbols
import org.jetbrains.kotlin.analysis.api.descriptors.test.KtFe10FrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.descriptors.test.KtFe10TestWithOutOfBlockModification
import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.AbstractSymbolByReferenceTest
import org.jetbrains.kotlin.psi.KtFile
abstract class AbstractKtFe10SymbolByReferenceTest : AbstractSymbolByReferenceTest(KtFe10FrontendApiTestConfiguratorService) {
override fun doOutOfBlockModification(ktFile: KtFile) {
KtFe10TestWithOutOfBlockModification.doOutOfBlockModification(ktFile)
}
}
abstract class AbstractKtFe10SymbolByReferenceTest : AbstractSymbolByReferenceTest(KtFe10FrontendApiTestConfiguratorService)
@@ -45,4 +45,8 @@ object FirFrontendApiTestConfiguratorService : FrontendApiTestConfiguratorServic
application.registerService(KotlinReferenceProviderContributor::class.java, KotlinFirReferenceContributor::class.java)
}
}
override fun doOutOfBlockModification(file: KtFile) {
FirLowLevelFrontendApiTestConfiguratorService.doOutOfBlockModification(file)
}
}
@@ -1,17 +0,0 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.analysis.api.fir
import com.intellij.openapi.components.ServiceManager
import org.jetbrains.kotlin.analysis.providers.KotlinModificationTrackerFactory
import org.jetbrains.kotlin.psi.KtFile
object FirTestWithOutOfBlockModification {
fun doOutOfBlockModification(ktFile: KtFile) {
ServiceManager.getService(ktFile.project, KotlinModificationTrackerFactory::class.java)
.incrementModificationsCount()
}
}
@@ -6,12 +6,6 @@
package org.jetbrains.kotlin.analysis.api.fir.scopes
import org.jetbrains.kotlin.analysis.api.fir.FirFrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.fir.FirTestWithOutOfBlockModification
import org.jetbrains.kotlin.analysis.api.impl.base.test.scopes.AbstractMemberScopeByFqNameTest
import org.jetbrains.kotlin.psi.KtFile
abstract class AbstractFirMemberScopeByFqNameTest : AbstractMemberScopeByFqNameTest(FirFrontendApiTestConfiguratorService) {
override fun doOutOfBlockModification(ktFile: KtFile) {
FirTestWithOutOfBlockModification.doOutOfBlockModification(ktFile)
}
}
abstract class AbstractFirMemberScopeByFqNameTest : AbstractMemberScopeByFqNameTest(FirFrontendApiTestConfiguratorService)
@@ -6,12 +6,6 @@
package org.jetbrains.kotlin.analysis.api.fir.symbols
import org.jetbrains.kotlin.analysis.api.fir.FirFrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.fir.FirTestWithOutOfBlockModification
import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.AbstractSymbolByFqNameTest
import org.jetbrains.kotlin.psi.KtFile
abstract class AbstractFirSymbolByFqNameTest : AbstractSymbolByFqNameTest(FirFrontendApiTestConfiguratorService) {
override fun doOutOfBlockModification(ktFile: KtFile) {
FirTestWithOutOfBlockModification.doOutOfBlockModification(ktFile)
}
}
abstract class AbstractFirSymbolByFqNameTest : AbstractSymbolByFqNameTest(FirFrontendApiTestConfiguratorService)
@@ -6,12 +6,6 @@
package org.jetbrains.kotlin.analysis.api.fir.symbols
import org.jetbrains.kotlin.analysis.api.fir.FirFrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.fir.FirTestWithOutOfBlockModification
import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.AbstractSymbolByPsiTest
import org.jetbrains.kotlin.psi.KtFile
abstract class AbstractFirSymbolByPsiTest : AbstractSymbolByPsiTest(FirFrontendApiTestConfiguratorService) {
override fun doOutOfBlockModification(ktFile: KtFile) {
FirTestWithOutOfBlockModification.doOutOfBlockModification(ktFile)
}
}
abstract class AbstractFirSymbolByPsiTest : AbstractSymbolByPsiTest(FirFrontendApiTestConfiguratorService)
@@ -6,12 +6,6 @@
package org.jetbrains.kotlin.analysis.api.fir.symbols
import org.jetbrains.kotlin.analysis.api.fir.FirFrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.fir.FirTestWithOutOfBlockModification
import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.AbstractSymbolByReferenceTest
import org.jetbrains.kotlin.psi.KtFile
abstract class AbstractFirSymbolByReferenceTest : AbstractSymbolByReferenceTest(FirFrontendApiTestConfiguratorService) {
override fun doOutOfBlockModification(ktFile: KtFile) {
FirTestWithOutOfBlockModification.doOutOfBlockModification(ktFile)
}
}
abstract class AbstractFirSymbolByReferenceTest : AbstractSymbolByReferenceTest(FirFrontendApiTestConfiguratorService)
@@ -49,6 +49,8 @@ interface FrontendApiTestConfiguratorService {
fun registerApplicationServices(application: MockApplication)
fun prepareTestFiles(files: List<KtFile>, module: TestModule, testServices: TestServices) {}
fun doOutOfBlockModification(file: KtFile)
}
abstract class AbstractFrontendApiTest(val configurator: FrontendApiTestConfiguratorService) : TestWithDisposable() {
@@ -29,8 +29,6 @@ abstract class AbstractSymbolTest(configurator: FrontendApiTestConfiguratorServi
abstract fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): List<KtSymbol>
abstract fun doOutOfBlockModification(ktFile: KtFile)
override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFile, module, testServices)
@@ -46,8 +44,7 @@ abstract class AbstractSymbolTest(configurator: FrontendApiTestConfiguratorServi
compareResults(pointersWithRendered, testServices)
doOutOfBlockModification(ktFile)
configurator.doOutOfBlockModification(ktFile)
if (createPointers) {
restoreSymbolsInOtherReadActionAndCompareResults(ktFile, pointersWithRendered, testServices)
@@ -8,9 +8,11 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.test.base
import com.intellij.mock.MockApplication
import com.intellij.mock.MockProject
import com.intellij.openapi.Disposable
import com.intellij.openapi.components.ServiceManager
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.FrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.ModuleRegistrarPreAnalysisHandler
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.originalKtFile
import org.jetbrains.kotlin.analysis.providers.KotlinModificationTrackerFactory
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.bind
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
@@ -34,4 +36,9 @@ object FirLowLevelFrontendApiTestConfiguratorService : FrontendApiTestConfigurat
override fun registerProjectServices(project: MockProject) {}
override fun registerApplicationServices(application: MockApplication) {}
override fun doOutOfBlockModification(file: KtFile) {
ServiceManager.getService(file.project, KotlinModificationTrackerFactory::class.java)
.incrementModificationsCount()
}
}