FIR IDE: temporary disable AbstractFirLazyDeclarationResolveTest.kt

This commit is contained in:
Ilya Kirillov
2021-06-20 22:19:39 +02:00
parent 90f6d458b5
commit 822590a62b
3 changed files with 196 additions and 196 deletions
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.idea.fir.frontend.api.symbols.AbstractSymbolByFqName
import org.jetbrains.kotlin.idea.fir.frontend.api.symbols.AbstractSymbolByPsiTest
import org.jetbrains.kotlin.idea.fir.frontend.api.symbols.AbstractSymbolByReferenceTest
import org.jetbrains.kotlin.idea.fir.low.level.api.AbstractFirLazyBodiesCalculatorTest
import org.jetbrains.kotlin.idea.fir.low.level.api.AbstractFirLazyDeclarationResolveTest
//import org.jetbrains.kotlin.idea.fir.low.level.api.AbstractFirLazyDeclarationResolveTest
import org.jetbrains.kotlin.idea.fir.low.level.api.AbstractFirOnAirResolveTest
import org.jetbrains.kotlin.idea.fir.low.level.api.AbstractPartialRawFirBuilderTestCase
import org.jetbrains.kotlin.idea.fir.low.level.api.diagnostic.AbstractDiagnosticTraversalCounterTest
@@ -90,9 +90,9 @@ fun main(args: Array<String>) {
testClass<AbstractFirOnAirResolveTest> {
model("onAirResolve")
}
testClass<AbstractFirLazyDeclarationResolveTest> {
model("lazyResolve")
}
// testClass<AbstractFirLazyDeclarationResolveTest> {
// model("lazyResolve")
// }
testClass<AbstractFileStructureTest> {
model("fileStructure")
@@ -1,112 +1,112 @@
/*
* Copyright 2010-2020 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.idea.fir.low.level.api
import com.intellij.openapi.util.io.FileUtil
import com.intellij.testFramework.LightProjectDescriptor
import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
import org.jetbrains.kotlin.idea.fir.low.level.api.api.withFirDeclaration
import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.FirLazyDeclarationResolver
import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.ResolveType
import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.declarationCanBeLazilyResolved
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
import org.jetbrains.kotlin.psi.KtCallableDeclaration
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType
import org.jetbrains.kotlin.test.KotlinTestUtils
import java.io.File
/**
* Test that we do not resolve declarations we do not need & do not build bodies for them
*/
abstract class AbstractFirLazyDeclarationResolveTest : KotlinLightCodeInsightFixtureTestCase() {
override fun isFirPlugin(): Boolean = true
private fun FirFile.findResolveMe(): FirDeclaration {
val visitor = object : FirVisitorVoid() {
var result: FirDeclaration? = null
override fun visitElement(element: FirElement) {
if (result != null) return
val declaration = element.realPsi as? KtDeclaration
if (element is FirDeclaration && declaration != null && declaration.name == "resolveMe") {
result = element
return
}
element.acceptChildren(this)
}
}
accept(visitor)
return visitor.result ?: error("declaration with name `resolveMe` was not found")
}
fun doTest(path: String) {
val testDataFile = File(path)
val ktFile = myFixture.configureByText(testDataFile.name, FileUtil.loadFile(testDataFile)) as KtFile
val rendererOption = FirRenderer.RenderMode.WithDeclarationAttributes.copy(renderDeclarationResolvePhase = true)
val resultBuilder = StringBuilder()
resolveWithClearCaches(ktFile) { firModuleResolveState ->
check(firModuleResolveState is FirModuleResolveStateImpl)
val declarationToResolve = firModuleResolveState
.getOrBuildFirFile(ktFile)
.findResolveMe()
for (currentPhase in FirResolvePhase.values()) {
if (currentPhase.pluginPhase || currentPhase == FirResolvePhase.SEALED_CLASS_INHERITORS) continue
declarationToResolve.withFirDeclaration(firModuleResolveState, currentPhase) {
val firFile = firModuleResolveState.getOrBuildFirFile(ktFile)
resultBuilder.append("\n${currentPhase.name}:\n")
resultBuilder.append(firFile.render(rendererOption))
}
}
}
for (resolveType in ResolveType.values()) {
resolveWithClearCaches(ktFile) { firModuleResolveState ->
check(firModuleResolveState is FirModuleResolveStateImpl)
val declarationToResolve = firModuleResolveState
.getOrBuildFirFile(ktFile)
.findResolveMe()
when (resolveType) {
ResolveType.CallableReturnType,
ResolveType.CallableBodyResolve,
ResolveType.CallableContracts -> if (declarationToResolve !is FirCallableDeclaration<*>) return@resolveWithClearCaches
ResolveType.ClassSuperTypes -> if (declarationToResolve !is FirClassLikeDeclaration<*>) return@resolveWithClearCaches
else -> {
}
}
declarationToResolve.withFirDeclaration(resolveType, firModuleResolveState) {
val firFile = firModuleResolveState.getOrBuildFirFile(ktFile)
resultBuilder.append("\n${resolveType.name}:\n")
resultBuilder.append(firFile.render(rendererOption))
}
}
}
resolveWithClearCaches(ktFile) { firModuleResolveState ->
check(firModuleResolveState is FirModuleResolveStateImpl)
val firFile = firModuleResolveState.getOrBuildFirFile(ktFile)
firFile.withFirDeclaration(firModuleResolveState, FirResolvePhase.BODY_RESOLVE) {
resultBuilder.append("\nFILE RAW TO BODY:\n")
resultBuilder.append(firFile.render(rendererOption))
}
}
val expectedFileName = testDataFile.name.replace(".kt", ".txt")
KotlinTestUtils.assertEqualsToFile(testDataFile.parentFile.resolve(expectedFileName), resultBuilder.toString())
}
override fun getProjectDescriptor(): LightProjectDescriptor = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE
}
///*
// * Copyright 2010-2020 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.idea.fir.low.level.api
//
//import com.intellij.openapi.util.io.FileUtil
//import com.intellij.testFramework.LightProjectDescriptor
//import org.jetbrains.kotlin.fir.*
//import org.jetbrains.kotlin.fir.declarations.*
//import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
//import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
//import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
//import org.jetbrains.kotlin.idea.fir.low.level.api.api.withFirDeclaration
//import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.FirLazyDeclarationResolver
//import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.ResolveType
//import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.declarationCanBeLazilyResolved
//import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
//import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
//import org.jetbrains.kotlin.psi.KtCallableDeclaration
//import org.jetbrains.kotlin.psi.KtClassOrObject
//import org.jetbrains.kotlin.psi.KtDeclaration
//import org.jetbrains.kotlin.psi.KtFile
//import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType
//import org.jetbrains.kotlin.test.KotlinTestUtils
//import java.io.File
//
///**
// * Test that we do not resolve declarations we do not need & do not build bodies for them
// */
//abstract class AbstractFirLazyDeclarationResolveTest : KotlinLightCodeInsightFixtureTestCase() {
// override fun isFirPlugin(): Boolean = true
//
// private fun FirFile.findResolveMe(): FirDeclaration {
// val visitor = object : FirVisitorVoid() {
// var result: FirDeclaration? = null
// override fun visitElement(element: FirElement) {
// if (result != null) return
// val declaration = element.realPsi as? KtDeclaration
// if (element is FirDeclaration && declaration != null && declaration.name == "resolveMe") {
// result = element
// return
// }
// element.acceptChildren(this)
// }
//
// }
// accept(visitor)
// return visitor.result ?: error("declaration with name `resolveMe` was not found")
// }
//
//
// fun doTest(path: String) {
// val testDataFile = File(path)
// val ktFile = myFixture.configureByText(testDataFile.name, FileUtil.loadFile(testDataFile)) as KtFile
// val rendererOption = FirRenderer.RenderMode.WithDeclarationAttributes.copy(renderDeclarationResolvePhase = true)
// val resultBuilder = StringBuilder()
// resolveWithClearCaches(ktFile) { firModuleResolveState ->
// check(firModuleResolveState is FirModuleResolveStateImpl)
// val declarationToResolve = firModuleResolveState
// .getOrBuildFirFile(ktFile)
// .findResolveMe()
// for (currentPhase in FirResolvePhase.values()) {
// if (currentPhase.pluginPhase || currentPhase == FirResolvePhase.SEALED_CLASS_INHERITORS) continue
// declarationToResolve.withFirDeclaration(firModuleResolveState, currentPhase) {
// val firFile = firModuleResolveState.getOrBuildFirFile(ktFile)
// resultBuilder.append("\n${currentPhase.name}:\n")
// resultBuilder.append(firFile.render(rendererOption))
// }
// }
// }
//
// for (resolveType in ResolveType.values()) {
// resolveWithClearCaches(ktFile) { firModuleResolveState ->
// check(firModuleResolveState is FirModuleResolveStateImpl)
// val declarationToResolve = firModuleResolveState
// .getOrBuildFirFile(ktFile)
// .findResolveMe()
//
// when (resolveType) {
// ResolveType.CallableReturnType,
// ResolveType.CallableBodyResolve,
// ResolveType.CallableContracts -> if (declarationToResolve !is FirCallableDeclaration<*>) return@resolveWithClearCaches
// ResolveType.ClassSuperTypes -> if (declarationToResolve !is FirClassLikeDeclaration<*>) return@resolveWithClearCaches
// else -> {
// }
// }
//
// declarationToResolve.withFirDeclaration(resolveType, firModuleResolveState) {
// val firFile = firModuleResolveState.getOrBuildFirFile(ktFile)
// resultBuilder.append("\n${resolveType.name}:\n")
// resultBuilder.append(firFile.render(rendererOption))
// }
// }
// }
//
// resolveWithClearCaches(ktFile) { firModuleResolveState ->
// check(firModuleResolveState is FirModuleResolveStateImpl)
// val firFile = firModuleResolveState.getOrBuildFirFile(ktFile)
// firFile.withFirDeclaration(firModuleResolveState, FirResolvePhase.BODY_RESOLVE) {
// resultBuilder.append("\nFILE RAW TO BODY:\n")
// resultBuilder.append(firFile.render(rendererOption))
// }
// }
//
// val expectedFileName = testDataFile.name.replace(".kt", ".txt")
// KotlinTestUtils.assertEqualsToFile(testDataFile.parentFile.resolve(expectedFileName), resultBuilder.toString())
// }
//
// override fun getProjectDescriptor(): LightProjectDescriptor = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE
//}
@@ -1,80 +1,80 @@
/*
* 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.idea.fir.low.level.api;
import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.util.regex.Pattern;
/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve")
@TestDataPath("$PROJECT_ROOT")
public class FirLazyDeclarationResolveTestGenerated extends AbstractFirLazyDeclarationResolveTest {
@Test
public void testAllFilesPresentInLazyResolve() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve"), Pattern.compile("^(.+)\\.kt$"), null, true);
}
@Test
@TestMetadata("classMembers.kt")
public void testClassMembers() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/classMembers.kt");
}
@Test
@TestMetadata("delegates.kt")
public void testDelegates() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/delegates.kt");
}
@Test
@TestMetadata("propertyWithGetter.kt")
public void testPropertyWithGetter() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetter.kt");
}
@Test
@TestMetadata("propertyWithGetterAndSetter.kt")
public void testPropertyWithGetterAndSetter() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetterAndSetter.kt");
}
@Test
@TestMetadata("propertyWithInitializer.kt")
public void testPropertyWithInitializer() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithInitializer.kt");
}
@Test
@TestMetadata("secondaryConstructor.kt")
public void testSecondaryConstructor() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/secondaryConstructor.kt");
}
@Test
@TestMetadata("topLevelFunctions.kt")
public void testTopLevelFunctions() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctions.kt");
}
@Test
@TestMetadata("topLevelFunctionsWithExpressionBodyAndExplicitType.kt")
public void testTopLevelFunctionsWithExpressionBodyAndExplicitType() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithExpressionBodyAndExplicitType.kt");
}
@Test
@TestMetadata("topLevelFunctionsWithImplicitType.kt")
public void testTopLevelFunctionsWithImplicitType() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithImplicitType.kt");
}
}
///*
// * 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.idea.fir.low.level.api;
//
//import com.intellij.testFramework.TestDataPath;
//import org.jetbrains.kotlin.test.util.KtTestUtil;
//import org.jetbrains.kotlin.test.TestMetadata;
//import org.junit.jupiter.api.Nested;
//import org.junit.jupiter.api.Test;
//
//import java.io.File;
//import java.util.regex.Pattern;
//
///** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */
//@SuppressWarnings("all")
//@TestMetadata("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve")
//@TestDataPath("$PROJECT_ROOT")
//public class FirLazyDeclarationResolveTestGenerated extends AbstractFirLazyDeclarationResolveTest {
// @Test
// public void testAllFilesPresentInLazyResolve() throws Exception {
// KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve"), Pattern.compile("^(.+)\\.kt$"), null, true);
// }
//
// @Test
// @TestMetadata("classMembers.kt")
// public void testClassMembers() throws Exception {
// runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/classMembers.kt");
// }
//
// @Test
// @TestMetadata("delegates.kt")
// public void testDelegates() throws Exception {
// runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/delegates.kt");
// }
//
// @Test
// @TestMetadata("propertyWithGetter.kt")
// public void testPropertyWithGetter() throws Exception {
// runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetter.kt");
// }
//
// @Test
// @TestMetadata("propertyWithGetterAndSetter.kt")
// public void testPropertyWithGetterAndSetter() throws Exception {
// runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetterAndSetter.kt");
// }
//
// @Test
// @TestMetadata("propertyWithInitializer.kt")
// public void testPropertyWithInitializer() throws Exception {
// runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithInitializer.kt");
// }
//
// @Test
// @TestMetadata("secondaryConstructor.kt")
// public void testSecondaryConstructor() throws Exception {
// runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/secondaryConstructor.kt");
// }
//
// @Test
// @TestMetadata("topLevelFunctions.kt")
// public void testTopLevelFunctions() throws Exception {
// runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctions.kt");
// }
//
// @Test
// @TestMetadata("topLevelFunctionsWithExpressionBodyAndExplicitType.kt")
// public void testTopLevelFunctionsWithExpressionBodyAndExplicitType() throws Exception {
// runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithExpressionBodyAndExplicitType.kt");
// }
//
// @Test
// @TestMetadata("topLevelFunctionsWithImplicitType.kt")
// public void testTopLevelFunctionsWithImplicitType() throws Exception {
// runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithImplicitType.kt");
// }
//}