[TEST] Migrate AbstractDiagnosticsNativeTest to new test runners
This commit is contained in:
+10
-10
@@ -3,52 +3,52 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* 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.checkers;
|
package org.jetbrains.kotlin.test.runners;
|
||||||
|
|
||||||
import com.intellij.testFramework.TestDataPath;
|
import com.intellij.testFramework.TestDataPath;
|
||||||
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
|
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
|
||||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||||
import org.jetbrains.kotlin.test.TestMetadata;
|
import org.jetbrains.kotlin.test.TestMetadata;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.jupiter.api.Nested;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
|
/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */
|
||||||
@SuppressWarnings("all")
|
@SuppressWarnings("all")
|
||||||
@TestMetadata("compiler/testData/diagnostics/nativeTests")
|
@TestMetadata("compiler/testData/diagnostics/nativeTests")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
|
||||||
public class DiagnosticsNativeTestGenerated extends AbstractDiagnosticsNativeTest {
|
public class DiagnosticsNativeTestGenerated extends AbstractDiagnosticsNativeTest {
|
||||||
private void runTest(String testDataFilePath) throws Exception {
|
@Test
|
||||||
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testAllFilesPresentInNativeTests() throws Exception {
|
public void testAllFilesPresentInNativeTests() throws Exception {
|
||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/nativeTests"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/nativeTests"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
@TestMetadata("sharedImmutable.kt")
|
@TestMetadata("sharedImmutable.kt")
|
||||||
public void testSharedImmutable() throws Exception {
|
public void testSharedImmutable() throws Exception {
|
||||||
runTest("compiler/testData/diagnostics/nativeTests/sharedImmutable.kt");
|
runTest("compiler/testData/diagnostics/nativeTests/sharedImmutable.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
@TestMetadata("threadLocal.kt")
|
@TestMetadata("threadLocal.kt")
|
||||||
public void testThreadLocal() throws Exception {
|
public void testThreadLocal() throws Exception {
|
||||||
runTest("compiler/testData/diagnostics/nativeTests/threadLocal.kt");
|
runTest("compiler/testData/diagnostics/nativeTests/threadLocal.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
@TestMetadata("throws.kt")
|
@TestMetadata("throws.kt")
|
||||||
public void testThrows() throws Exception {
|
public void testThrows() throws Exception {
|
||||||
runTest("compiler/testData/diagnostics/nativeTests/throws.kt");
|
runTest("compiler/testData/diagnostics/nativeTests/throws.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
@TestMetadata("throwsClash.kt")
|
@TestMetadata("throwsClash.kt")
|
||||||
public void testThrowsClash() throws Exception {
|
public void testThrowsClash() throws Exception {
|
||||||
runTest("compiler/testData/diagnostics/nativeTests/throwsClash.kt");
|
runTest("compiler/testData/diagnostics/nativeTests/throwsClash.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
@TestMetadata("topLevelSingleton.kt")
|
@TestMetadata("topLevelSingleton.kt")
|
||||||
public void testTopLevelSingleton() throws Exception {
|
public void testTopLevelSingleton() throws Exception {
|
||||||
runTest("compiler/testData/diagnostics/nativeTests/topLevelSingleton.kt");
|
runTest("compiler/testData/diagnostics/nativeTests/topLevelSingleton.kt");
|
||||||
+51
-20
@@ -9,6 +9,8 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonResolverForModuleFactory
|
import org.jetbrains.kotlin.analyzer.common.CommonResolverForModuleFactory
|
||||||
|
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||||
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns
|
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackagePartProvider
|
import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackagePartProvider
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace
|
import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace
|
||||||
@@ -17,8 +19,8 @@ import org.jetbrains.kotlin.config.CompilerConfiguration
|
|||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys.JVM_TARGET
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys.JVM_TARGET
|
||||||
import org.jetbrains.kotlin.config.JvmTarget
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
|
||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
|
import org.jetbrains.kotlin.context.ModuleContext
|
||||||
import org.jetbrains.kotlin.context.ProjectContext
|
import org.jetbrains.kotlin.context.ProjectContext
|
||||||
import org.jetbrains.kotlin.context.withModule
|
import org.jetbrains.kotlin.context.withModule
|
||||||
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
||||||
@@ -31,6 +33,7 @@ import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS
|
|||||||
import org.jetbrains.kotlin.js.config.JsConfig
|
import org.jetbrains.kotlin.js.config.JsConfig
|
||||||
import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver
|
import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.native.FakeTopDownAnalyzerFacadeForNative
|
||||||
import org.jetbrains.kotlin.platform.isCommon
|
import org.jetbrains.kotlin.platform.isCommon
|
||||||
import org.jetbrains.kotlin.platform.js.isJs
|
import org.jetbrains.kotlin.platform.js.isJs
|
||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
@@ -44,6 +47,7 @@ import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
|
|||||||
import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer
|
import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer
|
||||||
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
|
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.MetadataPartProvider
|
import org.jetbrains.kotlin.serialization.deserialization.MetadataPartProvider
|
||||||
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
|
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
|
||||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||||
import org.jetbrains.kotlin.test.model.FrontendFacade
|
import org.jetbrains.kotlin.test.model.FrontendFacade
|
||||||
@@ -99,7 +103,6 @@ class ClassicFrontendFacade(
|
|||||||
configuration,
|
configuration,
|
||||||
packagePartProviderFactory,
|
packagePartProviderFactory,
|
||||||
ktFiles,
|
ktFiles,
|
||||||
languageVersionSettings,
|
|
||||||
dependentDescriptors,
|
dependentDescriptors,
|
||||||
hasCommonModules
|
hasCommonModules
|
||||||
)
|
)
|
||||||
@@ -131,7 +134,6 @@ class ClassicFrontendFacade(
|
|||||||
configuration: CompilerConfiguration,
|
configuration: CompilerConfiguration,
|
||||||
packagePartProviderFactory: (GlobalSearchScope) -> JvmPackagePartProvider,
|
packagePartProviderFactory: (GlobalSearchScope) -> JvmPackagePartProvider,
|
||||||
files: List<KtFile>,
|
files: List<KtFile>,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
|
||||||
dependentDescriptors: List<ModuleDescriptorImpl>,
|
dependentDescriptors: List<ModuleDescriptorImpl>,
|
||||||
hasCommonModules: Boolean
|
hasCommonModules: Boolean
|
||||||
): AnalysisResult {
|
): AnalysisResult {
|
||||||
@@ -147,8 +149,8 @@ class ClassicFrontendFacade(
|
|||||||
hasCommonModules
|
hasCommonModules
|
||||||
)
|
)
|
||||||
targetPlatform.isJs() -> performJsModuleResolve(project, configuration, files, dependentDescriptors)
|
targetPlatform.isJs() -> performJsModuleResolve(project, configuration, files, dependentDescriptors)
|
||||||
targetPlatform.isNative() -> TODO()
|
targetPlatform.isNative() -> performNativeModuleResolve(module, project, files)
|
||||||
targetPlatform.isCommon() -> performCommonModuleResolve(module, files, languageVersionSettings)
|
targetPlatform.isCommon() -> performCommonModuleResolve(module, files)
|
||||||
else -> error("Should not be here")
|
else -> error("Should not be here")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -175,21 +177,12 @@ class ClassicFrontendFacade(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val projectContext = ProjectContext(project, "test project context")
|
|
||||||
val storageManager = projectContext.storageManager
|
|
||||||
|
|
||||||
val builtIns = JvmBuiltIns(storageManager, JvmBuiltIns.Kind.FROM_CLASS_LOADER)
|
|
||||||
val moduleDescriptor = ModuleDescriptorImpl(Name.special("<${module.name}>"), storageManager, builtIns, module.targetPlatform)
|
|
||||||
val dependencies = buildList {
|
|
||||||
add(moduleDescriptor)
|
|
||||||
add(moduleDescriptor.builtIns.builtInsModule)
|
|
||||||
addAll(dependentDescriptors)
|
|
||||||
}
|
|
||||||
moduleDescriptor.setDependencies(dependencies)
|
|
||||||
|
|
||||||
val moduleContentScope = GlobalSearchScope.allScope(project)
|
val moduleContentScope = GlobalSearchScope.allScope(project)
|
||||||
val moduleClassResolver = SingleModuleClassResolver()
|
val moduleClassResolver = SingleModuleClassResolver()
|
||||||
val moduleContext = projectContext.withModule(moduleDescriptor)
|
val moduleContext = createModuleContext(module, project, dependentDescriptors) {
|
||||||
|
JvmBuiltIns(it, JvmBuiltIns.Kind.FROM_CLASS_LOADER)
|
||||||
|
}
|
||||||
|
val moduleDescriptor = moduleContext.module as ModuleDescriptorImpl
|
||||||
val jvmTarget = configuration[JVM_TARGET] ?: JvmTarget.DEFAULT
|
val jvmTarget = configuration[JVM_TARGET] ?: JvmTarget.DEFAULT
|
||||||
val container = createContainerForLazyResolveWithJava(
|
val container = createContainerForLazyResolveWithJava(
|
||||||
JvmPlatforms.jvmPlatformByTargetVersion(jvmTarget), // TODO(dsavvinov): do not pass JvmTarget around
|
JvmPlatforms.jvmPlatformByTargetVersion(jvmTarget), // TODO(dsavvinov): do not pass JvmTarget around
|
||||||
@@ -243,16 +236,32 @@ class ClassicFrontendFacade(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun performNativeModuleResolve(
|
||||||
|
module: TestModule,
|
||||||
|
project: Project,
|
||||||
|
files: List<KtFile>,
|
||||||
|
): AnalysisResult {
|
||||||
|
val moduleTrace = NoScopeRecordCliBindingTrace()
|
||||||
|
val moduleContext = createModuleContext(module, project, dependentDescriptors = emptyList()) {
|
||||||
|
DefaultBuiltIns()
|
||||||
|
}
|
||||||
|
return FakeTopDownAnalyzerFacadeForNative.analyzeFilesWithGivenTrace(
|
||||||
|
files,
|
||||||
|
moduleTrace,
|
||||||
|
moduleContext,
|
||||||
|
module.languageVersionSettings
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
private fun performCommonModuleResolve(
|
private fun performCommonModuleResolve(
|
||||||
module: TestModule,
|
module: TestModule,
|
||||||
files: List<KtFile>,
|
files: List<KtFile>,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
|
||||||
): AnalysisResult {
|
): AnalysisResult {
|
||||||
return CommonResolverForModuleFactory.analyzeFiles(
|
return CommonResolverForModuleFactory.analyzeFiles(
|
||||||
files,
|
files,
|
||||||
Name.special("<${module.name}>"),
|
Name.special("<${module.name}>"),
|
||||||
dependOnBuiltIns = true,
|
dependOnBuiltIns = true,
|
||||||
languageVersionSettings,
|
module.languageVersionSettings,
|
||||||
module.targetPlatform,
|
module.targetPlatform,
|
||||||
// TODO: add dependency manager
|
// TODO: add dependency manager
|
||||||
) { _ ->
|
) { _ ->
|
||||||
@@ -260,4 +269,26 @@ class ClassicFrontendFacade(
|
|||||||
MetadataPartProvider.Empty
|
MetadataPartProvider.Empty
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalStdlibApi::class)
|
||||||
|
private fun createModuleContext(
|
||||||
|
module: TestModule,
|
||||||
|
project: Project,
|
||||||
|
dependentDescriptors: List<ModuleDescriptorImpl>,
|
||||||
|
builtInsFactory: (StorageManager) -> KotlinBuiltIns,
|
||||||
|
): ModuleContext {
|
||||||
|
val projectContext = ProjectContext(project, "test project context")
|
||||||
|
val storageManager = projectContext.storageManager
|
||||||
|
|
||||||
|
val builtIns = builtInsFactory(storageManager)
|
||||||
|
val moduleDescriptor = ModuleDescriptorImpl(Name.special("<${module.name}>"), storageManager, builtIns, module.targetPlatform)
|
||||||
|
val dependencies = buildList {
|
||||||
|
add(moduleDescriptor)
|
||||||
|
add(moduleDescriptor.builtIns.builtInsModule)
|
||||||
|
addAll(dependentDescriptors)
|
||||||
|
}
|
||||||
|
moduleDescriptor.setDependencies(dependencies)
|
||||||
|
|
||||||
|
return projectContext.withModule(moduleDescriptor)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -39,6 +39,10 @@ fun main(args: Array<String>) {
|
|||||||
testClass<AbstractDiagnosticsTestWithJvmIrBackend> {
|
testClass<AbstractDiagnosticsTestWithJvmIrBackend> {
|
||||||
model("diagnostics/testsWithJvmBackend", targetBackend = TargetBackend.JVM_IR)
|
model("diagnostics/testsWithJvmBackend", targetBackend = TargetBackend.JVM_IR)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testClass<AbstractDiagnosticsNativeTest> {
|
||||||
|
model("diagnostics/nativeTests")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testGroup("compiler/tests-common-new/tests-gen", "compiler/fir/analysis-tests/testData") {
|
testGroup("compiler/tests-common-new/tests-gen", "compiler/fir/analysis-tests/testData") {
|
||||||
|
|||||||
+48
@@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* 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.test.runners
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.platform.konan.NativePlatforms
|
||||||
|
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||||
|
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
|
||||||
|
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
|
||||||
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler
|
||||||
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandler
|
||||||
|
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
|
||||||
|
import org.jetbrains.kotlin.test.model.BackendKind
|
||||||
|
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||||
|
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||||
|
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
|
||||||
|
import org.jetbrains.kotlin.test.services.CoroutineHelpersSourceFilesProvider
|
||||||
|
|
||||||
|
abstract class AbstractDiagnosticsNativeTest : AbstractKotlinCompilerTest() {
|
||||||
|
override fun TestConfigurationBuilder.configuration() {
|
||||||
|
globalDefaults {
|
||||||
|
frontend = FrontendKinds.ClassicFrontend
|
||||||
|
backend = BackendKind.NoBackend
|
||||||
|
targetPlatform = NativePlatforms.unspecifiedNativePlatform
|
||||||
|
dependencyKind = DependencyKind.Source
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultDirectives {
|
||||||
|
+JvmEnvironmentConfigurationDirectives.USE_PSI_CLASS_FILES_READING
|
||||||
|
}
|
||||||
|
|
||||||
|
enableMetaInfoHandler()
|
||||||
|
|
||||||
|
useMetaInfoProcessors(::OldNewInferenceMetaInfoProcessor)
|
||||||
|
useAdditionalSourceProviders(
|
||||||
|
::AdditionalDiagnosticsSourceFilesProvider,
|
||||||
|
::CoroutineHelpersSourceFilesProvider,
|
||||||
|
)
|
||||||
|
|
||||||
|
useFrontendFacades(::ClassicFrontendFacade)
|
||||||
|
useFrontendHandlers(
|
||||||
|
::DeclarationsDumpHandler,
|
||||||
|
::ClassicDiagnosticsHandler,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
+14
-1
@@ -20,6 +20,10 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
|||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.CompilerConfigurationKey
|
import org.jetbrains.kotlin.config.CompilerConfigurationKey
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
|
import org.jetbrains.kotlin.platform.isCommon
|
||||||
|
import org.jetbrains.kotlin.platform.js.isJs
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||||
|
import org.jetbrains.kotlin.platform.konan.isNative
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.test.model.TestFile
|
import org.jetbrains.kotlin.test.model.TestFile
|
||||||
import org.jetbrains.kotlin.test.model.TestModule
|
import org.jetbrains.kotlin.test.model.TestModule
|
||||||
@@ -59,11 +63,20 @@ class CompilerConfigurationProviderImpl(
|
|||||||
|
|
||||||
override fun getKotlinCoreEnvironment(module: TestModule): KotlinCoreEnvironment {
|
override fun getKotlinCoreEnvironment(module: TestModule): KotlinCoreEnvironment {
|
||||||
return cache.getOrPut(module) {
|
return cache.getOrPut(module) {
|
||||||
|
val platform = module.targetPlatform
|
||||||
|
val configFiles = when {
|
||||||
|
platform.isJvm() -> EnvironmentConfigFiles.JVM_CONFIG_FILES
|
||||||
|
platform.isJs() -> EnvironmentConfigFiles.JS_CONFIG_FILES
|
||||||
|
platform.isNative() -> EnvironmentConfigFiles.NATIVE_CONFIG_FILES
|
||||||
|
// TODO: is it correct?
|
||||||
|
platform.isCommon() -> EnvironmentConfigFiles.METADATA_CONFIG_FILES
|
||||||
|
else -> error("Unknown platform: $platform")
|
||||||
|
}
|
||||||
val projectEnv = KotlinCoreEnvironment.createProjectEnvironmentForTests(testRootDisposable, CompilerConfiguration())
|
val projectEnv = KotlinCoreEnvironment.createProjectEnvironmentForTests(testRootDisposable, CompilerConfiguration())
|
||||||
KotlinCoreEnvironment.createForTests(
|
KotlinCoreEnvironment.createForTests(
|
||||||
projectEnv,
|
projectEnv,
|
||||||
createCompilerConfiguration(module, projectEnv.project),
|
createCompilerConfiguration(module, projectEnv.project),
|
||||||
EnvironmentConfigFiles.JVM_CONFIG_FILES
|
configFiles
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-48
@@ -3,12 +3,9 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* 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.checkers
|
package org.jetbrains.kotlin.native
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
|
||||||
import org.jetbrains.kotlin.config.JvmTarget
|
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
import org.jetbrains.kotlin.container.useInstance
|
import org.jetbrains.kotlin.container.useInstance
|
||||||
@@ -16,7 +13,6 @@ import org.jetbrains.kotlin.context.ModuleContext
|
|||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.frontend.di.configureModule
|
import org.jetbrains.kotlin.frontend.di.configureModule
|
||||||
import org.jetbrains.kotlin.frontend.di.configureStandardResolveComponents
|
import org.jetbrains.kotlin.frontend.di.configureStandardResolveComponents
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
import org.jetbrains.kotlin.platform.konan.NativePlatforms
|
import org.jetbrains.kotlin.platform.konan.NativePlatforms
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
@@ -24,49 +20,8 @@ import org.jetbrains.kotlin.resolve.konan.platform.NativePlatformAnalyzerService
|
|||||||
import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer
|
import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer
|
||||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory
|
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory
|
||||||
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
|
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
|
||||||
import org.jetbrains.kotlin.storage.StorageManager
|
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
abstract class AbstractDiagnosticsNativeTest : AbstractDiagnosticsTest() {
|
|
||||||
|
|
||||||
override fun getEnvironmentConfigFiles(): EnvironmentConfigFiles = EnvironmentConfigFiles.NATIVE_CONFIG_FILES
|
|
||||||
|
|
||||||
override fun analyzeModuleContents(
|
|
||||||
moduleContext: ModuleContext,
|
|
||||||
files: List<KtFile>,
|
|
||||||
moduleTrace: BindingTrace,
|
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
|
||||||
separateModules: Boolean,
|
|
||||||
jvmTarget: JvmTarget
|
|
||||||
): AnalysisResult = FakeTopDownAnalyzerFacadeForNative.analyzeFilesWithGivenTrace(
|
|
||||||
files,
|
|
||||||
moduleTrace,
|
|
||||||
moduleContext,
|
|
||||||
languageVersionSettings
|
|
||||||
)
|
|
||||||
|
|
||||||
override fun shouldSkipJvmSignatureDiagnostics(groupedByModule: Map<TestModule?, List<TestFile>>): Boolean = true
|
|
||||||
|
|
||||||
override fun createModule(moduleName: String, storageManager: StorageManager): ModuleDescriptorImpl =
|
|
||||||
ModuleDescriptorImpl(Name.special("<$moduleName>"), storageManager, DefaultBuiltIns())
|
|
||||||
|
|
||||||
override fun createSealedModule(storageManager: StorageManager): ModuleDescriptorImpl {
|
|
||||||
val module = createModule("kotlin-native-test-module", storageManager)
|
|
||||||
|
|
||||||
val dependencies = ArrayList<ModuleDescriptorImpl>()
|
|
||||||
|
|
||||||
dependencies.add(module)
|
|
||||||
dependencies.addAll(getAdditionalDependencies(module))
|
|
||||||
dependencies.add(module.builtIns.builtInsModule)
|
|
||||||
|
|
||||||
module.setDependencies(dependencies)
|
|
||||||
|
|
||||||
return module
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private object FakeTopDownAnalyzerFacadeForNative {
|
|
||||||
|
|
||||||
|
object FakeTopDownAnalyzerFacadeForNative {
|
||||||
fun analyzeFilesWithGivenTrace(
|
fun analyzeFilesWithGivenTrace(
|
||||||
files: Collection<KtFile>,
|
files: Collection<KtFile>,
|
||||||
trace: BindingTrace,
|
trace: BindingTrace,
|
||||||
@@ -80,7 +35,7 @@ private object FakeTopDownAnalyzerFacadeForNative {
|
|||||||
languageVersionSettings
|
languageVersionSettings
|
||||||
)
|
)
|
||||||
|
|
||||||
analyzerForNative.analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, files)
|
analyzerForNative.analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, files as Collection<com.intellij.psi.PsiElement>)
|
||||||
return AnalysisResult.success(trace.bindingContext, moduleContext.module)
|
return AnalysisResult.success(trace.bindingContext, moduleContext.module)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -71,10 +71,6 @@ fun main(args: Array<String>) {
|
|||||||
model("diagnostics/testsWithJsStdLibAndBackendCompilation")
|
model("diagnostics/testsWithJsStdLibAndBackendCompilation")
|
||||||
}
|
}
|
||||||
|
|
||||||
testClass<AbstractDiagnosticsNativeTest> {
|
|
||||||
model("diagnostics/nativeTests")
|
|
||||||
}
|
|
||||||
|
|
||||||
testClass<AbstractDiagnosticsWithJdk15Test> {
|
testClass<AbstractDiagnosticsWithJdk15Test> {
|
||||||
model("diagnostics/testsWithJava15")
|
model("diagnostics/testsWithJava15")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user