FIR IDE: fix generators after changing analysis api packages

This commit is contained in:
Ilya Kirillov
2021-09-14 17:47:57 +02:00
parent 99a65527b7
commit 5b38bd2be2
17 changed files with 201 additions and 201 deletions
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.checkers.generator.diagnostics.JVM_DIAGNOSTICS_L
import java.nio.file.Paths
fun main() {
val rootPath = Paths.get("idea/idea-frontend-fir/src").toAbsolutePath()
val rootPath = Paths.get("analysis/analysis-api-fir/src").toAbsolutePath()
val packageName = "org.jetbrains.kotlin.analysis.api.fir.diagnostics"
DiagnosticClassGenerator.generate(rootPath, DIAGNOSTICS_LIST + JVM_DIAGNOSTICS_LIST, packageName)
}
@@ -0,0 +1,23 @@
plugins {
kotlin("jvm")
id("jps-compatible")
}
sourceSets {
"main" { java.srcDirs("main") }
"test" { projectDefault() }
}
dependencies {
compile(kotlinStdlib("jdk8"))
testCompile(projectTests(":generators:test-generator"))
testCompile(projectTests(":compiler:tests-common"))
testCompile(projectTests(":compiler:tests-spec"))
testCompile(projectTests("::analysis:low-level-api-fir"))
testCompile(projectTests(":analysis:analysis-api-fir"))
testCompile(intellijCoreDep()) { includeJars("intellij-core", "guava", rootProject = rootProject) }
testApiJUnit5()
}
val generateFrontendApiTests by generator("org.jetbrains.kotlin.generators.tests.analysis.api.GenerateTestsKt")
@@ -0,0 +1,172 @@
/*
* 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.generators.tests.analysis.api
import org.jetbrains.kotlin.analysis.api.fir.AbstractReferenceResolveTest
import org.jetbrains.kotlin.analysis.api.fir.components.*
import org.jetbrains.kotlin.analysis.api.fir.scopes.AbstractFileScopeTest
import org.jetbrains.kotlin.analysis.api.fir.scopes.AbstractMemberScopeByFqNameTest
import org.jetbrains.kotlin.analysis.api.fir.symbols.AbstractSymbolByFqNameTest
import org.jetbrains.kotlin.analysis.api.fir.symbols.AbstractSymbolByPsiTest
import org.jetbrains.kotlin.analysis.api.fir.symbols.AbstractSymbolByReferenceTest
import org.jetbrains.kotlin.analysis.low.level.api.fir.*
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.AbstractDiagnosticTraversalCounterTest
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.AbstractFirContextCollectionTest
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.AbstractDiagnosisCompilerTestDataSpecTest
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.AbstractDiagnosisCompilerTestDataTest
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.AbstractFileStructureTest
import org.jetbrains.kotlin.analysis.low.level.api.fir.resolve.AbstractInnerDeclarationsResolvePhaseTest
import org.jetbrains.kotlin.generators.util.TestGeneratorUtil
import org.jetbrains.kotlin.spec.utils.GeneralConfiguration
import org.jetbrains.kotlin.spec.utils.tasks.detectDirsWithTestsMapFileOnly
import org.jetbrains.kotlin.test.generators.generateTestGroupSuiteWithJUnit5
import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTestSpec
fun main(args: Array<String>) {
System.setProperty("java.awt.headless", "true")
val excludedFirTestdataPattern = "^(.+)\\.fir\\.kts?\$"
generateTestGroupSuiteWithJUnit5(args) {
testGroup("analysis/analysis-api-fir/tests", "analysis/analysis-api/testData") {
testClass<AbstractResolveCallTest> {
model("analysisSession/resolveCall")
}
testClass<AbstractMemberScopeByFqNameTest> {
model("memberScopeByFqName")
}
testClass<AbstractFileScopeTest> {
model("fileScopeTest", extension = "kt")
}
testClass<AbstractSymbolByPsiTest> {
model("symbols/symbolByPsi")
}
testClass<AbstractSymbolByFqNameTest> {
model("symbols/symbolByFqName")
}
testClass<AbstractSymbolByReferenceTest> {
model("symbols/symbolByReference")
}
testClass<AbstractExpectedExpressionTypeTest> {
model("components/expectedExpressionType")
}
testClass<AbstractOverriddenDeclarationProviderTest> {
model("components/overridenDeclarations")
}
testClass<AbstractHLExpressionTypeTest> {
model("components/expressionType")
}
testClass<AbstractRendererTest> {
model("components/declarationRenderer")
}
testClass<AbstractReferenceResolveTest> {
model("referenceResolve", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
}
testClass<AbstractHLImportOptimizerTest> {
model("components/importOptimizer", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
}
}
testGroup("analysis/low-level-api-fir/tests", "compiler/fir/raw-fir/psi2fir/testData") {
testClass<AbstractFirLazyBodiesCalculatorTest> {
model("rawBuilder", testMethod = "doTest")
}
}
testGroup("analysis/low-level-api-fir/tests", "analysis/low-level-api-fir/testdata") {
testClass<AbstractFirOnAirResolveTest> {
model("onAirResolve")
}
testClass<AbstractFirLazyDeclarationResolveTest> {
model("lazyResolve")
}
testClass<AbstractFileStructureTest> {
model("fileStructure")
}
testClass<AbstractFirContextCollectionTest> {
model("fileStructure")
}
testClass<AbstractDiagnosticTraversalCounterTest> {
model("diagnosticTraversalCounter")
}
testClass<AbstractInnerDeclarationsResolvePhaseTest> {
model("innerDeclarationsResolve")
}
testClass<AbstractPartialRawFirBuilderTestCase> {
model("partialRawBuilder", testMethod = "doRawFirTest")
}
testClass<AbstractGetOrBuildFirTest> {
model("getOrBuildFir")
}
}
testGroup(
"analysis/low-level-api-fir/tests",
"compiler/fir/analysis-tests/testData",
) {
testClass<AbstractDiagnosisCompilerTestDataTest>(suiteTestClassName = "DiagnosisCompilerFirTestdataTestGenerated") {
model("resolve", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
model("resolveWithStdlib", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
}
}
testGroup(
"analysis/low-level-api-fir/tests",
"compiler/testData",
) {
testClass<AbstractDiagnosisCompilerTestDataTest>(suiteTestClassName = "DiagnosisCompilerTestFE10TestdataTestGenerated") {
model(
"diagnostics/tests",
excludedPattern = excludedFirTestdataPattern,
)
model(
"diagnostics/testsWithStdLib",
excludedPattern = excludedFirTestdataPattern,
excludeDirs = listOf("native")
)
}
}
testGroup("analysis/low-level-api-fir/tests", testDataRoot = GeneralConfiguration.SPEC_TESTDATA_PATH) {
testClass<AbstractDiagnosisCompilerTestDataSpecTest>(suiteTestClassName = "FirIdeSpecTest") {
model(
"diagnostics",
excludeDirs = listOf("helpers") + detectDirsWithTestsMapFileOnly("diagnostics"),
excludedPattern = excludedFirTestdataPattern,
)
}
}
testGroup(testsRoot = "compiler/fir/analysis-tests/tests-gen", testDataRoot = GeneralConfiguration.SPEC_TESTDATA_PATH) {
testClass<AbstractFirDiagnosticTestSpec> {
model(
"diagnostics",
excludeDirs = listOf("helpers") + detectDirsWithTestsMapFileOnly("diagnostics"),
excludedPattern = excludedFirTestdataPattern
)
}
}
}
}
+1 -1
View File
@@ -79,7 +79,7 @@ projectTest(parallel = true) {
}
val generateTests by generator("org.jetbrains.kotlin.generators.tests.GenerateTestsKt") {
dependsOn(":generators:frontend-api-generator:generateFrontendApiTests")
dependsOn(":generators:analysis-api-generator:generateFrontendApiTests")
}
val generateProtoBuf by generator("org.jetbrains.kotlin.generators.protobuf.GenerateProtoBufKt", protobufSourceSet)
@@ -1,23 +0,0 @@
plugins {
kotlin("jvm")
id("jps-compatible")
}
sourceSets {
"main" { java.srcDirs("main") }
"test" { projectDefault() }
}
dependencies {
compile(kotlinStdlib("jdk8"))
testCompile(projectTests(":generators:test-generator"))
testCompile(projectTests(":compiler:tests-common"))
testCompile(projectTests(":compiler:tests-spec"))
testCompile(projectTests("::analysis:low-level-api-fir"))
testCompile(projectTests(":analysis:analysis-api-fir"))
testCompile(intellijCoreDep()) { includeJars("intellij-core", "guava", rootProject = rootProject) }
testApiJUnit5()
}
val generateFrontendApiTests by generator("org.jetbrains.kotlin.generators.tests.frontend.api.GenerateTestsKt")
@@ -1,174 +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.generators.tests.frontend.api
import org.jetbrains.kotlin.generators.util.TestGeneratorUtil
import org.jetbrains.kotlin.idea.fir.frontend.api.AbstractReferenceResolveTest
import org.jetbrains.kotlin.idea.fir.frontend.api.components.*
import org.jetbrains.kotlin.idea.fir.frontend.api.fir.AbstractResolveCallTest
import org.jetbrains.kotlin.idea.fir.frontend.api.scopes.AbstractFileScopeTest
import org.jetbrains.kotlin.idea.fir.frontend.api.scopes.AbstractMemberScopeByFqNameTest
import org.jetbrains.kotlin.idea.fir.frontend.api.symbols.AbstractSymbolByFqNameTest
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.*
import org.jetbrains.kotlin.idea.fir.low.level.api.diagnostic.AbstractDiagnosticTraversalCounterTest
import org.jetbrains.kotlin.idea.fir.low.level.api.diagnostic.AbstractFirContextCollectionTest
import org.jetbrains.kotlin.idea.fir.low.level.api.diagnostic.compiler.based.AbstractDiagnosisCompilerTestDataSpecTest
import org.jetbrains.kotlin.idea.fir.low.level.api.diagnostic.compiler.based.AbstractDiagnosisCompilerTestDataTest
import org.jetbrains.kotlin.idea.fir.low.level.api.file.structure.AbstractFileStructureTest
import org.jetbrains.kotlin.idea.fir.low.level.api.resolve.AbstractInnerDeclarationsResolvePhaseTest
import org.jetbrains.kotlin.spec.utils.GeneralConfiguration
import org.jetbrains.kotlin.spec.utils.tasks.detectDirsWithTestsMapFileOnly
import org.jetbrains.kotlin.test.generators.generateTestGroupSuiteWithJUnit5
import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTestSpec
fun main(args: Array<String>) {
System.setProperty("java.awt.headless", "true")
val excludedFirTestdataPattern = "^(.+)\\.fir\\.kts?\$"
generateTestGroupSuiteWithJUnit5(args) {
testGroup("idea/idea-frontend-fir/tests", "idea/idea-frontend-fir/testData") {
testClass<AbstractResolveCallTest> {
model("analysisSession/resolveCall")
}
testClass<AbstractMemberScopeByFqNameTest> {
model("memberScopeByFqName")
}
testClass<AbstractFileScopeTest> {
model("fileScopeTest", extension = "kt")
}
testClass<AbstractSymbolByPsiTest> {
model("symbols/symbolByPsi")
}
testClass<AbstractSymbolByFqNameTest> {
model("symbols/symbolByFqName")
}
testClass<AbstractSymbolByReferenceTest> {
model("symbols/symbolByReference")
}
testClass<AbstractExpectedExpressionTypeTest> {
model("components/expectedExpressionType")
}
testClass<AbstractOverriddenDeclarationProviderTest> {
model("components/overridenDeclarations")
}
testClass<AbstractHLExpressionTypeTest> {
model("components/expressionType")
}
testClass<AbstractRendererTest> {
model("components/declarationRenderer")
}
testClass<AbstractReferenceResolveTest> {
model("referenceResolve", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
}
testClass<AbstractHLImportOptimizerTest> {
model("components/importOptimizer", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
}
}
testGroup("idea/idea-frontend-fir/idea-fir-low-level-api/tests", "compiler/fir/raw-fir/psi2fir/testData") {
testClass<AbstractFirLazyBodiesCalculatorTest> {
model("rawBuilder", testMethod = "doTest")
}
}
testGroup("idea/idea-frontend-fir/idea-fir-low-level-api/tests", "idea/idea-frontend-fir/idea-fir-low-level-api/testdata") {
testClass<AbstractFirOnAirResolveTest> {
model("onAirResolve")
}
testClass<AbstractFirLazyDeclarationResolveTest> {
model("lazyResolve")
}
testClass<AbstractFileStructureTest> {
model("fileStructure")
}
testClass<AbstractFirContextCollectionTest> {
model("fileStructure")
}
testClass<AbstractDiagnosticTraversalCounterTest> {
model("diagnosticTraversalCounter")
}
testClass<AbstractInnerDeclarationsResolvePhaseTest> {
model("innerDeclarationsResolve")
}
testClass<AbstractPartialRawFirBuilderTestCase> {
model("partialRawBuilder", testMethod = "doRawFirTest")
}
testClass<AbstractGetOrBuildFirTest> {
model("getOrBuildFir")
}
}
testGroup(
"idea/idea-frontend-fir/idea-fir-low-level-api/tests",
"compiler/fir/analysis-tests/testData",
) {
testClass<AbstractDiagnosisCompilerTestDataTest>(suiteTestClassName = "DiagnosisCompilerFirTestdataTestGenerated") {
model("resolve", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
model("resolveWithStdlib", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
}
}
testGroup(
"idea/idea-frontend-fir/idea-fir-low-level-api/tests",
"compiler/testData",
) {
testClass<AbstractDiagnosisCompilerTestDataTest>(suiteTestClassName = "DiagnosisCompilerTestFE10TestdataTestGenerated") {
model(
"diagnostics/tests",
excludedPattern = excludedFirTestdataPattern,
)
model(
"diagnostics/testsWithStdLib",
excludedPattern = excludedFirTestdataPattern,
excludeDirs = listOf("native")
)
}
}
testGroup("idea/idea-frontend-fir/idea-fir-low-level-api/tests", testDataRoot = GeneralConfiguration.SPEC_TESTDATA_PATH) {
testClass<AbstractDiagnosisCompilerTestDataSpecTest>(suiteTestClassName = "FirIdeSpecTest") {
model(
"diagnostics",
excludeDirs = listOf("helpers") + detectDirsWithTestsMapFileOnly("diagnostics"),
excludedPattern = excludedFirTestdataPattern,
)
}
}
testGroup(testsRoot = "compiler/fir/analysis-tests/tests-gen", testDataRoot = GeneralConfiguration.SPEC_TESTDATA_PATH) {
testClass<AbstractFirDiagnosticTestSpec> {
model(
"diagnostics",
excludeDirs = listOf("helpers") + detectDirsWithTestsMapFileOnly("diagnostics"),
excludedPattern = excludedFirTestdataPattern
)
}
}
}
}
@@ -11,7 +11,9 @@ private const val TAGS_FILE_NAME = "_tags.txt"
private val PROHIBITED_SYMBOLS = listOf(' ', ',', '(', ')', '&', '|', '!')
fun extractTagsFromDirectory(dir: File): List<String> {
require(dir.isDirectory)
require(dir.isDirectory) {
"${dir.absolutePath} is not a directory"
}
val tagsFile = dir.resolve(TAGS_FILE_NAME)
if (!tagsFile.exists()) return emptyList()
return tagsFile.readLines().filter { it.isNotBlank() }.onEach(::validateTag)
+1 -1
View File
@@ -443,7 +443,7 @@ if (attachedIntellijVersion == "212") { // Latest available platform in scope of
intellij "jvm-run-configurations/kotlin.jvm-run-configurations.iml"
}
include ":generators:frontend-api-generator",
include ":generators:analysis-api-generator",
":analysis:low-level-api-fir",
":analysis:analysis-api-fir:analysis-api-fir-generator",
":analysis:analysis-api-fir",