[AA] Allow specifying REx file contents in testdata.
Tests can now specify the code generated by a resolve extension from within the test's testdata. Module-level directives control whether resolve extensions are enabled for that module, as well as package names and source shadowing regexes. File-level directives allow a `// FILE:` block within the testdata to be converted into a KtResolveExtensionFile and removed from the module as a whole. (This requires a new `ModuleStructureTransformer`, because we need to be able to entirely remove the files in question.) Any test can add support for these directives by calling `KtResolveExtensionTestSupport.configure` from within their `configureTest` stanza. This allows this functionality to be used in conjuction with any test base class. ^KT-59329
This commit is contained in:
committed by
Ilya Kirillov
parent
7a69f13fd6
commit
734b87b97e
-94
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2023 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.test.cases.generated.cases.references;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.analysis.api.fir.test.configurators.AnalysisApiFirTestConfiguratorFactory;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModuleKind;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode;
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.references.AbstractMultiModuleReferenceResolveWithResolveExtensionTest;
|
||||
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 org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class FirIdeNormalAnalysisSourceModuleMultiModuleReferenceResolveWithResolveExtensionTestGenerated extends AbstractMultiModuleReferenceResolveWithResolveExtensionTest {
|
||||
@NotNull
|
||||
@Override
|
||||
public AnalysisApiTestConfigurator getConfigurator() {
|
||||
return AnalysisApiFirTestConfiguratorFactory.INSTANCE.createConfigurator(
|
||||
new AnalysisApiTestConfiguratorFactoryData(
|
||||
FrontendKind.Fir,
|
||||
TestModuleKind.Source,
|
||||
AnalysisSessionMode.Normal,
|
||||
AnalysisApiMode.Ide
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAllFilesPresentInReferenceResolve() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class ExtendedModuleDependency {
|
||||
@Test
|
||||
public void testAllFilesPresentInExtendedModuleDependency() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classMember.kt")
|
||||
public void testClassMember() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency/classMember.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("extensionFunction.kt")
|
||||
public void testExtensionFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency/extensionFunction.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedDeclaration.kt")
|
||||
public void testShadowedDeclaration() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency/shadowedDeclaration.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedJava.kt")
|
||||
public void testShadowedJava() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency/shadowedJava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedOverload.kt")
|
||||
public void testShadowedOverload() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency/shadowedOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("topLevelFunction.kt")
|
||||
public void testTopLevelFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency/topLevelFunction.kt");
|
||||
}
|
||||
}
|
||||
}
|
||||
+150
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
* Copyright 2010-2023 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.test.cases.generated.cases.references;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.analysis.api.fir.test.configurators.AnalysisApiFirTestConfiguratorFactory;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModuleKind;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode;
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.references.AbstractReferenceResolveWithResolveExtensionTest;
|
||||
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 org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("analysis/analysis-api/testData/resolveExtensions/referenceResolve")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class FirIdeNormalAnalysisSourceModuleReferenceResolveWithResolveExtensionTestGenerated extends AbstractReferenceResolveWithResolveExtensionTest {
|
||||
@NotNull
|
||||
@Override
|
||||
public AnalysisApiTestConfigurator getConfigurator() {
|
||||
return AnalysisApiFirTestConfiguratorFactory.INSTANCE.createConfigurator(
|
||||
new AnalysisApiTestConfiguratorFactoryData(
|
||||
FrontendKind.Fir,
|
||||
TestModuleKind.Source,
|
||||
AnalysisSessionMode.Normal,
|
||||
AnalysisApiMode.Ide
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAllFilesPresentInReferenceResolve() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/resolveExtensions/referenceResolve"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class MultiModule {
|
||||
@Test
|
||||
public void testAllFilesPresentInMultiModule() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class ExtendedModuleDependency {
|
||||
@Test
|
||||
public void testAllFilesPresentInExtendedModuleDependency() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classMember.kt")
|
||||
public void testClassMember() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency/classMember.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("extensionFunction.kt")
|
||||
public void testExtensionFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency/extensionFunction.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedDeclaration.kt")
|
||||
public void testShadowedDeclaration() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency/shadowedDeclaration.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedJava.kt")
|
||||
public void testShadowedJava() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency/shadowedJava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedOverload.kt")
|
||||
public void testShadowedOverload() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency/shadowedOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("topLevelFunction.kt")
|
||||
public void testTopLevelFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency/topLevelFunction.kt");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class SingleModule {
|
||||
@Test
|
||||
public void testAllFilesPresentInSingleModule() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classMember.kt")
|
||||
public void testClassMember() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule/classMember.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("extensionFunction.kt")
|
||||
public void testExtensionFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule/extensionFunction.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedDeclaration.kt")
|
||||
public void testShadowedDeclaration() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule/shadowedDeclaration.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedJava.kt")
|
||||
public void testShadowedJava() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule/shadowedJava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedOverload.kt")
|
||||
public void testShadowedOverload() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule/shadowedOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("topLevelFunction.kt")
|
||||
public void testTopLevelFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule/topLevelFunction.kt");
|
||||
}
|
||||
}
|
||||
}
|
||||
-84
@@ -1,84 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2023 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.test.cases.generated.cases.references;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.analysis.api.fir.test.configurators.AnalysisApiFirTestConfiguratorFactory;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModuleKind;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode;
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.references.AbstractSingleModuleReferenceResolveWithResolveExtensionTest;
|
||||
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 org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("analysis/analysis-api/testData/resolveExtensions/referenceResolve")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class FirIdeNormalAnalysisSourceModuleSingleModuleReferenceResolveWithResolveExtensionTestGenerated extends AbstractSingleModuleReferenceResolveWithResolveExtensionTest {
|
||||
@NotNull
|
||||
@Override
|
||||
public AnalysisApiTestConfigurator getConfigurator() {
|
||||
return AnalysisApiFirTestConfiguratorFactory.INSTANCE.createConfigurator(
|
||||
new AnalysisApiTestConfiguratorFactoryData(
|
||||
FrontendKind.Fir,
|
||||
TestModuleKind.Source,
|
||||
AnalysisSessionMode.Normal,
|
||||
AnalysisApiMode.Ide
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAllFilesPresentInReferenceResolve() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/resolveExtensions/referenceResolve"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classMember.kt")
|
||||
public void testClassMember() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/classMember.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("extensionFunction.kt")
|
||||
public void testExtensionFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/extensionFunction.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedDeclaration.kt")
|
||||
public void testShadowedDeclaration() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/shadowedDeclaration.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedJava.kt")
|
||||
public void testShadowedJava() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/shadowedJava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedOverload.kt")
|
||||
public void testShadowedOverload() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/shadowedOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("topLevelFunction.kt")
|
||||
public void testTopLevelFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/topLevelFunction.kt");
|
||||
}
|
||||
}
|
||||
-24
@@ -1,24 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2023 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.impl.base.test.cases.references
|
||||
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.util.KtMultiModuleResolveExtensionProviderForTest
|
||||
import org.jetbrains.kotlin.analysis.api.resolve.extensions.KtResolveExtensionFile
|
||||
import org.jetbrains.kotlin.analysis.api.resolve.extensions.KtResolveExtensionProvider
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
abstract class AbstractMultiModuleReferenceResolveWithResolveExtensionTest : AbstractReferenceResolveWithResolveExtensionTest() {
|
||||
override fun createResolveExtensionProvider(
|
||||
files: List<KtResolveExtensionFile>,
|
||||
packages: Set<FqName>,
|
||||
shadowedScope: GlobalSearchScope,
|
||||
): KtResolveExtensionProvider =
|
||||
KtMultiModuleResolveExtensionProviderForTest(files, packages, shadowedScope) { module ->
|
||||
module is KtSourceModule && module.moduleName == "extendedModule"
|
||||
}
|
||||
}
|
||||
+2
-64
@@ -5,74 +5,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.impl.base.test.cases.references
|
||||
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.util.KtResolveExtensionFileForTests
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.util.KtResolveExtensionProviderForTestPreAnalysisHandler
|
||||
import org.jetbrains.kotlin.analysis.api.resolve.extensions.KtResolveExtensionFile
|
||||
import org.jetbrains.kotlin.analysis.api.resolve.extensions.KtResolveExtensionProvider
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.test.bind
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.resolve.extensions.KtResolveExtensionTestSupport
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
|
||||
abstract class AbstractReferenceResolveWithResolveExtensionTest : AbstractReferenceResolveTest() {
|
||||
abstract fun createResolveExtensionProvider(
|
||||
files: List<KtResolveExtensionFile>,
|
||||
packages: Set<FqName>,
|
||||
shadowedScope: GlobalSearchScope,
|
||||
): KtResolveExtensionProvider
|
||||
|
||||
override fun configureTest(builder: TestConfigurationBuilder) {
|
||||
super.configureTest(builder)
|
||||
val provider = createResolveExtensionProvider(
|
||||
files = listOf(
|
||||
KtResolveExtensionFileForTests(
|
||||
"extension1.kt",
|
||||
packageName = FqName("generated"),
|
||||
topLevelClassifiersNames = setOf("GeneratedClass1"),
|
||||
topLevelCallableNames = setOf(
|
||||
"generatedTopLevelFunction1",
|
||||
"generatedTopLevelExtensionFunction1",
|
||||
"generatedOverloadedExtensionFunction",
|
||||
),
|
||||
fileText = """|package generated
|
||||
|
|
||||
|class GeneratedClass1 {
|
||||
| fun generatedClassMember1(): Int
|
||||
|}
|
||||
|
|
||||
|fun generatedTopLevelFunction1(): GeneratedClass2
|
||||
|
|
||||
|fun String.generatedTopLevelExtensionFunction1(boolean: Boolean): Int
|
||||
|
|
||||
|fun Any.generatedOverloadedExtensionFunction(): Int
|
||||
""".trimMargin()
|
||||
),
|
||||
KtResolveExtensionFileForTests(
|
||||
"extension2.kt",
|
||||
packageName = FqName("generated"),
|
||||
topLevelClassifiersNames = setOf("GeneratedClass2"),
|
||||
topLevelCallableNames = setOf(),
|
||||
fileText = """|package generated
|
||||
|
|
||||
|class GeneratedClass2 {
|
||||
| fun generatedClassMember2(): GeneratedClass1
|
||||
|}
|
||||
""".trimMargin(),
|
||||
)
|
||||
),
|
||||
packages = setOf(FqName("generated")),
|
||||
shadowedScope = object : GlobalSearchScope() {
|
||||
override fun contains(file: VirtualFile): Boolean = ".hidden." in file.name
|
||||
|
||||
override fun isSearchInModuleContent(aModule: Module): Boolean = false
|
||||
|
||||
override fun isSearchInLibraries(): Boolean = false
|
||||
}
|
||||
)
|
||||
with(builder) {
|
||||
usePreAnalysisHandlers(::KtResolveExtensionProviderForTestPreAnalysisHandler.bind(listOf(provider)))
|
||||
}
|
||||
KtResolveExtensionTestSupport.configure(builder)
|
||||
}
|
||||
}
|
||||
|
||||
-21
@@ -1,21 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2023 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.impl.base.test.cases.references
|
||||
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.util.KtSingleModuleResolveExtensionProviderForTest
|
||||
import org.jetbrains.kotlin.analysis.api.resolve.extensions.KtResolveExtensionFile
|
||||
import org.jetbrains.kotlin.analysis.api.resolve.extensions.KtResolveExtensionProvider
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
abstract class AbstractSingleModuleReferenceResolveWithResolveExtensionTest : AbstractReferenceResolveWithResolveExtensionTest() {
|
||||
override fun createResolveExtensionProvider(
|
||||
files: List<KtResolveExtensionFile>,
|
||||
packages: Set<FqName>,
|
||||
shadowedScope: GlobalSearchScope,
|
||||
): KtResolveExtensionProvider =
|
||||
KtSingleModuleResolveExtensionProviderForTest(files, packages, shadowedScope)
|
||||
}
|
||||
+15
-33
@@ -3,7 +3,7 @@
|
||||
* 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.impl.base.test.util
|
||||
package org.jetbrains.kotlin.analysis.api.impl.base.test.cases.resolve.extensions
|
||||
|
||||
import com.intellij.mock.MockProject
|
||||
import com.intellij.openapi.util.ModificationTracker
|
||||
@@ -19,46 +19,26 @@ import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.analysis.test.framework.services.environmentManager
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.test.services.PreAnalysisHandler
|
||||
import org.jetbrains.kotlin.test.services.TestModuleStructure
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
|
||||
class KtSingleModuleResolveExtensionProviderForTest(
|
||||
class KtResolveExtensionProviderForTest(
|
||||
private val files: List<KtResolveExtensionFile>,
|
||||
private val packages: Set<FqName>,
|
||||
private val shadowedScope: GlobalSearchScope,
|
||||
) : KtResolveExtensionProvider() {
|
||||
override fun provideExtensionsFor(module: KtModule): List<KtResolveExtension> {
|
||||
return listOf(KtResolveExtensionForTest(files, packages, shadowedScope))
|
||||
}
|
||||
}
|
||||
|
||||
class KtMultiModuleResolveExtensionProviderForTest(
|
||||
private val files: List<KtResolveExtensionFile>,
|
||||
private val packages: Set<FqName>,
|
||||
private val shadowedScope: GlobalSearchScope,
|
||||
private val hasResolveExtension: (KtModule) -> Boolean,
|
||||
private val hasResolveExtension: (KtModule) -> Boolean = { true }
|
||||
) : KtResolveExtensionProvider() {
|
||||
override fun provideExtensionsFor(module: KtModule): List<KtResolveExtension> {
|
||||
if (!hasResolveExtension(module)) return emptyList()
|
||||
return listOf(KtResolveExtensionForTest(files, packages, shadowedScope))
|
||||
}
|
||||
}
|
||||
|
||||
class KtResolveExtensionProviderForTestPreAnalysisHandler(
|
||||
testServices: TestServices,
|
||||
private val providers: List<KtResolveExtensionProvider>,
|
||||
) : PreAnalysisHandler(testServices) {
|
||||
override fun preprocessModuleStructure(moduleStructure: TestModuleStructure) {
|
||||
fun register(testServices: TestServices) {
|
||||
val project = testServices.environmentManager.getProject() as MockProject
|
||||
val extensionPoint = project.extensionArea.getExtensionPoint(KtResolveExtensionProvider.EP_NAME)
|
||||
for (provider in providers) {
|
||||
extensionPoint.registerExtension(provider, project)
|
||||
}
|
||||
val extensionPoint = project.extensionArea.getExtensionPoint(EP_NAME)
|
||||
extensionPoint.registerExtension(this, project)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class KtResolveExtensionForTest(
|
||||
private val files: List<KtResolveExtensionFile>,
|
||||
private val packages: Set<FqName>,
|
||||
@@ -76,6 +56,7 @@ class KtResolveExtensionFileForTests(
|
||||
topLevelClassifiersNames: Set<String>,
|
||||
topLevelCallableNames: Set<String>,
|
||||
private val fileText: String,
|
||||
private val psiTargetProvider: KtResolveExtensionReferencePsiTargetsProvider? = null
|
||||
) : KtResolveExtensionFile() {
|
||||
|
||||
private val topLevelClassifiersNames: Set<Name> = topLevelClassifiersNames.mapTo(mutableSetOf()) { Name.identifier(it) }
|
||||
@@ -87,11 +68,12 @@ class KtResolveExtensionFileForTests(
|
||||
|
||||
override fun buildFileText(): String = fileText
|
||||
|
||||
override fun createPsiTargetsProvider(): KtResolveExtensionReferencePsiTargetsProvider {
|
||||
return object : KtResolveExtensionReferencePsiTargetsProvider() {
|
||||
override fun KtAnalysisSession.getReferenceTargetsForSymbol(symbol: KtSymbol): Collection<PsiElement> {
|
||||
return emptyList()
|
||||
}
|
||||
}
|
||||
private object EmptyReferencePsiTargetsProvider : KtResolveExtensionReferencePsiTargetsProvider() {
|
||||
override fun KtAnalysisSession.getReferenceTargetsForSymbol(symbol: KtSymbol): Collection<PsiElement> =
|
||||
emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
override fun createPsiTargetsProvider(): KtResolveExtensionReferencePsiTargetsProvider =
|
||||
psiTargetProvider ?: EmptyReferencePsiTargetsProvider
|
||||
}
|
||||
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
/*
|
||||
* Copyright 2010-2023 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.impl.base.test.cases.resolve.extensions
|
||||
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analysis.api.resolve.extensions.KtResolveExtensionFile
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.test.TestInfrastructureInternals
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives
|
||||
import org.jetbrains.kotlin.test.directives.model.DirectiveApplicability
|
||||
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
||||
import org.jetbrains.kotlin.test.model.TestFile
|
||||
import org.jetbrains.kotlin.test.model.TestModule
|
||||
import org.jetbrains.kotlin.test.services.ModuleStructureTransformer
|
||||
import org.jetbrains.kotlin.test.services.TestModuleStructure
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
import org.jetbrains.kotlin.test.services.impl.TestModuleStructureImpl
|
||||
|
||||
object KtResolveExtensionTestSupport {
|
||||
object Directives : SimpleDirectivesContainer() {
|
||||
val WITH_RESOLVE_EXTENSION by directive(
|
||||
"Enable resolve extension for this module",
|
||||
DirectiveApplicability.Module,
|
||||
)
|
||||
|
||||
val RESOLVE_EXTENSION_PACKAGE by valueDirective(
|
||||
"Package name for resolve extension or resolve extension file",
|
||||
DirectiveApplicability.Any,
|
||||
::FqName,
|
||||
)
|
||||
val RESOLVE_EXTENSION_SHADOWED by valueDirective(
|
||||
"File name regex(es) to shadow in resolve extension",
|
||||
DirectiveApplicability.Module,
|
||||
::Regex,
|
||||
)
|
||||
|
||||
val RESOLVE_EXTENSION_FILE by directive(
|
||||
"Treat this file as a KtResolveExtensionFile and remove it from the module",
|
||||
DirectiveApplicability.File,
|
||||
)
|
||||
val RESOLVE_EXTENSION_CLASSIFIER by stringDirective(
|
||||
"Name(s) of top-level classifier(s) in this resolve extension file",
|
||||
DirectiveApplicability.File,
|
||||
)
|
||||
val RESOLVE_EXTENSION_CALLABLE by stringDirective(
|
||||
"Names of top-level callables in this resolve extension file",
|
||||
DirectiveApplicability.File,
|
||||
)
|
||||
}
|
||||
|
||||
@OptIn(TestInfrastructureInternals::class)
|
||||
private class ResolveExtensionDirectiveModuleStructureTransformer(
|
||||
private val testServices: TestServices,
|
||||
) : ModuleStructureTransformer() {
|
||||
override fun transformModuleStructure(moduleStructure: TestModuleStructure): TestModuleStructure {
|
||||
check(Directives.WITH_RESOLVE_EXTENSION in moduleStructure.allDirectives) {
|
||||
"configureResolveExtensions() was called, but no modules specify WITH_RESOLVE_EXTENSION."
|
||||
}
|
||||
|
||||
return TestModuleStructureImpl(
|
||||
moduleStructure.modules.map { it.transformAndRegisterResolveExtension() },
|
||||
moduleStructure.originalTestDataFiles,
|
||||
)
|
||||
}
|
||||
|
||||
private fun TestModule.transformAndRegisterResolveExtension(): TestModule {
|
||||
val (resolveExtensionTestFiles, regularFiles) = files.partition { Directives.RESOLVE_EXTENSION_FILE in it.directives }
|
||||
if (Directives.WITH_RESOLVE_EXTENSION !in directives) {
|
||||
check(resolveExtensionTestFiles.isEmpty()) {
|
||||
"Module $name has resolve extension files, but does not specify WITH_RESOLVE_EXTENSION"
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
val packageNames = directives[Directives.RESOLVE_EXTENSION_PACKAGE].toSet()
|
||||
check(packageNames.isNotEmpty()) {
|
||||
"Module $name does not specify any RESOLVE_EXTENSION_PACKAGE"
|
||||
}
|
||||
|
||||
val shadowedPatterns = directives[Directives.RESOLVE_EXTENSION_SHADOWED]
|
||||
val shadowedScope = if (shadowedPatterns.isNotEmpty()) {
|
||||
object : GlobalSearchScope() {
|
||||
override fun contains(file: VirtualFile): Boolean =
|
||||
shadowedPatterns.any { it.containsMatchIn(file.name) }
|
||||
|
||||
override fun isSearchInModuleContent(module: Module): Boolean = true
|
||||
|
||||
override fun isSearchInLibraries(): Boolean = true
|
||||
}
|
||||
} else {
|
||||
GlobalSearchScope.EMPTY_SCOPE
|
||||
}
|
||||
|
||||
val singleModulePackageName = packageNames.singleOrNull()
|
||||
val ktResolveExtensionFiles =
|
||||
resolveExtensionTestFiles.map { it.toKtResolveExtensionFile(singleModulePackageName) }
|
||||
|
||||
val provider = KtResolveExtensionProviderForTest(ktResolveExtensionFiles, packageNames, shadowedScope) {
|
||||
it is KtSourceModule && it.moduleName == name
|
||||
}
|
||||
provider.register(testServices)
|
||||
|
||||
return this.copy(files = regularFiles)
|
||||
}
|
||||
|
||||
private fun TestFile.toKtResolveExtensionFile(moduleSinglePackageName: FqName?): KtResolveExtensionFile {
|
||||
val packageName = directives[Directives.RESOLVE_EXTENSION_PACKAGE].singleOrNull()
|
||||
?: moduleSinglePackageName
|
||||
?: error("Extension file $name must specify exactly one RESOLVE_EXTENSION_PACKAGE")
|
||||
val classifierNames = directives[Directives.RESOLVE_EXTENSION_CLASSIFIER].toSet()
|
||||
val callableNames = directives[Directives.RESOLVE_EXTENSION_CALLABLE].toSet()
|
||||
check(classifierNames.isNotEmpty() || callableNames.isNotEmpty()) {
|
||||
"Extension file $name does not specify any RESOLVE_EXTENSION_CLASSIFIER or RESOLVE_EXTENSION_CALLABLE"
|
||||
}
|
||||
|
||||
return KtResolveExtensionFileForTests(
|
||||
fileName = name,
|
||||
packageName = packageName,
|
||||
topLevelClassifiersNames = classifierNames,
|
||||
topLevelCallableNames = callableNames,
|
||||
fileText = originalContent,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(TestInfrastructureInternals::class)
|
||||
fun configure(builder: TestConfigurationBuilder) = with(builder) {
|
||||
defaultDirectives {
|
||||
+ConfigurationDirectives.WITH_STDLIB
|
||||
}
|
||||
useDirectives(Directives)
|
||||
useModuleStructureTransformers(KtResolveExtensionTestSupport::ResolveExtensionDirectiveModuleStructureTransformer)
|
||||
}
|
||||
}
|
||||
-94
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2023 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.standalone.fir.test.cases.generated.cases.references;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.AnalysisApiFirStandaloneModeTestConfiguratorFactory;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModuleKind;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode;
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.references.AbstractMultiModuleReferenceResolveWithResolveExtensionTest;
|
||||
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 org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class FirStandaloneNormalAnalysisSourceModuleMultiModuleReferenceResolveWithResolveExtensionTestGenerated extends AbstractMultiModuleReferenceResolveWithResolveExtensionTest {
|
||||
@NotNull
|
||||
@Override
|
||||
public AnalysisApiTestConfigurator getConfigurator() {
|
||||
return AnalysisApiFirStandaloneModeTestConfiguratorFactory.INSTANCE.createConfigurator(
|
||||
new AnalysisApiTestConfiguratorFactoryData(
|
||||
FrontendKind.Fir,
|
||||
TestModuleKind.Source,
|
||||
AnalysisSessionMode.Normal,
|
||||
AnalysisApiMode.Standalone
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAllFilesPresentInReferenceResolve() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class ExtendedModuleDependency {
|
||||
@Test
|
||||
public void testAllFilesPresentInExtendedModuleDependency() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classMember.kt")
|
||||
public void testClassMember() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency/classMember.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("extensionFunction.kt")
|
||||
public void testExtensionFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency/extensionFunction.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedDeclaration.kt")
|
||||
public void testShadowedDeclaration() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency/shadowedDeclaration.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedJava.kt")
|
||||
public void testShadowedJava() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency/shadowedJava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedOverload.kt")
|
||||
public void testShadowedOverload() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency/shadowedOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("topLevelFunction.kt")
|
||||
public void testTopLevelFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/multiModule/referenceResolve/extendedModuleDependency/topLevelFunction.kt");
|
||||
}
|
||||
}
|
||||
}
|
||||
+150
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
* Copyright 2010-2023 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.standalone.fir.test.cases.generated.cases.references;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.AnalysisApiFirStandaloneModeTestConfiguratorFactory;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModuleKind;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode;
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.references.AbstractReferenceResolveWithResolveExtensionTest;
|
||||
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 org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("analysis/analysis-api/testData/resolveExtensions/referenceResolve")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class FirStandaloneNormalAnalysisSourceModuleReferenceResolveWithResolveExtensionTestGenerated extends AbstractReferenceResolveWithResolveExtensionTest {
|
||||
@NotNull
|
||||
@Override
|
||||
public AnalysisApiTestConfigurator getConfigurator() {
|
||||
return AnalysisApiFirStandaloneModeTestConfiguratorFactory.INSTANCE.createConfigurator(
|
||||
new AnalysisApiTestConfiguratorFactoryData(
|
||||
FrontendKind.Fir,
|
||||
TestModuleKind.Source,
|
||||
AnalysisSessionMode.Normal,
|
||||
AnalysisApiMode.Standalone
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAllFilesPresentInReferenceResolve() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/resolveExtensions/referenceResolve"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class MultiModule {
|
||||
@Test
|
||||
public void testAllFilesPresentInMultiModule() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class ExtendedModuleDependency {
|
||||
@Test
|
||||
public void testAllFilesPresentInExtendedModuleDependency() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classMember.kt")
|
||||
public void testClassMember() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency/classMember.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("extensionFunction.kt")
|
||||
public void testExtensionFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency/extensionFunction.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedDeclaration.kt")
|
||||
public void testShadowedDeclaration() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency/shadowedDeclaration.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedJava.kt")
|
||||
public void testShadowedJava() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency/shadowedJava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedOverload.kt")
|
||||
public void testShadowedOverload() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency/shadowedOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("topLevelFunction.kt")
|
||||
public void testTopLevelFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/multiModule/extendedModuleDependency/topLevelFunction.kt");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class SingleModule {
|
||||
@Test
|
||||
public void testAllFilesPresentInSingleModule() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classMember.kt")
|
||||
public void testClassMember() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule/classMember.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("extensionFunction.kt")
|
||||
public void testExtensionFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule/extensionFunction.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedDeclaration.kt")
|
||||
public void testShadowedDeclaration() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule/shadowedDeclaration.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedJava.kt")
|
||||
public void testShadowedJava() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule/shadowedJava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedOverload.kt")
|
||||
public void testShadowedOverload() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule/shadowedOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("topLevelFunction.kt")
|
||||
public void testTopLevelFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/singleModule/topLevelFunction.kt");
|
||||
}
|
||||
}
|
||||
}
|
||||
-84
@@ -1,84 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2023 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.standalone.fir.test.cases.generated.cases.references;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.AnalysisApiFirStandaloneModeTestConfiguratorFactory;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModuleKind;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode;
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.references.AbstractSingleModuleReferenceResolveWithResolveExtensionTest;
|
||||
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 org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("analysis/analysis-api/testData/resolveExtensions/referenceResolve")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class FirStandaloneNormalAnalysisSourceModuleSingleModuleReferenceResolveWithResolveExtensionTestGenerated extends AbstractSingleModuleReferenceResolveWithResolveExtensionTest {
|
||||
@NotNull
|
||||
@Override
|
||||
public AnalysisApiTestConfigurator getConfigurator() {
|
||||
return AnalysisApiFirStandaloneModeTestConfiguratorFactory.INSTANCE.createConfigurator(
|
||||
new AnalysisApiTestConfiguratorFactoryData(
|
||||
FrontendKind.Fir,
|
||||
TestModuleKind.Source,
|
||||
AnalysisSessionMode.Normal,
|
||||
AnalysisApiMode.Standalone
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAllFilesPresentInReferenceResolve() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/resolveExtensions/referenceResolve"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classMember.kt")
|
||||
public void testClassMember() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/classMember.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("extensionFunction.kt")
|
||||
public void testExtensionFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/extensionFunction.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedDeclaration.kt")
|
||||
public void testShadowedDeclaration() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/shadowedDeclaration.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedJava.kt")
|
||||
public void testShadowedJava() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/shadowedJava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("shadowedOverload.kt")
|
||||
public void testShadowedOverload() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/shadowedOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("topLevelFunction.kt")
|
||||
public void testTopLevelFunction() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/resolveExtensions/referenceResolve/topLevelFunction.kt");
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
// MODULE: extendedModule
|
||||
|
||||
// MODULE: dependency2
|
||||
|
||||
// MODULE: main(extendedModule, dependency2)()()
|
||||
import generated.*
|
||||
|
||||
fun main() {
|
||||
val a = GeneratedClass2()
|
||||
a.gener<caret>atedClassMember2()
|
||||
}
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
// MODULE: extendedModule
|
||||
|
||||
// MODULE: dependency2
|
||||
|
||||
// MODULE: main(extendedModule, dependency2)()()
|
||||
import generated.*
|
||||
|
||||
fun main() {
|
||||
"string".generatedTopLeve<caret>lExtensionFunction1(true)
|
||||
}
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
// MODULE: extendedModule
|
||||
|
||||
// MODULE: dependency2
|
||||
|
||||
// MODULE: main(extendedModule, dependency2)()()
|
||||
import generated.*
|
||||
|
||||
fun main() {
|
||||
generatedTopLevelFunc<caret>tion1()
|
||||
}
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
import generated.*
|
||||
|
||||
fun main() {
|
||||
val a = GeneratedClass2()
|
||||
a.gener<caret>atedClassMember2()
|
||||
}
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
import generated.*
|
||||
|
||||
fun main() {
|
||||
"string".generatedTopLeve<caret>lExtensionFunction1(true)
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
// MODULE: extendedModule
|
||||
// WITH_RESOLVE_EXTENSION
|
||||
// RESOLVE_EXTENSION_PACKAGE: generated
|
||||
|
||||
// FILE: resolve1.kt
|
||||
// RESOLVE_EXTENSION_FILE
|
||||
package generated
|
||||
|
||||
// RESOLVE_EXTENSION_CLASSIFIER: GeneratedClass1
|
||||
class GeneratedClass1
|
||||
|
||||
// FILE: resolve2.kt
|
||||
// RESOLVE_EXTENSION_FILE
|
||||
package generated
|
||||
|
||||
// RESOLVE_EXTENSION_CLASSIFIER: GeneratedClass2
|
||||
class GeneratedClass2() {
|
||||
fun generatedClassMember2(): GeneratedClass1 = TODO()
|
||||
}
|
||||
|
||||
// MODULE: dependency2
|
||||
|
||||
// MODULE: main(extendedModule, dependency2)()()
|
||||
import generated.*
|
||||
|
||||
fun main() {
|
||||
val a = GeneratedClass2()
|
||||
a.gener<caret>atedClassMember2()
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// MODULE: extendedModule
|
||||
// WITH_RESOLVE_EXTENSION
|
||||
// RESOLVE_EXTENSION_PACKAGE: generated
|
||||
|
||||
// FILE: extension.kt
|
||||
// RESOLVE_EXTENSION_FILE
|
||||
package generated
|
||||
|
||||
// RESOLVE_EXTENSION_CALLABLE: generatedTopLevelExtensionFunction1
|
||||
fun String.generatedTopLevelExtensionFunction1(boolean: Boolean): Int
|
||||
|
||||
// MODULE: dependency2
|
||||
|
||||
// MODULE: main(extendedModule, dependency2)()()
|
||||
import generated.*
|
||||
|
||||
fun main() {
|
||||
"string".generatedTopLeve<caret>lExtensionFunction1(true)
|
||||
}
|
||||
+4
@@ -1,6 +1,10 @@
|
||||
// UNRESOLVED_REFERENCE
|
||||
|
||||
// MODULE: extendedModule
|
||||
// WITH_RESOLVE_EXTENSION
|
||||
// RESOLVE_EXTENSION_PACKAGE: generated
|
||||
// RESOLVE_EXTENSION_SHADOWED: \.hidden\.kt$
|
||||
|
||||
// FILE: declarations.hidden.kt
|
||||
package foo
|
||||
|
||||
+4
@@ -1,6 +1,10 @@
|
||||
// UNRESOLVED_REFERENCE
|
||||
|
||||
// MODULE: extendedModule
|
||||
// WITH_RESOLVE_EXTENSION
|
||||
// RESOLVE_EXTENSION_PACKAGE: generated
|
||||
// RESOLVE_EXTENSION_SHADOWED: \.hidden\.[a-z]+$
|
||||
|
||||
// FILE: TestClass.hidden.java
|
||||
package foo;
|
||||
|
||||
+11
@@ -1,4 +1,15 @@
|
||||
// MODULE: extendedModule
|
||||
// WITH_RESOLVE_EXTENSION
|
||||
// RESOLVE_EXTENSION_PACKAGE: generated
|
||||
// RESOLVE_EXTENSION_SHADOWED: \.hidden\.kt$
|
||||
|
||||
// FILE: extension.kt
|
||||
// RESOLVE_EXTENSION_FILE
|
||||
package generated
|
||||
|
||||
// RESOLVE_EXTENSION_CALLABLE: generatedOverloadedExtensionFunction
|
||||
fun Any.generatedOverloadedExtensionFunction(): Int = TODO()
|
||||
|
||||
// FILE: generated.hidden.kt
|
||||
package generated
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
// MODULE: extendedModule
|
||||
// WITH_RESOLVE_EXTENSION
|
||||
// RESOLVE_EXTENSION_PACKAGE: generated
|
||||
|
||||
// FILE: extension.kt
|
||||
// RESOLVE_EXTENSION_FILE
|
||||
package generated
|
||||
|
||||
// RESOLVE_EXTENSION_CLASSIFIER: GeneratedClass1
|
||||
class GeneratedClass1
|
||||
|
||||
// RESOLVE_EXTENSION_CALLABLE: generatedTopLevelFunction1
|
||||
fun generatedTopLevelFunction1(): GeneratedClass2
|
||||
|
||||
// FILE: extension2.kt
|
||||
// RESOLVE_EXTENSION_FILE
|
||||
package generated
|
||||
|
||||
// RESOLVE_EXTENSION_CLASSIFIER: GeneratedClass2
|
||||
class GeneratedClass2 {
|
||||
fun generatedClassMember2(): GeneratedClass1
|
||||
}
|
||||
|
||||
// MODULE: dependency2
|
||||
|
||||
// MODULE: main(extendedModule, dependency2)()()
|
||||
import generated.*
|
||||
|
||||
fun main() {
|
||||
generatedTopLevelFunc<caret>tion1()
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
// FILE: generated.hidden.kt
|
||||
package generated
|
||||
|
||||
fun String.generatedOverloadedExtensionFunction(): Int = TODO()
|
||||
|
||||
// FILE: main.kt
|
||||
import generated.*
|
||||
|
||||
fun main() {
|
||||
"string".generatedOverloadedExtension<caret>Function()
|
||||
}
|
||||
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
// WITH_RESOLVE_EXTENSION
|
||||
// RESOLVE_EXTENSION_PACKAGE: generated
|
||||
|
||||
// FILE: resolve1.kt
|
||||
// RESOLVE_EXTENSION_FILE
|
||||
package generated
|
||||
|
||||
// RESOLVE_EXTENSION_CLASSIFIER: GeneratedClass1
|
||||
class GeneratedClass1
|
||||
|
||||
// FILE: resolve2.kt
|
||||
// RESOLVE_EXTENSION_FILE
|
||||
package generated
|
||||
|
||||
// RESOLVE_EXTENSION_CLASSIFIER: GeneratedClass2
|
||||
class GeneratedClass2() {
|
||||
fun generatedClassMember2(): GeneratedClass1 = TODO()
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
import generated.*
|
||||
|
||||
fun main() {
|
||||
val a = GeneratedClass2()
|
||||
a.gener<caret>atedClassMember2()
|
||||
}
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
// WITH_RESOLVE_EXTENSION
|
||||
// RESOLVE_EXTENSION_PACKAGE: generated
|
||||
|
||||
// FILE: extension.kt
|
||||
// RESOLVE_EXTENSION_FILE
|
||||
package generated
|
||||
|
||||
// RESOLVE_EXTENSION_CALLABLE: generatedTopLevelExtensionFunction1
|
||||
fun String.generatedTopLevelExtensionFunction1(boolean: Boolean): Int
|
||||
|
||||
// FILE: main.kt
|
||||
import generated.*
|
||||
|
||||
fun main() {
|
||||
"string".generatedTopLeve<caret>lExtensionFunction1(true)
|
||||
}
|
||||
+3
@@ -1,3 +1,6 @@
|
||||
// WITH_RESOLVE_EXTENSION
|
||||
// RESOLVE_EXTENSION_PACKAGE: generated
|
||||
// RESOLVE_EXTENSION_SHADOWED: \.hidden\.kt$
|
||||
// UNRESOLVED_REFERENCE
|
||||
|
||||
// FILE: declarations.hidden.kt
|
||||
+3
@@ -1,3 +1,6 @@
|
||||
// WITH_RESOLVE_EXTENSION
|
||||
// RESOLVE_EXTENSION_PACKAGE: generated
|
||||
// RESOLVE_EXTENSION_SHADOWED: \.hidden\.[a-z]+$
|
||||
// UNRESOLVED_REFERENCE
|
||||
|
||||
// FILE: TestClass.hidden.java
|
||||
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
// WITH_RESOLVE_EXTENSION
|
||||
// RESOLVE_EXTENSION_PACKAGE: generated
|
||||
// RESOLVE_EXTENSION_SHADOWED: \.hidden\.kt$
|
||||
|
||||
// FILE: extension.kt
|
||||
// RESOLVE_EXTENSION_FILE
|
||||
package generated
|
||||
|
||||
// RESOLVE_EXTENSION_CALLABLE: generatedOverloadedExtensionFunction
|
||||
fun Any.generatedOverloadedExtensionFunction(): Int = TODO()
|
||||
|
||||
// FILE: generated.hidden.kt
|
||||
package generated
|
||||
|
||||
fun String.generatedOverloadedExtensionFunction(): Int = TODO()
|
||||
|
||||
// FILE: main.kt
|
||||
import generated.*
|
||||
|
||||
fun main() {
|
||||
"string".generatedOverloadedExtension<caret>Function()
|
||||
}
|
||||
Vendored
+28
@@ -0,0 +1,28 @@
|
||||
// WITH_RESOLVE_EXTENSION
|
||||
// RESOLVE_EXTENSION_PACKAGE: generated
|
||||
|
||||
// FILE: extension.kt
|
||||
// RESOLVE_EXTENSION_FILE
|
||||
package generated
|
||||
|
||||
// RESOLVE_EXTENSION_CLASSIFIER: GeneratedClass1
|
||||
class GeneratedClass1
|
||||
|
||||
// RESOLVE_EXTENSION_CALLABLE: generatedTopLevelFunction1
|
||||
fun generatedTopLevelFunction1(): GeneratedClass2
|
||||
|
||||
// FILE: extension2.kt
|
||||
// RESOLVE_EXTENSION_FILE
|
||||
package generated
|
||||
|
||||
// RESOLVE_EXTENSION_CLASSIFIER: GeneratedClass2
|
||||
class GeneratedClass2 {
|
||||
fun generatedClassMember2(): GeneratedClass1
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
import generated.*
|
||||
|
||||
fun main() {
|
||||
generatedTopLevelFunc<caret>tion1()
|
||||
}
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
import generated.*
|
||||
|
||||
fun main() {
|
||||
generatedTopLevelFunc<caret>tion1()
|
||||
}
|
||||
+9
-2
@@ -32,7 +32,7 @@ class TestConfigurationBuilder {
|
||||
private val preAnalysisHandlers: MutableList<Constructor<PreAnalysisHandler>> = mutableListOf()
|
||||
|
||||
private val additionalSourceProviders: MutableList<Constructor<AdditionalSourceProvider>> = mutableListOf()
|
||||
private val moduleStructureTransformers: MutableList<ModuleStructureTransformer> = mutableListOf()
|
||||
private val moduleStructureTransformers: MutableList<Constructor<ModuleStructureTransformer>> = mutableListOf()
|
||||
|
||||
private val metaTestConfigurators: MutableList<Constructor<MetaTestConfigurator>> = mutableListOf()
|
||||
private val afterAnalysisCheckers: MutableList<Constructor<AfterAnalysisChecker>> = mutableListOf()
|
||||
@@ -180,6 +180,13 @@ class TestConfigurationBuilder {
|
||||
|
||||
@TestInfrastructureInternals
|
||||
fun useModuleStructureTransformers(vararg transformers: ModuleStructureTransformer) {
|
||||
for (transformer in transformers) {
|
||||
moduleStructureTransformers += { _ -> transformer }
|
||||
}
|
||||
}
|
||||
|
||||
@TestInfrastructureInternals
|
||||
fun useModuleStructureTransformers(vararg transformers: Constructor<ModuleStructureTransformer>) {
|
||||
moduleStructureTransformers += transformers
|
||||
}
|
||||
|
||||
@@ -265,7 +272,7 @@ class TestConfigurationBuilder {
|
||||
get() = builder.preAnalysisHandlers
|
||||
val additionalSourceProviders: List<Constructor<AdditionalSourceProvider>>
|
||||
get() = builder.additionalSourceProviders
|
||||
val moduleStructureTransformers: List<ModuleStructureTransformer>
|
||||
val moduleStructureTransformers: List<Constructor<ModuleStructureTransformer>>
|
||||
get() = builder.moduleStructureTransformers
|
||||
val metaTestConfigurators: List<Constructor<MetaTestConfigurator>>
|
||||
get() = builder.metaTestConfigurators
|
||||
|
||||
+2
-2
@@ -34,7 +34,7 @@ class TestConfigurationImpl(
|
||||
|
||||
additionalSourceProviders: List<Constructor<AdditionalSourceProvider>>,
|
||||
preAnalysisHandlers: List<Constructor<PreAnalysisHandler>>,
|
||||
moduleStructureTransformers: List<ModuleStructureTransformer>,
|
||||
moduleStructureTransformers: List<Constructor<ModuleStructureTransformer>>,
|
||||
metaTestConfigurators: List<Constructor<MetaTestConfigurator>>,
|
||||
afterAnalysisCheckers: List<Constructor<AfterAnalysisChecker>>,
|
||||
|
||||
@@ -83,7 +83,7 @@ class TestConfigurationImpl(
|
||||
additionalSourceProviders
|
||||
.map { it.invoke(testServices) }
|
||||
.also { it.registerDirectivesAndServices() },
|
||||
moduleStructureTransformers,
|
||||
moduleStructureTransformers.map { it(testServices) },
|
||||
this.environmentConfigurators
|
||||
)
|
||||
|
||||
|
||||
+1
-5
@@ -90,13 +90,9 @@ private fun AnalysisApiTestGroup.generateResolveExtensionsTests() {
|
||||
frontendIs(FrontendKind.Fir) and
|
||||
testModuleKindIs(TestModuleKind.Source)
|
||||
) {
|
||||
test(AbstractSingleModuleReferenceResolveWithResolveExtensionTest::class) {
|
||||
test(AbstractReferenceResolveWithResolveExtensionTest::class) {
|
||||
model("referenceResolve")
|
||||
}
|
||||
|
||||
test(AbstractMultiModuleReferenceResolveWithResolveExtensionTest::class) {
|
||||
model("multiModule/referenceResolve")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user