Add mode to run kapt with JVM IR, use in tests
Currently JVM IR is not supported in kapt, so almost all tests are failing, and thus are muted with IGNORE_BACKEND. #KT-49682
This commit is contained in:
@@ -85,6 +85,11 @@ public class JVMConfigurationKeys {
|
|||||||
public static final CompilerConfigurationKey<Boolean> IR =
|
public static final CompilerConfigurationKey<Boolean> IR =
|
||||||
CompilerConfigurationKey.create("IR");
|
CompilerConfigurationKey.create("IR");
|
||||||
|
|
||||||
|
// Temporary option to make it possible to test kapt with JVM IR. As soon as all tests start to pass, it can be removed,
|
||||||
|
// and the backend (old or IR) will be deduced from the compiler arguments provided by the user.
|
||||||
|
public static final CompilerConfigurationKey<Boolean> USE_KAPT_WITH_JVM_IR =
|
||||||
|
CompilerConfigurationKey.create("Enable JVM IR for kapt");
|
||||||
|
|
||||||
public static final CompilerConfigurationKey<Boolean> USE_PSI_CLASS_FILES_READING =
|
public static final CompilerConfigurationKey<Boolean> USE_PSI_CLASS_FILES_READING =
|
||||||
CompilerConfigurationKey.create("use a slower (PSI-based) class files reading implementation");
|
CompilerConfigurationKey.create("use a slower (PSI-based) class files reading implementation");
|
||||||
|
|
||||||
|
|||||||
@@ -185,9 +185,9 @@ object GenerationUtils {
|
|||||||
analysisResult: AnalysisResult,
|
analysisResult: AnalysisResult,
|
||||||
configureGenerationState: GenerationState.Builder.() -> Unit = {},
|
configureGenerationState: GenerationState.Builder.() -> Unit = {},
|
||||||
): GenerationState {
|
): GenerationState {
|
||||||
/* Currently Kapt3 only works with the old JVM backend, so disable IR for everything except actual bytecode generation. */
|
|
||||||
val isIrBackend =
|
val isIrBackend =
|
||||||
classBuilderFactory.classBuilderMode == ClassBuilderMode.FULL && configuration.getBoolean(JVMConfigurationKeys.IR)
|
(classBuilderFactory.classBuilderMode == ClassBuilderMode.FULL && configuration.getBoolean(JVMConfigurationKeys.IR)) ||
|
||||||
|
configuration.getBoolean(JVMConfigurationKeys.USE_KAPT_WITH_JVM_IR)
|
||||||
val generationState = GenerationState.Builder(
|
val generationState = GenerationState.Builder(
|
||||||
project, classBuilderFactory, analysisResult.moduleDescriptor, analysisResult.bindingContext,
|
project, classBuilderFactory, analysisResult.moduleDescriptor, analysisResult.bindingContext,
|
||||||
files, configuration
|
files, configuration
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ dependencies {
|
|||||||
api(project(":compiler:frontend"))
|
api(project(":compiler:frontend"))
|
||||||
api(project(":compiler:frontend.java"))
|
api(project(":compiler:frontend.java"))
|
||||||
api(project(":compiler:plugin-api"))
|
api(project(":compiler:plugin-api"))
|
||||||
|
implementation(project(":compiler:backend.jvm.entrypoint"))
|
||||||
|
|
||||||
compileOnly(toolsJarApi())
|
compileOnly(toolsJarApi())
|
||||||
compileOnly(project(":kotlin-annotation-processing-cli"))
|
compileOnly(project(":kotlin-annotation-processing-cli"))
|
||||||
|
|||||||
@@ -24,23 +24,27 @@ import com.sun.tools.javac.tree.TreeMaker
|
|||||||
import com.sun.tools.javac.util.Context
|
import com.sun.tools.javac.util.Context
|
||||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||||
import org.jetbrains.kotlin.backend.common.output.OutputFile
|
import org.jetbrains.kotlin.backend.common.output.OutputFile
|
||||||
|
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
|
||||||
import org.jetbrains.kotlin.base.kapt3.AptMode.APT_ONLY
|
import org.jetbrains.kotlin.base.kapt3.AptMode.APT_ONLY
|
||||||
import org.jetbrains.kotlin.base.kapt3.AptMode.WITH_COMPILATION
|
import org.jetbrains.kotlin.base.kapt3.AptMode.WITH_COMPILATION
|
||||||
import org.jetbrains.kotlin.base.kapt3.DetectMemoryLeaksMode
|
import org.jetbrains.kotlin.base.kapt3.DetectMemoryLeaksMode
|
||||||
import org.jetbrains.kotlin.base.kapt3.KaptFlag
|
import org.jetbrains.kotlin.base.kapt3.KaptFlag
|
||||||
import org.jetbrains.kotlin.base.kapt3.KaptOptions
|
import org.jetbrains.kotlin.base.kapt3.KaptOptions
|
||||||
import org.jetbrains.kotlin.base.kapt3.collectJavaSourceFiles
|
import org.jetbrains.kotlin.base.kapt3.collectJavaSourceFiles
|
||||||
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.OUTPUT
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.OUTPUT
|
||||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||||
import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil
|
import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil
|
||||||
import org.jetbrains.kotlin.cli.common.output.writeAll
|
import org.jetbrains.kotlin.cli.common.output.writeAll
|
||||||
import org.jetbrains.kotlin.cli.jvm.plugins.ServiceLoaderLite
|
import org.jetbrains.kotlin.cli.jvm.plugins.ServiceLoaderLite
|
||||||
import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
||||||
|
import org.jetbrains.kotlin.codegen.DefaultCodegenFactory
|
||||||
import org.jetbrains.kotlin.codegen.KotlinCodegenFacade
|
import org.jetbrains.kotlin.codegen.KotlinCodegenFacade
|
||||||
import org.jetbrains.kotlin.codegen.OriginCollectingClassBuilderFactory
|
import org.jetbrains.kotlin.codegen.OriginCollectingClassBuilderFactory
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.container.ComponentProvider
|
import org.jetbrains.kotlin.container.ComponentProvider
|
||||||
import org.jetbrains.kotlin.context.ProjectContext
|
import org.jetbrains.kotlin.context.ProjectContext
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
@@ -263,6 +267,7 @@ abstract class AbstractKapt3Extension(
|
|||||||
type = "java-production"
|
type = "java-production"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val isIrBackend = compilerConfiguration.getBoolean(JVMConfigurationKeys.USE_KAPT_WITH_JVM_IR)
|
||||||
val generationState = GenerationState.Builder(
|
val generationState = GenerationState.Builder(
|
||||||
project,
|
project,
|
||||||
builderFactory,
|
builderFactory,
|
||||||
@@ -271,7 +276,12 @@ abstract class AbstractKapt3Extension(
|
|||||||
files,
|
files,
|
||||||
compilerConfiguration
|
compilerConfiguration
|
||||||
).targetId(targetId)
|
).targetId(targetId)
|
||||||
.isIrBackend(false)
|
.isIrBackend(isIrBackend)
|
||||||
|
.codegenFactory(
|
||||||
|
if (isIrBackend)
|
||||||
|
JvmIrCodegenFactory(compilerConfiguration, compilerConfiguration.get(CLIConfigurationKeys.PHASE_CONFIG))
|
||||||
|
else DefaultCodegenFactory
|
||||||
|
)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val (classFilesCompilationTime) = measureTimeMillis {
|
val (classFilesCompilationTime) = measureTimeMillis {
|
||||||
|
|||||||
-4
@@ -7,10 +7,6 @@ package org.jetbrains.kotlin.kapt3.test
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.test.TargetBackend
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
|
|
||||||
/*
|
|
||||||
Currently Kapt3 only works with the old backend. To enable IR, modify the isIrBackend variable computation in GenerationsUtils.compileFiles()
|
|
||||||
*/
|
|
||||||
|
|
||||||
abstract class AbstractIrClassFileToSourceStubConverterTest : AbstractClassFileToSourceStubConverterTest() {
|
abstract class AbstractIrClassFileToSourceStubConverterTest : AbstractClassFileToSourceStubConverterTest() {
|
||||||
override val backend = TargetBackend.JVM_IR
|
override val backend = TargetBackend.JVM_IR
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-1
@@ -37,6 +37,8 @@ import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
|||||||
import org.jetbrains.kotlin.codegen.CodegenTestFiles
|
import org.jetbrains.kotlin.codegen.CodegenTestFiles
|
||||||
import org.jetbrains.kotlin.codegen.GenerationUtils
|
import org.jetbrains.kotlin.codegen.GenerationUtils
|
||||||
import org.jetbrains.kotlin.codegen.OriginCollectingClassBuilderFactory
|
import org.jetbrains.kotlin.codegen.OriginCollectingClassBuilderFactory
|
||||||
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
|
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
|
||||||
import org.jetbrains.kotlin.kapt.base.test.JavaKaptContextTest
|
import org.jetbrains.kotlin.kapt.base.test.JavaKaptContextTest
|
||||||
import org.jetbrains.kotlin.kapt3.Kapt3ComponentRegistrar.KaptComponentContributor
|
import org.jetbrains.kotlin.kapt3.Kapt3ComponentRegistrar.KaptComponentContributor
|
||||||
@@ -55,7 +57,6 @@ import org.jetbrains.kotlin.resolve.jvm.extensions.PartialAnalysisHandlerExtensi
|
|||||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.test.TestJdkKind
|
import org.jetbrains.kotlin.test.TestJdkKind
|
||||||
import org.jetbrains.kotlin.test.util.KtTestUtil
|
|
||||||
import org.jetbrains.kotlin.test.util.trimTrailingWhitespacesAndAddNewlineAtEOF
|
import org.jetbrains.kotlin.test.util.trimTrailingWhitespacesAndAddNewlineAtEOF
|
||||||
import org.jetbrains.kotlin.utils.PathUtil
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
|
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
|
||||||
@@ -172,6 +173,14 @@ abstract class AbstractKotlinKapt3Test : KotlinKapt3TestBase() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun updateConfiguration(configuration: CompilerConfiguration) {
|
||||||
|
super.updateConfiguration(configuration)
|
||||||
|
|
||||||
|
if (backend.isIR) {
|
||||||
|
configuration.put(JVMConfigurationKeys.USE_KAPT_WITH_JVM_IR, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected fun convert(
|
protected fun convert(
|
||||||
kaptContext: KaptContextForStubGeneration,
|
kaptContext: KaptContextForStubGeneration,
|
||||||
javaFiles: List<File>,
|
javaFiles: List<File>,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
enum class E {
|
enum class E {
|
||||||
X {
|
X {
|
||||||
override fun a() {}
|
override fun a() {}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
// NO_VALIDATION
|
// NO_VALIDATION
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
// NO_VALIDATION
|
// NO_VALIDATION
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
annotation class Anno1
|
annotation class Anno1
|
||||||
enum class Colors { WHITE, BLACK }
|
enum class Colors { WHITE, BLACK }
|
||||||
annotation class Anno2(
|
annotation class Anno2(
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
@file:kotlin.jvm.JvmName("AnnotationsTest")
|
@file:kotlin.jvm.JvmName("AnnotationsTest")
|
||||||
package test
|
package test
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
interface Parceler<T>
|
interface Parceler<T>
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
//FILE: lib/R.java
|
//FILE: lib/R.java
|
||||||
package lib;
|
package lib;
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
@Target(AnnotationTarget.FIELD)
|
@Target(AnnotationTarget.FIELD)
|
||||||
annotation class FieldAnno
|
annotation class FieldAnno
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
|
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
/** Test. */
|
/** Test. */
|
||||||
class Test {
|
class Test {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// !KEEP_KDOC_COMMENTS_IN_STUBS
|
// !KEEP_KDOC_COMMENTS_IN_STUBS
|
||||||
/** Test. */
|
/** Test. */
|
||||||
class Test {
|
class Test {
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
data class User(val firstName: String, val secondName: String, val age: Int) {
|
data class User(val firstName: String, val secondName: String, val age: Int) {
|
||||||
fun procedure() {}
|
fun procedure() {}
|
||||||
}
|
}
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
interface IntfWithoutDefaultImpls
|
interface IntfWithoutDefaultImpls
|
||||||
|
|
||||||
interface IntfWithDefaultImpls {
|
interface IntfWithDefaultImpls {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// STRICT
|
// STRICT
|
||||||
|
|
||||||
//FILE: test/ClassRefAnnotation.java
|
//FILE: test/ClassRefAnnotation.java
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
// STRICT
|
// STRICT
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
class Foo(
|
class Foo(
|
||||||
val z: Boolean = true,
|
val z: Boolean = true,
|
||||||
val b: Byte = 0.toByte(),
|
val b: Byte = 0.toByte(),
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// DUMP_DEFAULT_PARAMETER_VALUES
|
// DUMP_DEFAULT_PARAMETER_VALUES
|
||||||
|
|
||||||
class Foo(
|
class Foo(
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
|
|
||||||
@file:Suppress("UNRESOLVED_REFERENCE")
|
@file:Suppress("UNRESOLVED_REFERENCE")
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
package deprecated
|
package deprecated
|
||||||
|
|
||||||
@Deprecated("Deprecated annotation")
|
@Deprecated("Deprecated annotation")
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
|
|
||||||
package kapt
|
package kapt
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
class Test {
|
class Test {
|
||||||
private val foo = Example.FOO
|
private val foo = Example.FOO
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
enum class Enum1 {
|
enum class Enum1 {
|
||||||
BLACK, WHITE
|
BLACK, WHITE
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
|
|
||||||
@file:Suppress("UNRESOLVED_REFERENCE", "ANNOTATION_ARGUMENT_MUST_BE_CONST", "NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION")
|
@file:Suppress("UNRESOLVED_REFERENCE", "ANNOTATION_ARGUMENT_MUST_BE_CONST", "NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION")
|
||||||
@@ -27,6 +28,6 @@ class ErrorInDeclarations {
|
|||||||
|
|
||||||
annotation class Anno(val a: KClass<Any>)
|
annotation class Anno(val a: KClass<Any>)
|
||||||
|
|
||||||
// EXPECTED_ERROR(kotlin:11:1) cannot find symbol
|
|
||||||
// EXPECTED_ERROR(kotlin:6:1) cannot find symbol
|
|
||||||
// EXPECTED_ERROR(kotlin:12:1) cannot find symbol
|
// EXPECTED_ERROR(kotlin:12:1) cannot find symbol
|
||||||
|
// EXPECTED_ERROR(kotlin:7:1) cannot find symbol
|
||||||
|
// EXPECTED_ERROR(kotlin:13:1) cannot find symbol
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
package test
|
package test
|
||||||
|
|
||||||
internal annotation class Anno
|
internal annotation class Anno
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
// NO_VALIDATION
|
// NO_VALIDATION
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
@file:JvmName("FacadeName")
|
@file:JvmName("FacadeName")
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
class GenericRawSignatures {
|
class GenericRawSignatures {
|
||||||
fun <T> genericFun(): T? = null
|
fun <T> genericFun(): T? = null
|
||||||
fun nonGenericFun(): String? = null
|
fun nonGenericFun(): String? = null
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
import kotlinx.kapt.*
|
import kotlinx.kapt.*
|
||||||
|
|
||||||
class Test {
|
class Test {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
// FILE: lib/Prop.java
|
// FILE: lib/Prop.java
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
|
|
||||||
import java.util.concurrent.*
|
import java.util.concurrent.*
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
|
|
||||||
// FILE: a.kt
|
// FILE: a.kt
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
class HomeFragment {
|
class HomeFragment {
|
||||||
@Suppress("TOO_MANY_ARGUMENTS", "DELEGATE_SPECIAL_FUNCTION_MISSING")
|
@Suppress("TOO_MANY_ARGUMENTS", "DELEGATE_SPECIAL_FUNCTION_MISSING")
|
||||||
private val categoryNewsListPresenter by moxyPresenter {
|
private val categoryNewsListPresenter by moxyPresenter {
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
interface Context
|
interface Context
|
||||||
|
|
||||||
enum class Result {
|
enum class Result {
|
||||||
|
|||||||
@@ -1 +1,3 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
inline class Cl(val a: String)
|
inline class Cl(val a: String)
|
||||||
+2
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
class Test {
|
class Test {
|
||||||
private var a = FilterValueDelegate<Float>()
|
private var a = FilterValueDelegate<Float>()
|
||||||
private inner class FilterValueDelegate<T>
|
private inner class FilterValueDelegate<T>
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
interface Named {
|
interface Named {
|
||||||
val name: String?
|
val name: String?
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
enum class Color {
|
enum class Color {
|
||||||
BLACK, `WHI-TE`
|
BLACK, `WHI-TE`
|
||||||
}
|
}
|
||||||
@@ -5,5 +7,5 @@ enum class Color {
|
|||||||
@Anno(Color.`WHI-TE`)
|
@Anno(Color.`WHI-TE`)
|
||||||
annotation class Anno(val color: Color)
|
annotation class Anno(val color: Color)
|
||||||
|
|
||||||
// EXPECTED_ERROR(kotlin:5:1) an enum annotation value must be an enum constant
|
// EXPECTED_ERROR(kotlin:7:1) an enum annotation value must be an enum constant
|
||||||
// EXPECTED_ERROR(other:-1:-1) 'WHI-TE' is an invalid Java enum value name
|
// EXPECTED_ERROR(other:-1:-1) 'WHI-TE' is an invalid Java enum value name
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
package javadoc
|
package javadoc
|
||||||
|
|
||||||
/** Simple */
|
/** Simple */
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// !JVM_DEFAULT_MODE: all
|
// !JVM_DEFAULT_MODE: all
|
||||||
|
|
||||||
interface Foo {
|
interface Foo {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// !JVM_DEFAULT_MODE: all-compatibility
|
// !JVM_DEFAULT_MODE: all-compatibility
|
||||||
|
|
||||||
interface Foo {
|
interface Foo {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// !JVM_DEFAULT_MODE: disable
|
// !JVM_DEFAULT_MODE: disable
|
||||||
|
|
||||||
interface Foo {
|
interface Foo {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// !JVM_DEFAULT_MODE: enable
|
// !JVM_DEFAULT_MODE: enable
|
||||||
|
|
||||||
interface Foo {
|
interface Foo {
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
class State @JvmOverloads constructor(
|
class State @JvmOverloads constructor(
|
||||||
val someInt: Int,
|
val someInt: Int,
|
||||||
val someLong: Long,
|
val someLong: Long,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
class JvmStaticTest {
|
class JvmStaticTest {
|
||||||
companion object {
|
companion object {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
class Test {
|
class Test {
|
||||||
companion object A {
|
companion object A {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
fun crashMe(values: List<String>): String {
|
fun crashMe(values: List<String>): String {
|
||||||
throw UnsupportedOperationException()
|
throw UnsupportedOperationException()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
@file:Suppress("AMBIGUOUS_ANONYMOUS_TYPE_INFERRED")
|
@file:Suppress("AMBIGUOUS_ANONYMOUS_TYPE_INFERRED")
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
package test
|
package test
|
||||||
|
|
||||||
internal class MutableEntry<K, V>(
|
internal class MutableEntry<K, V>(
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
fun Date(double: Double): Date = Date(double.times(1000).toLong())
|
fun Date(double: Double): Date = Date(double.times(1000).toLong())
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
package test
|
package test
|
||||||
|
|
||||||
class Test<T : CharSequence, N : Number> {
|
class Test<T : CharSequence, N : Number> {
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
package test
|
package test
|
||||||
|
|
||||||
class Test<T : CharSequence, N : Number> {
|
class Test<T : CharSequence, N : Number> {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// STRICT
|
// STRICT
|
||||||
|
|
||||||
class Foo(private val string: String) {
|
class Foo(private val string: String) {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
|
|
||||||
// FILE: kapt/StaticMethod.java
|
// FILE: kapt/StaticMethod.java
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
@file:Suppress("NOTHING_TO_INLINE")
|
@file:Suppress("NOTHING_TO_INLINE")
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
|
|
||||||
package foo
|
package foo
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
|
|
||||||
@file:Suppress("UNRESOLVED_REFERENCE", "ANNOTATION_ARGUMENT_MUST_BE_CONST")
|
@file:Suppress("UNRESOLVED_REFERENCE", "ANNOTATION_ARGUMENT_MUST_BE_CONST")
|
||||||
@@ -14,6 +15,6 @@ class ErrorSomeMissingAnnotations
|
|||||||
|
|
||||||
annotation class Anno(val klass: KClass<*>)
|
annotation class Anno(val klass: KClass<*>)
|
||||||
|
|
||||||
// EXPECTED_ERROR(kotlin:12:1) cannot find symbol
|
// EXPECTED_ERROR(kotlin:10:1) cannot find symbol
|
||||||
// EXPECTED_ERROR(kotlin:6:1) cannot find symbol
|
// EXPECTED_ERROR(kotlin:13:1) cannot find symbol
|
||||||
// EXPECTED_ERROR(kotlin:9:1) cannot find symbol
|
// EXPECTED_ERROR(kotlin:7:1) cannot find symbol
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
class T : Runnable {
|
class T : Runnable {
|
||||||
@Override
|
@Override
|
||||||
public override fun run() {}
|
public override fun run() {}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
interface Intf
|
interface Intf
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
|
|
||||||
// FILE: te/st/a/JavaClass
|
// FILE: te/st/a/JavaClass
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
// JAVAC_OPTION -Xmaxerrs=1
|
// JAVAC_OPTION -Xmaxerrs=1
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
interface Intf {
|
interface Intf {
|
||||||
fun foo(abc: String)
|
fun foo(abc: String)
|
||||||
|
|
||||||
|
|||||||
+2
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
class CrashMe {
|
class CrashMe {
|
||||||
val resources = 1
|
val resources = 1
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
package modifiers
|
package modifiers
|
||||||
|
|
||||||
public class PublicClass public constructor()
|
public class PublicClass public constructor()
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
// FILE: a.kt
|
// FILE: a.kt
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
class Test {
|
class Test {
|
||||||
class Nested {
|
class Nested {
|
||||||
class NestedNested
|
class NestedNested
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// FILE: JavaClass.java
|
// FILE: JavaClass.java
|
||||||
public class JavaClass {
|
public class JavaClass {
|
||||||
public class Foo {
|
public class Foo {
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// FILE: test/JavaClass.java
|
// FILE: test/JavaClass.java
|
||||||
package test;
|
package test;
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
// NON_EXISTENT_CLASS
|
// NON_EXISTENT_CLASS
|
||||||
// NO_VALIDATION
|
// NO_VALIDATION
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
// NON_EXISTENT_CLASS
|
// NON_EXISTENT_CLASS
|
||||||
// NO_VALIDATION
|
// NO_VALIDATION
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// NON_EXISTENT_CLASS
|
// NON_EXISTENT_CLASS
|
||||||
// NO_VALIDATION
|
// NO_VALIDATION
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
object PrimitiveTypes {
|
object PrimitiveTypes {
|
||||||
const val booleanFalse: Boolean = false
|
const val booleanFalse: Boolean = false
|
||||||
const val booleanTrue: Boolean = true
|
const val booleanTrue: Boolean = true
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
class Test {
|
class Test {
|
||||||
val simple: String = "123"
|
val simple: String = "123"
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
annotation class Anno
|
annotation class Anno
|
||||||
|
|
||||||
@Target(AnnotationTarget.PROPERTY, AnnotationTarget.CLASS)
|
@Target(AnnotationTarget.PROPERTY, AnnotationTarget.CLASS)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// FILE: androidx/annotation/RecentlyNullable.java
|
// FILE: androidx/annotation/RecentlyNullable.java
|
||||||
package androidx.annotation;
|
package androidx.annotation;
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// FILE: lib/Anno.java
|
// FILE: lib/Anno.java
|
||||||
package lib;
|
package lib;
|
||||||
public @interface Anno {
|
public @interface Anno {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
|
|
||||||
package secondary
|
package secondary
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
class `:)` {
|
class `:)` {
|
||||||
lateinit val f: String
|
lateinit val f: String
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// STRIP_METADATA
|
// STRIP_METADATA
|
||||||
|
|
||||||
interface Context
|
interface Context
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
open class Test {
|
open class Test {
|
||||||
|
|
||||||
open fun getTestNoSuspend(text: String): String {
|
open fun getTestNoSuspend(text: String): String {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// CORRECT_ERROR_TYPES
|
// CORRECT_ERROR_TYPES
|
||||||
// NO_VALIDATION
|
// NO_VALIDATION
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
package test.another
|
package test.another
|
||||||
|
|
||||||
annotation class Anno(val value: String)
|
annotation class Anno(val value: String)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
object Foo {
|
object Foo {
|
||||||
const val aString: String = "foo"
|
const val aString: String = "foo"
|
||||||
const val aInt: Int = 3
|
const val aInt: Int = 3
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
// DUMP_DEFAULT_PARAMETER_VALUES
|
// DUMP_DEFAULT_PARAMETER_VALUES
|
||||||
|
|
||||||
package test
|
package test
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
class Subject {
|
class Subject {
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
package test
|
package test
|
||||||
|
|
||||||
internal class Simple {
|
internal class Simple {
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
package test
|
package test
|
||||||
|
|
||||||
internal annotation class MyAnnotation
|
internal annotation class MyAnnotation
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
package test
|
package test
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user