From 6660c9b26b89b87efd8ac8a497ff4d682ac11163 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 17 Aug 2021 11:00:35 +0300 Subject: [PATCH] FIR: add test repeating a problem with annotation mapping (KT-48298) --- .../cli/jvm/firVsClassicAnnotation.args | 6 + .../cli/jvm/firVsClassicAnnotation.kt | 24 ++++ .../cli/jvm/firVsClassicAnnotation.out | 110 ++++++++++++++++++ ...nfigurationOptions$isNameGenerated$2.class | Bin 0 -> 1193 bytes .../LocatableRunConfigurationOptions.class | Bin 0 -> 1368 bytes .../firVsClassicAnnotation/lib/Property.class | Bin 0 -> 932 bytes .../kotlin/cli/CliTestGenerated.java | 5 + 7 files changed, 145 insertions(+) create mode 100644 compiler/testData/cli/jvm/firVsClassicAnnotation.args create mode 100644 compiler/testData/cli/jvm/firVsClassicAnnotation.kt create mode 100644 compiler/testData/cli/jvm/firVsClassicAnnotation.out create mode 100644 compiler/testData/cli/jvm/firVsClassicAnnotation/lib/LocatableRunConfigurationOptions$isNameGenerated$2.class create mode 100644 compiler/testData/cli/jvm/firVsClassicAnnotation/lib/LocatableRunConfigurationOptions.class create mode 100644 compiler/testData/cli/jvm/firVsClassicAnnotation/lib/Property.class 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 0000000000000000000000000000000000000000..61dd8ebea732c557e6e5bc83186b0b6057c7a648 GIT binary patch literal 1193 zcmbVLYflqV5Iwg~*j6a-r}&_1i^>*6MB9*H1G-5qQAiWz(`|bxx81#Ky1R{j<0olM z#Assp?2j_eEma|4LfoXYvu9?`oqJ~bh@`>nQKT6$&fh-X3x!bLs390y}~S!%hyEtT2qIHpv-Xe(};CGJ$~Jbya2AE;WF z$lU6Axk9PQJKVInYM4)5*A`sm*Ygb1|E7#1!Z3F#egSP9F@{({D(SB?gfrO+LnLEm zD@pXhFc3w80RKRG3~QzTyE}Cmld9vk1jAS+d%;B*=1Xq7VK#+dZF8wSlPl%=T}eH& z?E2-vwuxrwoCa|WGsHXG4#f68!+7S+Mf^#OV$8q@#u-M>bg*4*ikhEKVh||2mi(nCwoufbUYt@6(9M!C3|#2g0t3A{$_{GQnh;qy9e1hp7)I$_!srcIQAwX_o^ z{GHTZj=cI3!^rVr%s4(YLa9XR_;5OuW6up8T4qQTxN_Bd#|=Ch2^i9skv)z@62c+z z7F#}ztmxKB?qR*Dc7?a4-qu}h7zRsHiE`jnMZ1U0&>s8J5tiymPg2sxU-=o5mZCi_ z+T8O5t-;`?s@bk5RfDd5;MN)XcVt6xKWG!VvEv5qn%I*1q^TZn^;M}G`V zX-!F-2>nQMLYBx&QwH51v4!vvk{`)qSSFi1L2;#9Go&X+nYzNHh^~l+zhL46IUzhC z8|#7tr;4M!;+0->2uN)Z(IjP_AzJv1>B|uHVdhWY6LhS865kMdeT1u@a9uY~ZQ&tV zgU&cfn8Yf5N2u*tJR&cIFxI;793Inqi860c)y+MGEzDa;lf^9yw{gcp2H8C@4-2@v LhmePR9`64Fi-QlQ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..cc1483f4e3cee83cf544795092738a5cde4aa56d GIT binary patch literal 1368 zcmbVM-*3}a6#lNA#Ho|EPF6xFP=1BdhJiz2tXo+}8z_nv0-`9I=#!INvfDa#Wjoc_ zQy(Vn|Jc(W_OfZeAEu~}`=ii4yM>|%A%rELbIB z-*qCVh~y@%r|o&bI7E26TbU9p$NLRX|@@ zZ0C_i#zYE+!0q<|uBfo(4CDjpNfwm7%94Qzfo!9-`E;#Szb~-d{4kuAJaWiSz{I4$ z+>Rf)%Cook2KMuz*G)*-8%L{}foXxsqnM`i-HWfttsszcxfZY&n(xkES$q``C$sWL zm@!er34!uB!Jc$wpHx|JEa@c56VPyqb)#=oC@}wC)K>(i$BHC}@k}811|N5+A&G7?e=NE7>hx523P&od&?)$EEJOh^n@|{B?fyv_v=1k0ELE!XQ6BWnv z{3y9aG8(Wrw#UEjI@B*q4lkbtr}Oo8v>i7{TWj$Yo=z6_DwAtFLKoBY^gljU(#w~ zJ$>+FMzgdh7c6~NtEHAVzCQTj;CqeUqM6DXR<@YRrY&tYmDR1x!A}|9POY~j*fmNU zDrkpw*9k+_U3<+|z!;Fk^__^D!hwp^KsLNR6)FzcaTqrxRrh;5is`2EWNSF+$lz%_ zgaXBQAlxAUUYACvfTrxcwH`e8b~7C4EU&F*p5T(3Km?l{{XJ(-}8k z1n(R53at$Fb!wfO159~`);-3OCyLcSk*)rUsS&KdQ2HISztF4U3(6_x0C{3gp+LQw zSVVS z*`uEHILWy95phevmx;VfnPbVTd_R7MYm8l^%cN;00cEUHYxo>@sT=g$-oUj6 rZct(=7B?IGNq({g5#lyJ-GUk7Oo-(WnGk1_MK#1+h?618AwK&bQSL*( literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9a22b7981c0dcd294b428f9a13bd25b290043b09 GIT binary patch literal 932 zcmah{O>a^`6g~6!dVNqzYps;p4{Jr(2sZ9qsfC1uwuE96%W8m;Oc~xIZys27#Et*M zmA}D-AuRn-#`~ZJOi0|^x%b?2?>#eje*gLT3&0y>8DdH{auwI<3D+A&z!(y@e86*x z+wI(C<5o1i2m%a;3zXZo<8e<@CE{&=RPuTu7Xj*8%Ri7lK|3j@fN;Zd75UGB=sFltO z4Ew7~=7Nq_=L<@7X?$(i6Vz_=;d1A~<1OxS!i?^~e>div5CiKFbSM2NPhRUa!`JaB zX&FhwG7@{%ctl5hc0?`144RW~MshqlHS+BJ!Io(n2_t3X15+J%KBZN#d_egk(OsnpZV8WdI2(S4{PH9`^IZ$jX;pP!lWqeM;dDc zScpCVH;56i{ttu7UlQ5C3uNf*Q?oenH|j7164><379J6_E$|pSc;dTtFo7f`b`e6V rjz9@}B|IgIecv3EaEK#fX*|Pm9hSy(lA{rsS_;Wu*Dy7r8Yh1Nls?>p literal 0 HcmV?d00001 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");