diff --git a/compiler/testData/cli/jvm/firVsClassicAnnotation.args b/compiler/testData/cli/jvm/firVsClassicAnnotation.args new file mode 100644 index 00000000000..4da212cfd5c --- /dev/null +++ b/compiler/testData/cli/jvm/firVsClassicAnnotation.args @@ -0,0 +1,6 @@ +$TESTDATA_DIR$/firVsClassicAnnotation.kt +-classpath +$TESTDATA_DIR$/firVsClassicAnnotation +-Xuse-fir +-d +$TEMP_DIR$ diff --git a/compiler/testData/cli/jvm/firVsClassicAnnotation.kt b/compiler/testData/cli/jvm/firVsClassicAnnotation.kt new file mode 100644 index 00000000000..1fb8ae86288 --- /dev/null +++ b/compiler/testData/cli/jvm/firVsClassicAnnotation.kt @@ -0,0 +1,24 @@ +// Library part (build by FE 1.0) + +//package lib +// +//@Target(AnnotationTarget.PROPERTY, AnnotationTarget.FIELD) +//annotation class Property( +// val description: String = "", +// val ignore: Boolean = false, +// +// val externalName: String = "" +//) +// +//open class LocatableRunConfigurationOptions { +// @Property(ignore = true) +// val isNameGenerated by lazy { false } +//} + +// Main part + +package use + +import lib.LocatableRunConfigurationOptions + +class JvmMainMethodRunConfigurationOptions : LocatableRunConfigurationOptions() diff --git a/compiler/testData/cli/jvm/firVsClassicAnnotation.out b/compiler/testData/cli/jvm/firVsClassicAnnotation.out new file mode 100644 index 00000000000..f23634d9e19 --- /dev/null +++ b/compiler/testData/cli/jvm/firVsClassicAnnotation.out @@ -0,0 +1,110 @@ +warning: ATTENTION! + This build uses in-dev FIR: + -Xuse-fir +exception: java.lang.IllegalStateException: Exception while evaluating constants in file firVsClassicAnnotation.kt + at org.jetbrains.kotlin.fir.backend.evaluate.IrConstTransformerKt.evaluateConstants(IrConstTransformer.kt:27) + at org.jetbrains.kotlin.fir.backend.Fir2IrConverter$Companion.createModuleFragment(Fir2IrConverter.kt:324) + at org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade.convertToIr(FirAnalyzerFacade.kt:110) + at org.jetbrains.kotlin.cli.jvm.compiler.FirKotlinToJvmBytecodeCompiler.compileModule(FirKotlinToJvmBytecodeCompiler.kt:139) + at org.jetbrains.kotlin.cli.jvm.compiler.FirKotlinToJvmBytecodeCompiler.compileModulesUsingFrontendIR(FirKotlinToJvmBytecodeCompiler.kt:110) + at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:87) + at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli$default(KotlinToJVMBytecodeCompiler.kt:60) + at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:170) + at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52) + at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:92) + at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44) + at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98) + at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:76) + at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:45) + at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMainNoExit(CLITool.kt:227) + at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMainNoExit$default(CLITool.kt:225) + at org.jetbrains.kotlin.test.CompilerTestUtil.executeCompiler(CompilerTestUtil.kt:41) + at org.jetbrains.kotlin.cli.AbstractCliTest.executeCompilerGrabOutput(AbstractCliTest.java:73) + at org.jetbrains.kotlin.cli.AbstractCliTest.doTest(AbstractCliTest.java:105) + at org.jetbrains.kotlin.cli.AbstractCliTest.doJvmTest(AbstractCliTest.java:273) + at org.jetbrains.kotlin.test.KotlinTestUtils.lambda$testWithCustomIgnoreDirective$4(KotlinTestUtils.java:522) + at org.jetbrains.kotlin.test.KotlinTestUtils.runTestImpl(KotlinTestUtils.java:492) + at org.jetbrains.kotlin.test.KotlinTestUtils.runTest(KotlinTestUtils.java:435) + at org.jetbrains.kotlin.cli.CliTestGenerated$Jvm.runTest(CliTestGenerated.java:27) + at org.jetbrains.kotlin.cli.CliTestGenerated$Jvm.testFirVsClassicAnnotation(CliTestGenerated.java:331) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at junit.framework.TestCase.runTest(TestCase.java:176) + at org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase.lambda$runTest$5(KtUsefulTestCase.java:285) + at org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase.invokeTestRunnable(KtUsefulTestCase.java:312) + at org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase.runTest(KtUsefulTestCase.java:300) + at org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase.defaultRunBare(KtUsefulTestCase.java:323) + at org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase.runBare(KtUsefulTestCase.java:384) + at junit.framework.TestResult$1.protect(TestResult.java:122) + at junit.framework.TestResult.runProtected(TestResult.java:142) + at junit.framework.TestResult.run(TestResult.java:125) + at junit.framework.TestCase.run(TestCase.java:129) + at junit.framework.TestSuite.runTest(TestSuite.java:252) + at junit.framework.TestSuite.run(TestSuite.java:247) + at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86) + at org.jetbrains.kotlin.test.JUnit3RunnerWithInnersForGradle.run(JUnit3RunnerWithInnersForGradle.java:71) + at org.jetbrains.kotlin.test.JUnit3RunnerWithInners.run(JUnit3RunnerWithInners.java:54) + at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110) + at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58) + at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38) + at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62) + at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) + at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) + at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) + at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) + at com.sun.proxy.$Proxy2.processTestClass(Unknown Source) + at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:119) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) + at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) + at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182) + at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164) + at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414) + at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) + at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) + at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) + at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) + at java.lang.Thread.run(Thread.java:748) +Caused by: java.lang.IllegalStateException: Exception while interpreting annotation of a declaration PROPERTY FAKE_OVERRIDE name:isNameGenerated visibility:public modality:FINAL [fake_override,val]: Property(description = 'true', ignore = , externalName = ) + at org.jetbrains.kotlin.fir.backend.evaluate.IrConstTransformer.visitDeclaration(IrConstTransformer.kt:64) + at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitProperty(IrElementTransformerVoid.kt:78) + at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitProperty(IrElementTransformerVoid.kt:79) + at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitProperty(IrElementTransformerVoid.kt:24) + at org.jetbrains.kotlin.ir.declarations.IrProperty.accept(IrProperty.kt:49) + at org.jetbrains.kotlin.ir.IrElement$DefaultImpls.transform(IrElement.kt:32) + at org.jetbrains.kotlin.ir.IrElementBase.transform(IrElementBase.kt:19) + at org.jetbrains.kotlin.ir.util.TransformKt.transformInPlace(transform.kt:35) + at org.jetbrains.kotlin.ir.declarations.IrClass.transformChildren(IrClass.kt:66) + at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitDeclaration(IrElementTransformerVoid.kt:57) + at org.jetbrains.kotlin.fir.backend.evaluate.IrConstTransformer.visitDeclaration(IrConstTransformer.kt:66) + at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitClass(IrElementTransformerVoid.kt:66) + at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitClass(IrElementTransformerVoid.kt:67) + at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitClass(IrElementTransformerVoid.kt:24) + at org.jetbrains.kotlin.ir.declarations.IrClass.accept(IrClass.kt:55) + at org.jetbrains.kotlin.ir.IrElement$DefaultImpls.transform(IrElement.kt:32) + at org.jetbrains.kotlin.ir.IrElementBase.transform(IrElementBase.kt:19) + at org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl.transformChildren(IrFileImpl.kt:89) + at org.jetbrains.kotlin.fir.backend.evaluate.IrConstTransformerKt.evaluateConstants(IrConstTransformer.kt:25) + ... 73 more +Caused by: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String + at org.jetbrains.kotlin.ir.interpreter.IrTreeBuildUtilsKt.toIrConstOrNull(IrTreeBuildUtils.kt:57) + at org.jetbrains.kotlin.ir.interpreter.IrTreeBuildUtilsKt.toIrConst(IrTreeBuildUtils.kt:65) + at org.jetbrains.kotlin.fir.backend.evaluate.IrConstTransformer.convertToConstIfPossible(IrConstTransformer.kt:115) + at org.jetbrains.kotlin.fir.backend.evaluate.IrConstTransformer.transformSingleArg(IrConstTransformer.kt:105) + at org.jetbrains.kotlin.fir.backend.evaluate.IrConstTransformer.transformAnnotation(IrConstTransformer.kt:80) + at org.jetbrains.kotlin.fir.backend.evaluate.IrConstTransformer.transformAnnotations(IrConstTransformer.kt:71) + at org.jetbrains.kotlin.fir.backend.evaluate.IrConstTransformer.visitDeclaration(IrConstTransformer.kt:62) + ... 91 more + +INTERNAL_ERROR diff --git a/compiler/testData/cli/jvm/firVsClassicAnnotation/lib/LocatableRunConfigurationOptions$isNameGenerated$2.class b/compiler/testData/cli/jvm/firVsClassicAnnotation/lib/LocatableRunConfigurationOptions$isNameGenerated$2.class new file mode 100644 index 00000000000..61dd8ebea73 Binary files /dev/null and b/compiler/testData/cli/jvm/firVsClassicAnnotation/lib/LocatableRunConfigurationOptions$isNameGenerated$2.class differ diff --git a/compiler/testData/cli/jvm/firVsClassicAnnotation/lib/LocatableRunConfigurationOptions.class b/compiler/testData/cli/jvm/firVsClassicAnnotation/lib/LocatableRunConfigurationOptions.class new file mode 100644 index 00000000000..cc1483f4e3c Binary files /dev/null and b/compiler/testData/cli/jvm/firVsClassicAnnotation/lib/LocatableRunConfigurationOptions.class differ diff --git a/compiler/testData/cli/jvm/firVsClassicAnnotation/lib/Property.class b/compiler/testData/cli/jvm/firVsClassicAnnotation/lib/Property.class new file mode 100644 index 00000000000..9a22b7981c0 Binary files /dev/null and b/compiler/testData/cli/jvm/firVsClassicAnnotation/lib/Property.class differ diff --git a/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java index b7a5e1cdcd8..a01074d2f65 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java @@ -326,6 +326,11 @@ public class CliTestGenerated extends AbstractCliTest { runTest("compiler/testData/cli/jvm/firStdlibDependency.args"); } + @TestMetadata("firVsClassicAnnotation.args") + public void testFirVsClassicAnnotation() throws Exception { + runTest("compiler/testData/cli/jvm/firVsClassicAnnotation.args"); + } + @TestMetadata("flagAllowingResultAsReturnType.args") public void testFlagAllowingResultAsReturnType() throws Exception { runTest("compiler/testData/cli/jvm/flagAllowingResultAsReturnType.args");