[FIR Test] Migrate AbstractFirLoadCompiledKotlin to new test infrastructure
Also introduce two different modes for those tests: - load metadata compiled with K1 - load metadata compiled with K2
This commit is contained in:
committed by
Space Team
parent
63829876b7
commit
6287968511
-2864
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -50,7 +50,7 @@ abstract class AbstractFirLoadBinariesTest : AbstractFirResolveWithSessionTestCa
|
||||
|
||||
KotlinTestUtils.assertEqualsToFile(
|
||||
File(testDataPath),
|
||||
builder.toString()
|
||||
builder.toString().trimEnd() + "\n"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
-66
@@ -1,66 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2019 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.fir
|
||||
|
||||
import org.jetbrains.kotlin.ObsoleteTestInfrastructure
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.toAbstractProjectEnvironment
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope
|
||||
import org.jetbrains.kotlin.jvm.compiler.AbstractLoadJavaTest
|
||||
import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil.compileKotlinToDirAndGetModule
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils.newConfiguration
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
import java.io.File
|
||||
|
||||
abstract class AbstractFirLoadCompiledKotlin : AbstractFirLoadBinariesTest() {
|
||||
protected lateinit var tmpdir: File
|
||||
|
||||
override fun setUp() {
|
||||
super.setUp()
|
||||
tmpdir = KotlinTestUtils.tmpDirForTest(this)
|
||||
}
|
||||
|
||||
override fun createEnvironment(): KotlinCoreEnvironment {
|
||||
return createEnvironmentWithMockJdk(ConfigurationKind.JDK_NO_RUNTIME)
|
||||
}
|
||||
|
||||
@OptIn(ObsoleteTestInfrastructure::class)
|
||||
fun doTest(path: String) {
|
||||
val moduleDescriptor = compileKtFileToTmpDir(path)
|
||||
|
||||
val packageFqName = FqName("test")
|
||||
|
||||
val configuration = newConfiguration(ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK, listOf(tmpdir), emptyList<File>())
|
||||
val environment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
|
||||
|
||||
prepareProjectExtensions(environment.project)
|
||||
val sessionWithDependency = FirTestSessionFactoryHelper.createSessionForTests(environment.toAbstractProjectEnvironment(), AbstractProjectFileSearchScope.EMPTY)
|
||||
|
||||
val testDataDirectoryPath =
|
||||
"compiler/fir/analysis-tests/testData/loadCompiledKotlin/" +
|
||||
path
|
||||
.removePrefix("compiler/testData/loadJava/compiledKotlin/")
|
||||
.removeSuffix(File(path).name)
|
||||
File(testDataDirectoryPath).mkdirs()
|
||||
|
||||
checkPackageContent(sessionWithDependency, packageFqName, moduleDescriptor, "$testDataDirectoryPath${getTestName(false)}.txt")
|
||||
}
|
||||
|
||||
private fun compileKtFileToTmpDir(path: String): ModuleDescriptor {
|
||||
val file = File(path)
|
||||
|
||||
val configuration = newConfiguration(ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK, emptyList(), emptyList<File>())
|
||||
AbstractLoadJavaTest.updateConfigurationWithDirectives(file.readText(), configuration)
|
||||
val environment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
|
||||
|
||||
return compileKotlinToDirAndGetModule(listOf(file), tmpdir, environment)
|
||||
}
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* 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.test
|
||||
|
||||
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
|
||||
import org.jetbrains.kotlin.test.directives.extractIgnoredDirectivesForTargetBackend
|
||||
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
||||
import org.jetbrains.kotlin.test.directives.model.SimpleDirective
|
||||
import org.jetbrains.kotlin.test.directives.model.ValueDirective
|
||||
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
|
||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||
import org.jetbrains.kotlin.test.model.TestModule
|
||||
import org.jetbrains.kotlin.test.services.*
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.shouldNotBeCalled
|
||||
|
||||
class FirMetadataLoadingTestSuppressor(testServices: TestServices) : AfterAnalysisChecker(testServices) {
|
||||
override val directiveContainers: List<DirectivesContainer>
|
||||
get() = listOf(CodegenTestDirectives)
|
||||
|
||||
override fun suppressIfNeeded(failedAssertions: List<WrappedException>): List<WrappedException> {
|
||||
val moduleStructure = testServices.moduleStructure
|
||||
val directive = when (testServices.defaultsProvider.defaultFrontend) {
|
||||
FrontendKinds.ClassicFrontend -> CodegenTestDirectives.IGNORE_FIR_METADATA_LOADING_K1
|
||||
FrontendKinds.FIR -> CodegenTestDirectives.IGNORE_FIR_METADATA_LOADING_K2
|
||||
else -> shouldNotBeCalled()
|
||||
}
|
||||
if (moduleStructure.modules.any { directive in it.directives }) {
|
||||
return if (failedAssertions.isNotEmpty()) {
|
||||
emptyList()
|
||||
} else {
|
||||
listOf(AssertionError("Looks like this test can be unmuted. Remove ${directive.name} directive").wrap())
|
||||
}
|
||||
}
|
||||
return failedAssertions
|
||||
}
|
||||
}
|
||||
+174
@@ -0,0 +1,174 @@
|
||||
/*
|
||||
* 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.test
|
||||
|
||||
import com.intellij.openapi.vfs.StandardFileSystems
|
||||
import com.intellij.openapi.vfs.VirtualFileManager
|
||||
import org.jetbrains.kotlin.cli.common.prepareJvmSessions
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.VfsBasedProjectEnvironment
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
import org.jetbrains.kotlin.fir.BinaryModuleData
|
||||
import org.jetbrains.kotlin.fir.DependencyListForCliModule
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.nameOrSpecialName
|
||||
import org.jetbrains.kotlin.fir.renderer.FirRenderer
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
||||
import org.jetbrains.kotlin.test.backend.handlers.JvmBinaryArtifactHandler
|
||||
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
|
||||
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact
|
||||
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
|
||||
import org.jetbrains.kotlin.test.model.*
|
||||
import org.jetbrains.kotlin.test.services.*
|
||||
import org.jetbrains.kotlin.test.util.trimTrailingWhitespacesAndRemoveRedundantEmptyLinesAtTheEnd
|
||||
import org.jetbrains.kotlin.test.utils.MultiModuleInfoDumper
|
||||
import org.jetbrains.kotlin.test.utils.withExtension
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.shouldNotBeCalled
|
||||
import java.io.File
|
||||
|
||||
class LoadedMetadataDumpHandler(testServices: TestServices) : JvmBinaryArtifactHandler(testServices) {
|
||||
private val dumper: MultiModuleInfoDumper = MultiModuleInfoDumper()
|
||||
|
||||
override fun processModule(module: TestModule, info: BinaryArtifacts.Jvm) {
|
||||
val emptyModule = TestModule(
|
||||
name = "empty", JvmPlatforms.defaultJvmPlatform, TargetBackend.JVM_IR, FrontendKinds.FIR,
|
||||
BackendKinds.IrBackend, ArtifactKinds.Jvm, files = emptyList(),
|
||||
allDependencies = listOf(DependencyDescription(module.name, DependencyKind.Binary, DependencyRelation.RegularDependency)),
|
||||
RegisteredDirectives.Empty, LanguageVersionSettingsImpl.DEFAULT
|
||||
)
|
||||
val configuration = testServices.compilerConfigurationProvider.getCompilerConfiguration(emptyModule)
|
||||
val environment = VfsBasedProjectEnvironment(
|
||||
testServices.compilerConfigurationProvider.getProject(emptyModule),
|
||||
VirtualFileManager.getInstance().getFileSystem(StandardFileSystems.FILE_PROTOCOL),
|
||||
testServices.compilerConfigurationProvider.getPackagePartProviderFactory(emptyModule)
|
||||
)
|
||||
val binaryModuleData = BinaryModuleData.initialize(
|
||||
Name.identifier(emptyModule.name),
|
||||
JvmPlatforms.defaultJvmPlatform,
|
||||
JvmPlatformAnalyzerServices
|
||||
)
|
||||
val session = prepareJvmSessions(
|
||||
files = emptyList<KtFile>(),
|
||||
configuration, environment, Name.identifier(emptyModule.name),
|
||||
extensionRegistrars = emptyList(),
|
||||
environment.getSearchScopeForProjectLibraries(),
|
||||
DependencyListForCliModule.build(binaryModuleData),
|
||||
isCommonSource = { false },
|
||||
fileBelongsToModule = { _, _ -> false },
|
||||
createProviderAndScopeForIncrementalCompilation = { null }
|
||||
).single().session
|
||||
|
||||
val packageFqName = FqName("test")
|
||||
dumper.builderForModule(module)
|
||||
.append(collectPackageContent(session, packageFqName, extractNames(module, packageFqName)))
|
||||
}
|
||||
|
||||
@Suppress("warnings")
|
||||
override fun processAfterAllModules(someAssertionWasFailed: Boolean) {
|
||||
if (dumper.isEmpty()) return
|
||||
val testDataFile = testServices.moduleStructure.originalTestDataFiles.first()
|
||||
val commonExtension = ".fir.txt"
|
||||
val (specificExtension, otherSpecificExtension) = when (testServices.defaultsProvider.defaultFrontend) {
|
||||
FrontendKinds.ClassicFrontend -> ".fir.k1.txt" to ".fir.k2.txt"
|
||||
FrontendKinds.FIR -> ".fir.k2.txt" to ".fir.k1.txt"
|
||||
else -> shouldNotBeCalled()
|
||||
}
|
||||
val commonFirDump = testDataFile.withExtension(commonExtension)
|
||||
val specificFirDump = testDataFile.withExtension(specificExtension)
|
||||
|
||||
val expectedFile = when {
|
||||
commonFirDump.exists() -> commonFirDump
|
||||
else -> specificFirDump
|
||||
}
|
||||
|
||||
val actualText = dumper.generateResultingDump()
|
||||
assertions.assertEqualsToFile(expectedFile, actualText, message = { "Content is not equal" })
|
||||
|
||||
if (commonFirDump.exists() && specificFirDump.exists()) {
|
||||
assertions.fail {
|
||||
"""
|
||||
Common dump ${commonFirDump.name} and specific ${specificFirDump.name} exist at the same time
|
||||
Please remove ${specificFirDump.name}
|
||||
""".trimIndent()
|
||||
}
|
||||
}
|
||||
if (!commonFirDump.exists()) {
|
||||
val otherFirDump = testDataFile.withExtension(otherSpecificExtension)
|
||||
checkK1AndK2DumpsIdentity(specificFirDump, otherFirDump, commonFirDump)
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkK1AndK2DumpsIdentity(file1: File, file2: File, commonFile: File) {
|
||||
if (!file1.exists() || !file2.exists()) return
|
||||
val dump1 = file1.readText().trimTrailingWhitespacesAndRemoveRedundantEmptyLinesAtTheEnd()
|
||||
val dump2 = file2.readText().trimTrailingWhitespacesAndRemoveRedundantEmptyLinesAtTheEnd()
|
||||
if (dump1 == dump2) {
|
||||
commonFile.writeText(dump1)
|
||||
file1.delete()
|
||||
file2.delete()
|
||||
assertions.fail {
|
||||
"""
|
||||
Files ${file1.name} and ${file2.name} are identical
|
||||
Generating ${commonFile.name} and deleting ${file1.name} and ${file2.name}
|
||||
""".trimIndent()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun collectPackageContent(session: FirSession, packageFqName: FqName, declarationNames: Collection<Name>): String {
|
||||
val provider = session.symbolProvider
|
||||
|
||||
val builder = StringBuilder()
|
||||
val firRenderer = FirRenderer(builder)
|
||||
|
||||
for (name in declarationNames) {
|
||||
for (symbol in provider.getTopLevelCallableSymbols(packageFqName, name)) {
|
||||
firRenderer.renderElementAsString(symbol.fir)
|
||||
builder.appendLine()
|
||||
}
|
||||
}
|
||||
|
||||
for (name in declarationNames) {
|
||||
val classLikeSymbol = provider.getClassLikeSymbolByClassId(ClassId.topLevel(packageFqName.child(name))) ?: continue
|
||||
firRenderer.renderElementAsString(classLikeSymbol.fir)
|
||||
builder.appendLine()
|
||||
}
|
||||
|
||||
return builder.toString().trimEnd()
|
||||
}
|
||||
|
||||
private fun extractNames(module: TestModule, packageFqName: FqName): Collection<Name> {
|
||||
testServices.dependencyProvider.getArtifactSafe(module, FrontendKinds.ClassicFrontend)
|
||||
?.let { return extractNames(it, packageFqName) }
|
||||
testServices.dependencyProvider.getArtifactSafe(module, FrontendKinds.FIR)
|
||||
?.let { return extractNames(it, packageFqName) }
|
||||
error("Frontend artifact for module $module not found")
|
||||
}
|
||||
|
||||
private fun extractNames(artifact: ClassicFrontendOutputArtifact, packageFqName: FqName): Collection<Name> {
|
||||
return DescriptorUtils.getAllDescriptors(artifact.analysisResult.moduleDescriptor.getPackage(packageFqName).memberScope)
|
||||
.mapTo(sortedSetOf()) { it.name }
|
||||
}
|
||||
|
||||
private fun extractNames(artifact: FirOutputArtifact, packageFqName: FqName): Collection<Name> {
|
||||
return sortedSetOf<Name>().apply {
|
||||
for (part in artifact.partsForDependsOnModules) {
|
||||
val files = part.session.firProvider.getFirFilesByPackage(packageFqName)
|
||||
files.flatMapTo(this) { file ->
|
||||
file.declarations.mapNotNull { (it as? FirMemberDeclaration)?.nameOrSpecialName }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* 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.test.runners
|
||||
|
||||
import org.jetbrains.kotlin.test.*
|
||||
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
|
||||
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.builders.configureJvmArtifactsHandlersStep
|
||||
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB
|
||||
import org.jetbrains.kotlin.test.directives.configureFirParser
|
||||
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
|
||||
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
|
||||
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact
|
||||
import org.jetbrains.kotlin.test.frontend.fir.Fir2IrResultsConverter
|
||||
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
|
||||
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
|
||||
import org.jetbrains.kotlin.test.model.*
|
||||
import org.jetbrains.kotlin.test.runners.codegen.commonConfigurationForTest
|
||||
|
||||
abstract class AbstractFirLoadCompiledKotlinTestBase<F : ResultingArtifact.FrontendOutput<F>> :
|
||||
AbstractKotlinCompilerWithTargetBackendTest(TargetBackend.JVM_IR)
|
||||
{
|
||||
protected abstract val frontendKind: FrontendKind<F>
|
||||
protected abstract val frontendFacade: Constructor<FrontendFacade<F>>
|
||||
protected abstract val frontendToBackendConverter: Constructor<Frontend2BackendConverter<F, IrBackendInput>>
|
||||
|
||||
override fun TestConfigurationBuilder.configuration() {
|
||||
commonConfigurationForTest(
|
||||
frontendKind,
|
||||
frontendFacade,
|
||||
frontendToBackendConverter,
|
||||
::JvmIrBackendFacade
|
||||
)
|
||||
|
||||
configureJvmArtifactsHandlersStep {
|
||||
useHandlers(::LoadedMetadataDumpHandler)
|
||||
}
|
||||
|
||||
forTestsMatching("compiler/testData/loadJava/compiledKotlinWithStdlib/*") {
|
||||
defaultDirectives {
|
||||
+WITH_STDLIB
|
||||
}
|
||||
}
|
||||
|
||||
useAfterAnalysisCheckers(::FirMetadataLoadingTestSuppressor)
|
||||
}
|
||||
}
|
||||
|
||||
open class AbstractFirLoadK1CompiledKotlin : AbstractFirLoadCompiledKotlinTestBase<ClassicFrontendOutputArtifact>() {
|
||||
override val frontendKind: FrontendKind<ClassicFrontendOutputArtifact>
|
||||
get() = FrontendKinds.ClassicFrontend
|
||||
override val frontendFacade: Constructor<FrontendFacade<ClassicFrontendOutputArtifact>>
|
||||
get() = ::ClassicFrontendFacade
|
||||
override val frontendToBackendConverter: Constructor<Frontend2BackendConverter<ClassicFrontendOutputArtifact, IrBackendInput>>
|
||||
get() = ::ClassicFrontend2IrConverter
|
||||
}
|
||||
|
||||
open class AbstractFirLoadK2CompiledKotlin : AbstractFirLoadCompiledKotlinTestBase<FirOutputArtifact>() {
|
||||
override val frontendKind: FrontendKind<FirOutputArtifact>
|
||||
get() = FrontendKinds.FIR
|
||||
override val frontendFacade: Constructor<FrontendFacade<FirOutputArtifact>>
|
||||
get() = ::FirFrontendFacade
|
||||
override val frontendToBackendConverter: Constructor<Frontend2BackendConverter<FirOutputArtifact, IrBackendInput>>
|
||||
get() = ::Fir2IrResultsConverter
|
||||
|
||||
override fun configure(builder: TestConfigurationBuilder) {
|
||||
super.configure(builder)
|
||||
builder.configureFirParser(FirParser.LightTree)
|
||||
}
|
||||
}
|
||||
|
||||
+3530
File diff suppressed because it is too large
Load Diff
+3530
File diff suppressed because it is too large
Load Diff
@@ -16,6 +16,11 @@ fun String.trimTrailingWhitespacesAndAddNewlineAtEOF(): String =
|
||||
fun String.trimTrailingWhitespaces(): String =
|
||||
this.split('\n').joinToString(separator = "\n") { it.trimEnd() }
|
||||
|
||||
fun String.trimTrailingWhitespacesAndRemoveRedundantEmptyLinesAtTheEnd(): String {
|
||||
val lines = this.split('\n').map { it.trimEnd() }
|
||||
return lines.dropLastWhile { it.isBlank() }.joinToString("\n", postfix = "\n")
|
||||
}
|
||||
|
||||
fun String.convertLineSeparators(separator: String = DEFAULT_LINE_SEPARATOR): String {
|
||||
return replace(Regex.fromLiteral("\r\n|\r|\n"), separator)
|
||||
}
|
||||
|
||||
+8
-5
@@ -12,6 +12,7 @@ abstract class DependencyProvider : TestService {
|
||||
abstract fun getTestModule(name: String): TestModule
|
||||
|
||||
abstract fun <A : ResultingArtifact<A>> getArtifact(module: TestModule, kind: TestArtifactKind<A>): A
|
||||
abstract fun <A : ResultingArtifact<A>> getArtifactSafe(module: TestModule, kind: TestArtifactKind<A>): A?
|
||||
|
||||
abstract fun unregisterAllArtifacts(module: TestModule)
|
||||
abstract fun copy(): DependencyProvider
|
||||
@@ -26,7 +27,7 @@ class DependencyProviderImpl(
|
||||
private val assertions: Assertions
|
||||
get() = testServices.assertions
|
||||
|
||||
private val testModulesByName = testModules.map { it.name to it }.toMap()
|
||||
private val testModulesByName = testModules.associateBy { it.name }
|
||||
|
||||
private val artifactsByModule: MutableMap<TestModule, MutableMap<TestArtifactKind<*>, ResultingArtifact<*>>> = mutableMapOf()
|
||||
|
||||
@@ -34,11 +35,13 @@ class DependencyProviderImpl(
|
||||
return testModulesByName[name] ?: assertions.fail { "Module $name is not defined" }
|
||||
}
|
||||
|
||||
override fun <A : ResultingArtifact<A>> getArtifact(module: TestModule, kind: TestArtifactKind<A>): A {
|
||||
val artifact = artifactsByModule.getMap(module)[kind]
|
||||
?: error("Artifact with kind $kind is not registered for module ${module.name}")
|
||||
override fun <A : ResultingArtifact<A>> getArtifactSafe(module: TestModule, kind: TestArtifactKind<A>): A? {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return artifact as A
|
||||
return artifactsByModule.getMap(module)[kind] as A?
|
||||
}
|
||||
|
||||
override fun <A : ResultingArtifact<A>> getArtifact(module: TestModule, kind: TestArtifactKind<A>): A {
|
||||
return getArtifactSafe(module, kind) ?: error("Artifact with kind $kind is not registered for module ${module.name}")
|
||||
}
|
||||
|
||||
fun <A : ResultingArtifact<A>> registerArtifact(module: TestModule, artifact: ResultingArtifact<A>) {
|
||||
|
||||
-1
@@ -41,4 +41,3 @@ public final class Test : R|kotlin/Any| {
|
||||
public constructor(x: R|kotlin/Int|): R|test/Z|
|
||||
|
||||
}
|
||||
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
public final annotation class Ann : R|kotlin/Annotation| {
|
||||
public constructor(): R|test/Ann|
|
||||
|
||||
}
|
||||
|
||||
public sealed class Sealed : R|kotlin/Any| {
|
||||
public final val z: R|test/Z|
|
||||
public get(): R|test/Z|
|
||||
|
||||
@R|test/Ann|() protected constructor(@R|test/Ann|() z: R|test/Z|): R|test/Sealed|
|
||||
|
||||
public final class Derived : R|test/Sealed| {
|
||||
@R|test/Ann|() public constructor(z: R|test/Z|): R|test/Sealed.Derived|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public final class Test : R|kotlin/Any| {
|
||||
public final val z: R|test/Z|
|
||||
public get(): R|test/Z|
|
||||
|
||||
@R|test/Ann|() public constructor(@R|test/Ann|() z: R|test/Z|): R|test/Test|
|
||||
|
||||
@R|test/Ann|() public constructor(z: R|test/Z|, @R|test/Ann|() a: R|kotlin/Int|): R|test/Test|
|
||||
|
||||
@R|test/Ann|() private constructor(z: R|test/Z|, @R|test/Ann|() s: R|kotlin/String|): R|test/Test|
|
||||
|
||||
}
|
||||
|
||||
@R|kotlin/jvm/JvmInline|() public final inline class Z : R|kotlin/Any| {
|
||||
public open operator fun equals(other: R|kotlin/Any?|): R|kotlin/Boolean|
|
||||
|
||||
public open fun hashCode(): R|kotlin/Int|
|
||||
|
||||
public open fun toString(): R|kotlin/String|
|
||||
|
||||
public final val x: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
|
||||
public constructor(x: R|kotlin/Int|): R|test/Z|
|
||||
|
||||
}
|
||||
-1
@@ -17,4 +17,3 @@
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
@R|kotlin/Deprecated|(message = String(Class)) public final class Class : R|kotlin/Any| {
|
||||
public constructor(): R|test/Class|
|
||||
|
||||
@R|kotlin/Deprecated|(message = String(Nested)) public final class Nested : R|kotlin/Any| {
|
||||
public constructor(): R|test/Class.Nested|
|
||||
|
||||
}
|
||||
|
||||
@R|kotlin/Deprecated|(message = String(Inner)) public final inner class Inner : R|kotlin/Any| {
|
||||
public test/Class.constructor(): R|test/Class.Inner|
|
||||
|
||||
}
|
||||
|
||||
@R|kotlin/Deprecated|(message = String(companion object)) public final companion object Companion : R|kotlin/Any| {
|
||||
private constructor(): R|test/Class.Companion|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
public final annotation class Anno : R|kotlin/Annotation| {
|
||||
public final val t: R|java/lang/annotation/ElementType|
|
||||
public get(): R|java/lang/annotation/ElementType|
|
||||
|
||||
public constructor(t: R|java/lang/annotation/ElementType|): R|test/Anno|
|
||||
|
||||
}
|
||||
|
||||
@R|test/Anno|(t = R|java/lang/annotation/ElementType.METHOD|) public final class Class : R|kotlin/Any| {
|
||||
public constructor(): R|test/Class|
|
||||
|
||||
@R|test/Anno|(t = R|java/lang/annotation/ElementType.PARAMETER|) public final inner class Inner : R|kotlin/Any| {
|
||||
public test/Class.constructor(): R|test/Class.Inner|
|
||||
|
||||
}
|
||||
|
||||
@R|test/Anno|(t = R|java/lang/annotation/ElementType.TYPE|) public final class Nested : R|kotlin/Any| {
|
||||
public constructor(): R|test/Class.Nested|
|
||||
|
||||
}
|
||||
|
||||
@R|test/Anno|(t = R|java/lang/annotation/ElementType.ANNOTATION_TYPE|) public final companion object Companion : R|kotlin/Any| {
|
||||
private constructor(): R|test/Class.Companion|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
-1
@@ -17,4 +17,3 @@ public final class Class : R|kotlin/Any| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
public final annotation class Anno : R|kotlin/Annotation| {
|
||||
public constructor(): R|test/Anno|
|
||||
|
||||
}
|
||||
|
||||
public final class Class : R|kotlin/Any| {
|
||||
public constructor(): R|test/Class|
|
||||
|
||||
@R|test/Anno|() public final class Nested : R|kotlin/Any| {
|
||||
public constructor(): R|test/Class.Nested|
|
||||
|
||||
}
|
||||
|
||||
@R|test/Anno|() public final inner class Inner : R|kotlin/Any| {
|
||||
public test/Class.constructor(): R|test/Class.Inner|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
-1
@@ -26,4 +26,3 @@ public final class Outer : R|kotlin/Any| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Vendored
+28
@@ -0,0 +1,28 @@
|
||||
public final annotation class A : R|kotlin/Annotation| {
|
||||
public final val s: R|kotlin/String|
|
||||
public get(): R|kotlin/String|
|
||||
|
||||
public constructor(s: R|kotlin/String|): R|test/A|
|
||||
|
||||
}
|
||||
|
||||
public final class Outer : R|kotlin/Any| {
|
||||
public constructor(): R|test/Outer|
|
||||
|
||||
public final class Nested : R|kotlin/Any| {
|
||||
public final val x: R|kotlin/String|
|
||||
public get(): R|kotlin/String|
|
||||
|
||||
public constructor(@R|test/A|(s = String(nested)) x: R|kotlin/String|): R|test/Outer.Nested|
|
||||
|
||||
}
|
||||
|
||||
public final inner class Inner : R|kotlin/Any| {
|
||||
public final val y: R|kotlin/String|
|
||||
public get(): R|kotlin/String|
|
||||
|
||||
public test/Outer.constructor(@R|test/A|(s = String(inner)) y: R|kotlin/String|): R|test/Outer.Inner|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
public final class Class : R|kotlin/Any| {
|
||||
@PROPERTY:R|test/IntAnno|() public final val R|kotlin/Int|.extension: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
|
||||
@PROPERTY:R|test/DoubleAnno|() public final val R|kotlin/Double|.extension: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
|
||||
@PROPERTY:R|test/StringAnno|() public final val R|kotlin/String|.extension: R|kotlin/String|
|
||||
public get(): R|kotlin/String|
|
||||
|
||||
public constructor(): R|test/Class|
|
||||
|
||||
}
|
||||
|
||||
public final annotation class DoubleAnno : R|kotlin/Annotation| {
|
||||
public constructor(): R|test/DoubleAnno|
|
||||
|
||||
}
|
||||
|
||||
public final annotation class IntAnno : R|kotlin/Annotation| {
|
||||
public constructor(): R|test/IntAnno|
|
||||
|
||||
}
|
||||
|
||||
public final annotation class StringAnno : R|kotlin/Annotation| {
|
||||
public constructor(): R|test/StringAnno|
|
||||
|
||||
}
|
||||
-1
@@ -21,4 +21,3 @@ public final annotation class StringAnno : R|kotlin/Annotation| {
|
||||
public constructor(): R|test/StringAnno|
|
||||
|
||||
}
|
||||
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
@PROPERTY:R|test/IntAnno|() public final val R|kotlin/Int|.extension: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
|
||||
@PROPERTY:R|test/StringAnno|() public final val R|kotlin/String|.extension: R|kotlin/String|
|
||||
public get(): R|kotlin/String|
|
||||
|
||||
@PROPERTY:R|test/DoubleAnno|() public final val R|kotlin/Double|.extension: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
|
||||
public final annotation class DoubleAnno : R|kotlin/Annotation| {
|
||||
public constructor(): R|test/DoubleAnno|
|
||||
|
||||
}
|
||||
|
||||
public final annotation class IntAnno : R|kotlin/Annotation| {
|
||||
public constructor(): R|test/IntAnno|
|
||||
|
||||
}
|
||||
|
||||
public final annotation class StringAnno : R|kotlin/Annotation| {
|
||||
public constructor(): R|test/StringAnno|
|
||||
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
public final annotation class A : R|kotlin/Annotation| {
|
||||
public final val value: R|kotlin/String|
|
||||
public get(): R|kotlin/String|
|
||||
|
||||
public constructor(value: R|kotlin/String|): R|test/A|
|
||||
|
||||
}
|
||||
|
||||
public final annotation class B : R|kotlin/Annotation| {
|
||||
public final val value: R|kotlin/Array<kotlin/String>|
|
||||
public get(): R|kotlin/Array<kotlin/String>|
|
||||
|
||||
public constructor(value: R|kotlin/Array<kotlin/String>|): R|test/B|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface I : R|kotlin/Any| {
|
||||
public abstract var getterAndSetter: R|kotlin/Int|
|
||||
@R|test/A|(value = String(getter)) public get(): R|kotlin/Int|
|
||||
@R|test/B|(value = <implicitArrayOf>(String(setter))) public set(value: R|kotlin/Int|): R|kotlin/Unit|
|
||||
|
||||
@PROPERTY:R|test/A|(value = String(property)) public abstract var propertyAndGetter: R|kotlin/Int|
|
||||
@R|test/B|(value = <implicitArrayOf>(String(getter))) public get(): R|kotlin/Int|
|
||||
public set(value: R|kotlin/Int|): R|kotlin/Unit|
|
||||
|
||||
@PROPERTY:R|test/A|(value = String(property)) public abstract var propertyAndSetter: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
@R|test/B|(value = <implicitArrayOf>(String(setter))) public set(value: R|kotlin/Int|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
//ALLOW_AST_ACCESS
|
||||
// IGNORE_FIR_METADATA_LOADING_K2
|
||||
// Ignore reason: KT-58028
|
||||
package test
|
||||
|
||||
class ConstructorTypeParamClassObjectTypeConflict<test> {
|
||||
@@ -42,4 +44,4 @@ class TestClassObjectAndClassConflict {
|
||||
val bla = { "More" }()
|
||||
|
||||
val some = bla
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -72,4 +72,3 @@ public final class Pub : R|kotlin/Any| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Vendored
+74
@@ -0,0 +1,74 @@
|
||||
public final class Int : R|kotlin/Any| {
|
||||
public constructor(): R|test/Int|
|
||||
|
||||
public final companion object Companion : R|kotlin/Any| {
|
||||
private constructor(): R|test/Int.Companion|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public final class Outer : R|kotlin/Any| {
|
||||
public constructor(): R|test/Outer|
|
||||
|
||||
public final class Pub : R|kotlin/Any| {
|
||||
public constructor(): R|test/Outer.Pub|
|
||||
|
||||
public final companion object Companion : R|kotlin/Any| {
|
||||
private constructor(): R|test/Outer.Pub.Companion|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private final class Pri : R|kotlin/Any| {
|
||||
public constructor(): R|test/Outer.Pri|
|
||||
|
||||
public final companion object Companion : R|kotlin/Any| {
|
||||
private constructor(): R|test/Outer.Pri.Companion|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public final class Int : R|kotlin/Any| {
|
||||
public constructor(): R|test/Outer.Int|
|
||||
|
||||
public final companion object Companion : R|kotlin/Any| {
|
||||
private constructor(): R|test/Outer.Int.Companion|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected final class Pro : R|kotlin/Any| {
|
||||
public constructor(): R|test/Outer.Pro|
|
||||
|
||||
public final companion object Companion : R|kotlin/Any| {
|
||||
private constructor(): R|test/Outer.Pro.Companion|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private final class Pri : R|kotlin/Any| {
|
||||
public constructor(): R|test/Pri|
|
||||
|
||||
public final companion object Companion : R|kotlin/Any| {
|
||||
private constructor(): R|test/Pri.Companion|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public final class Pub : R|kotlin/Any| {
|
||||
public constructor(): R|test/Pub|
|
||||
|
||||
public final companion object Companion : R|kotlin/Any| {
|
||||
private constructor(): R|test/Pub.Companion|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
-1
@@ -34,4 +34,3 @@ public final class Test : R|kotlin/Any| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Vendored
+36
@@ -0,0 +1,36 @@
|
||||
public final class Test : R|kotlin/Any| {
|
||||
public constructor(): R|test/Test|
|
||||
|
||||
public final companion object Companion : R|kotlin/Any| {
|
||||
public final fun incProp4(): R|kotlin/Unit|
|
||||
|
||||
public final const val constProp8: R|kotlin/Int| = Int(80)
|
||||
public get(): R|kotlin/Int|
|
||||
|
||||
public final val prop1: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
|
||||
public final var prop2: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
protected set(value: R|kotlin/Int|): R|kotlin/Unit|
|
||||
|
||||
public final val prop3: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
|
||||
public final var prop4: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
public set(value: R|kotlin/Int|): R|kotlin/Unit|
|
||||
|
||||
public final var prop5: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
public set(value: R|kotlin/Int|): R|kotlin/Unit|
|
||||
|
||||
public final var prop7: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
public set(i: R|kotlin/Int|): R|kotlin/Unit|
|
||||
|
||||
private constructor(): R|test/Test.Companion|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Vendored
+34
@@ -0,0 +1,34 @@
|
||||
public abstract interface Test : R|kotlin/Any| {
|
||||
public final companion object Companion : R|kotlin/Any| {
|
||||
public final fun incProp4(): R|kotlin/Unit|
|
||||
|
||||
public final const val constProp8: R|kotlin/Int| = Int(80)
|
||||
public get(): R|kotlin/Int|
|
||||
|
||||
public final val prop1: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
|
||||
public final var prop2: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
protected set(value: R|kotlin/Int|): R|kotlin/Unit|
|
||||
|
||||
public final val prop3: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
|
||||
public final var prop4: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
public set(value: R|kotlin/Int|): R|kotlin/Unit|
|
||||
|
||||
public final var prop5: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
public set(value: R|kotlin/Int|): R|kotlin/Unit|
|
||||
|
||||
public final var prop7: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
public set(i: R|kotlin/Int|): R|kotlin/Unit|
|
||||
|
||||
private constructor(): R|test/Test.Companion|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
-1
@@ -19,4 +19,3 @@ public final class InheritMethodsDifferentReturnTypes : R|kotlin/Any| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
compiler/testData/loadJava/compiledKotlin/fromLoadJava/InheritMethodsDifferentReturnTypes.fir.k2.txt
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
public final class InheritMethodsDifferentReturnTypes : R|kotlin/Any| {
|
||||
public constructor(): R|test/InheritMethodsDifferentReturnTypes|
|
||||
|
||||
public abstract interface Super1 : R|kotlin/Any| {
|
||||
public abstract fun bar(): R|kotlin/String?|
|
||||
|
||||
public abstract fun foo(): R|kotlin/CharSequence?|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Super2 : R|kotlin/Any| {
|
||||
public abstract fun bar(): R|kotlin/CharSequence?|
|
||||
|
||||
public abstract fun foo(): R|kotlin/String?|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/InheritMethodsDifferentReturnTypes.Super1|, R|test/InheritMethodsDifferentReturnTypes.Super2| {
|
||||
}
|
||||
|
||||
}
|
||||
-1
@@ -19,4 +19,3 @@ public final class InheritMethodsDifferentReturnTypesGeneric : R|kotlin/Any| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
public final class InheritMethodsDifferentReturnTypesGeneric : R|kotlin/Any| {
|
||||
public constructor(): R|test/InheritMethodsDifferentReturnTypesGeneric|
|
||||
|
||||
public abstract interface Super1<F, B> : R|kotlin/Any| {
|
||||
public abstract fun bar(): R|B?|
|
||||
|
||||
public abstract fun foo(): R|F?|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Super2<FF, BB> : R|kotlin/Any| {
|
||||
public abstract fun bar(): R|BB?|
|
||||
|
||||
public abstract fun foo(): R|FF?|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/InheritMethodsDifferentReturnTypesGeneric.Super1<kotlin/String, kotlin/CharSequence>|, R|test/InheritMethodsDifferentReturnTypesGeneric.Super2<kotlin/CharSequence, kotlin/String>| {
|
||||
}
|
||||
|
||||
}
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
public abstract interface RemoveRedundantProjectionKind : R|kotlin/Any| {
|
||||
public abstract fun f(p0: R|kotlin/collections/Collection<kotlin/CharSequence?>?|): R|kotlin/Unit|
|
||||
|
||||
public abstract fun f(p0: R|kotlin/Comparable<kotlin/CharSequence?>?|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public final class Some : R|kotlin/Any| {
|
||||
public constructor(): R|test/Some|
|
||||
|
||||
public final companion object Companion : R|kotlin/Any| {
|
||||
private constructor(): R|test/Some.Companion|
|
||||
|
||||
public final annotation class TestAnnotation : R|kotlin/Annotation| {
|
||||
public constructor(): R|test/Some.Companion.TestAnnotation|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
public final fun <T> foo(t: R|T|): R|T|
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
public abstract interface PropagateTypeArgumentNullable : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun invOutR(): R|kotlin/collections/MutableList<kotlin/collections/List<kotlin/String?>>|
|
||||
|
||||
public abstract fun invOutS(p: R|kotlin/collections/MutableList<kotlin/collections/List<kotlin/String?>>|): R|kotlin/Unit|
|
||||
|
||||
public abstract fun invR(): R|kotlin/collections/MutableList<kotlin/String?>|
|
||||
|
||||
public abstract fun outOutS(p: R|kotlin/collections/List<kotlin/collections/List<kotlin/String?>>|): R|kotlin/Unit|
|
||||
|
||||
public abstract fun outR(): R|kotlin/collections/List<kotlin/String?>|
|
||||
|
||||
public abstract fun outS(p: R|kotlin/collections/List<kotlin/String?>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/PropagateTypeArgumentNullable.Super| {
|
||||
public abstract fun invOutR(): R|kotlin/collections/MutableList<kotlin/collections/List<kotlin/String?>>|
|
||||
|
||||
public abstract fun invOutS(p: R|kotlin/collections/MutableList<kotlin/collections/List<kotlin/String?>>|): R|kotlin/Unit|
|
||||
|
||||
public abstract fun invR(): R|kotlin/collections/MutableList<kotlin/String?>|
|
||||
|
||||
public abstract fun outOutS(p: R|kotlin/collections/List<kotlin/collections/List<kotlin/String?>>|): R|kotlin/Unit|
|
||||
|
||||
public abstract fun outR(): R|kotlin/collections/List<kotlin/String?>|
|
||||
|
||||
public abstract fun outS(p: R|kotlin/collections/List<kotlin/String?>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface ChangeProjectionKind1 : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p: R|kotlin/collections/MutableList<in kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/ChangeProjectionKind1.Super| {
|
||||
public abstract fun foo(p: R|kotlin/collections/MutableList<in kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface ChangeProjectionKind2 : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p: R|kotlin/collections/MutableList<kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/ChangeProjectionKind2.Super| {
|
||||
public abstract fun foo(p: R|kotlin/collections/MutableList<kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
public abstract interface DeeplySubstitutedClassParameter : R|kotlin/Any| {
|
||||
public abstract interface Super<T> : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(t: R|T|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Middle<E> : R|test/DeeplySubstitutedClassParameter.Super<E>| {
|
||||
public abstract fun foo(t: R|E|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/DeeplySubstitutedClassParameter.Middle<kotlin/String>| {
|
||||
public abstract fun foo(t: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
public abstract interface DeeplySubstitutedClassParameter2 : R|kotlin/Any| {
|
||||
public abstract interface Super<T> : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(t: R|T|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Middle<E> : R|test/DeeplySubstitutedClassParameter2.Super<E>| {
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/DeeplySubstitutedClassParameter2.Middle<kotlin/String>| {
|
||||
public abstract fun foo(t: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface InheritMutability : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p: R|kotlin/collections/MutableList<kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/InheritMutability.Super| {
|
||||
public abstract fun foo(p: R|kotlin/collections/MutableList<kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface InheritNotVararg : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p0: R|kotlin/Array<out kotlin/String>?|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/InheritNotVararg.Super| {
|
||||
public abstract fun foo(p0: R|kotlin/Array<out kotlin/String>?|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface InheritNotVarargInteger : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p0: R|kotlin/Array<out kotlin/Int>?|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/InheritNotVarargInteger.Super| {
|
||||
public abstract fun foo(p0: R|kotlin/Array<out kotlin/Int>?|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface InheritNotVarargNotNull : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p: R|kotlin/Array<out kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/InheritNotVarargNotNull.Super| {
|
||||
public abstract fun foo(p: R|kotlin/Array<out kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface InheritNotVarargPrimitive : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p0: R|kotlin/IntArray?|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/InheritNotVarargPrimitive.Super| {
|
||||
public abstract fun foo(p0: R|kotlin/IntArray?|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface InheritNullability : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p0: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/InheritNullability.Super| {
|
||||
public abstract fun foo(p0: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface InheritProjectionKind : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p: R|kotlin/collections/MutableList<in kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/InheritProjectionKind.Super| {
|
||||
public abstract fun foo(p: R|kotlin/collections/MutableList<in kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface InheritReadOnliness : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p: R|kotlin/collections/List<kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/InheritReadOnliness.Super| {
|
||||
public abstract fun foo(p: R|kotlin/collections/List<kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface InheritVararg : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(vararg p0: R|kotlin/Array<out kotlin/String?>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/InheritVararg.Super| {
|
||||
public abstract fun foo(vararg p0: R|kotlin/Array<out kotlin/String?>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface InheritVarargInteger : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(vararg p0: R|kotlin/Array<out kotlin/Int?>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/InheritVarargInteger.Super| {
|
||||
public abstract fun foo(vararg p0: R|kotlin/Array<out kotlin/Int?>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface InheritVarargNotNull : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(vararg p: R|kotlin/Array<out kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/InheritVarargNotNull.Super| {
|
||||
public abstract fun foo(vararg p: R|kotlin/Array<out kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface InheritVarargPrimitive : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(vararg p0: R|kotlin/IntArray|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/InheritVarargPrimitive.Super| {
|
||||
public abstract fun foo(vararg p0: R|kotlin/IntArray|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
public abstract interface Kt3302 : R|kotlin/Any| {
|
||||
public abstract interface BSONObject : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun put(p0: R|kotlin/String|, p1: R|kotlin/Any|): R|kotlin/Any?|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface LinkedHashMap<K, V> : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun put(key: R|K|, value: R|V|): R|V?|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface BasicBSONObject : R|test/Kt3302.LinkedHashMap<kotlin/String, kotlin/Any>|, R|test/Kt3302.BSONObject| {
|
||||
public abstract fun put(key: R|kotlin/String|, value: R|kotlin/Any|): R|kotlin/Any?|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface MutableToReadOnly : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p: R|kotlin/collections/MutableList<kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/MutableToReadOnly.Super| {
|
||||
public abstract fun foo(p: R|kotlin/collections/MutableList<kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface NotNullToNullable : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p0: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/NotNullToNullable.Super| {
|
||||
public abstract fun foo(p0: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface NullableToNotNull : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p0: R|kotlin/String?|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/NullableToNotNull.Super| {
|
||||
public abstract fun foo(p0: R|kotlin/String?|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface NullableToNotNullKotlinSignature : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p: R|kotlin/String?|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/NullableToNotNullKotlinSignature.Super| {
|
||||
public abstract fun foo(p: R|kotlin/String?|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface OverrideWithErasedParameter : R|kotlin/Any| {
|
||||
public abstract interface Super<T> : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p0: R|T?|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub<T> : R|test/OverrideWithErasedParameter.Super<T>| {
|
||||
public abstract fun foo(p0: R|T?|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface ReadOnlyToMutable : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p: R|kotlin/collections/List<kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/ReadOnlyToMutable.Super| {
|
||||
public abstract fun foo(p: R|kotlin/collections/List<kotlin/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
public abstract interface SubclassFromGenericAndNot : R|kotlin/Any| {
|
||||
public abstract interface NonGeneric : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(p0: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Generic<T> : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(key: R|T|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/SubclassFromGenericAndNot.NonGeneric|, R|test/SubclassFromGenericAndNot.Generic<kotlin/String>| {
|
||||
public abstract fun foo(key: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface SubstitutedClassParameter : R|kotlin/Any| {
|
||||
public abstract interface Super<T> : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(t: R|T|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/SubstitutedClassParameter.Super<kotlin/String>| {
|
||||
public abstract fun foo(t: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
public abstract interface SubstitutedClassParameters : R|kotlin/Any| {
|
||||
public abstract interface Super1<T> : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(t: R|T|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Super2<E> : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(t: R|E|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/SubstitutedClassParameters.Super1<kotlin/String>|, R|test/SubstitutedClassParameters.Super2<kotlin/String>| {
|
||||
public abstract fun foo(t: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface AddNotNullJavaSubtype : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(): R|kotlin/CharSequence?|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/AddNotNullJavaSubtype.Super| {
|
||||
public abstract fun foo(): R|kotlin/String|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
public abstract interface AddNotNullSameJavaType : R|kotlin/Any| {
|
||||
public abstract interface Super : R|kotlin/Any| {
|
||||
public abstract fun dummy(): R|kotlin/Unit|
|
||||
|
||||
public abstract fun foo(): R|kotlin/CharSequence?|
|
||||
|
||||
}
|
||||
|
||||
public abstract interface Sub : R|test/AddNotNullSameJavaType.Super| {
|
||||
public abstract fun foo(): R|kotlin/CharSequence|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user