Uast: KotlinUastReferencesTest falling in 193 fix

This commit is contained in:
Nicolay Mitropolsky
2020-04-15 17:53:26 +03:00
parent 6d86d6ccdc
commit d3f357ee47
@@ -7,7 +7,6 @@ package org.jetbrains.uast.test.kotlin
import com.intellij.openapi.Disposable import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.extensions.Extensions
import com.intellij.openapi.util.Disposer import com.intellij.openapi.util.Disposer
import com.intellij.patterns.uast.injectionHostUExpression import com.intellij.patterns.uast.injectionHostUExpression
import com.intellij.psi.* import com.intellij.psi.*
@@ -15,6 +14,7 @@ import com.intellij.psi.impl.source.resolve.reference.PsiReferenceContributorEP
import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry
import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistryImpl import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistryImpl
import com.intellij.psi.util.PropertyUtil import com.intellij.psi.util.PropertyUtil
import com.intellij.testFramework.ExtensionTestUtil
import com.intellij.testFramework.LightProjectDescriptor import com.intellij.testFramework.LightProjectDescriptor
import com.intellij.testFramework.registerServiceInstance import com.intellij.testFramework.registerServiceInstance
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
@@ -36,11 +36,7 @@ class KotlinUastReferencesTest : KotlinLightCodeInsightFixtureTestCase() {
@Test @Test
fun `test original getter is visible when reference is under renaming`() { fun `test original getter is visible when reference is under renaming`() {
KotlinTestUtils.runTest(this) { KotlinTestUtils.runTest(this) {
registerReferenceProviders(testRootDisposable) { registerReferenceContributor(testRootDisposable, MockPsiReferenceContributor::class.java)
registerUastReferenceProvider(injectionHostUExpression(), uastInjectionHostReferenceProvider { _, psiLanguageInjectionHost ->
arrayOf(GetterReference("KotlinBean", psiLanguageInjectionHost))
})
}
myFixture.configureByText( myFixture.configureByText(
"KotlinBean.kt", """ "KotlinBean.kt", """
@@ -91,34 +87,33 @@ private class GetterReference(
override fun getVariants(): Array<Any> = emptyArray() override fun getVariants(): Array<Any> = emptyArray()
} }
class MockPsiReferenceContributor : PsiReferenceContributor() {
fun registerReferenceProviders(disposable: Disposable, registerContributors: PsiReferenceRegistrar.() -> Unit) { override fun registerReferenceProviders(registrar: PsiReferenceRegistrar) {
registerReferenceContributor(object : PsiReferenceContributor() { registrar.registerUastReferenceProvider(
override fun registerReferenceProviders(registrar: PsiReferenceRegistrar) = registrar.registerContributors() injectionHostUExpression(),
}, disposable) uastInjectionHostReferenceProvider { _, psiLanguageInjectionHost ->
arrayOf(GetterReference("KotlinBean", psiLanguageInjectionHost))
})
}
} }
fun registerReferenceContributor(contributor: PsiReferenceContributor, disposable: Disposable) { fun registerReferenceContributor(disposable: Disposable, clazz: Class<out PsiReferenceContributor>) {
error("PsiReferenceContributorEP is final in 193 platform") ExtensionTestUtil.maskExtensions(PsiReferenceContributor.EP_NAME,
// val referenceContributorEp = Extensions.getArea(null).getExtensionPoint<PsiReferenceContributorEP>(PsiReferenceContributor.EP_NAME.name) listOf(PsiReferenceContributorEP().apply {
// implementationClass = clazz.name
// val contributorEp = object : PsiReferenceContributorEP() { }
// override fun getInstance(): PsiReferenceContributor = contributor ), disposable)
// }
// val application = ApplicationManager.getApplication()
// referenceContributorEp.registerExtension(contributorEp)
// //we need a fresh ReferenceProvidersRegistry after updating ReferenceContributors
// val application = ApplicationManager.getApplication() val oldReferenceProviderRegistry =
// application.picoContainer.getComponentInstance(ReferenceProvidersRegistry::class.java) as ReferenceProvidersRegistry
// //we need a fresh ReferenceProvidersRegistry after updating ReferenceContributors application.registerServiceInstance(ReferenceProvidersRegistry::class.java, ReferenceProvidersRegistryImpl())
// val oldReferenceProviderRegistry =
// application.picoContainer.getComponentInstance(ReferenceProvidersRegistry::class.java) as ReferenceProvidersRegistry Disposer.register(disposable, Disposable {
// application.registerServiceInstance(ReferenceProvidersRegistry::class.java, ReferenceProvidersRegistryImpl()) application.registerServiceInstance(ReferenceProvidersRegistry::class.java, oldReferenceProviderRegistry)
// })
// Disposer.register(disposable, Disposable {
// referenceContributorEp.unregisterExtension(contributorEp)
// application.registerServiceInstance(ReferenceProvidersRegistry::class.java, oldReferenceProviderRegistry)
// })
} }