From a09013358194d2540a10c19aa323195984acae20 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Thu, 23 Jun 2016 16:40:00 +0300 Subject: [PATCH] Inline properties support in incremental compilation --- .../kotlin/codegen/inline/InlineCodegen.java | 24 ++++++++++ .../codegen/inline/inlineCodegenUtils.kt | 10 ++-- ...perimentalIncrementalJpsTestGenerated.java | 48 +++++++++++++++++++ .../build/IncrementalJpsTestGenerated.java | 48 +++++++++++++++++++ .../inlineClassValProperty/Usage.kt | 5 ++ .../inlineClassValProperty/build.log | 20 ++++++++ .../inlineClassValProperty/inline.kt | 6 +++ .../inlineClassValProperty/inline.kt.new | 6 +++ .../inlineClassVarProperty/build.log | 21 ++++++++ .../inlineClassVarProperty/inline.kt | 9 ++++ .../inlineClassVarProperty/inline.kt.new | 9 ++++ .../inlineClassVarProperty/usage.kt | 5 ++ .../inlineClassVarProperty/usageNotChanged.kt | 5 ++ .../build.log | 22 +++++++++ .../inline.kt | 3 ++ .../inline.kt.new | 3 ++ .../usage.kt | 3 ++ .../inlineTopLevelValProperty/build.log | 22 +++++++++ .../inlineTopLevelValProperty/inline.kt | 4 ++ .../inlineTopLevelValProperty/inline.kt.new | 4 ++ .../inlineTopLevelValProperty/usage.kt | 3 ++ .../build.log | 22 +++++++++ .../inline.kt | 4 ++ .../inline.kt.new | 4 ++ .../usage.kt | 3 ++ .../inlineTopLevelVarProperty/build.log | 22 +++++++++ .../inlineTopLevelVarProperty/inline.kt | 5 ++ .../inlineTopLevelVarProperty/inline.kt.new | 5 ++ .../inlineTopLevelVarProperty/usage.kt | 5 ++ .../usageNotChanged.kt | 5 ++ .../topLevelFunctionWithJvmName/build.log | 20 ++++++++ .../experimental-ic-build.log | 22 +++++++++ .../topLevelFunctionWithJvmName/function.kt | 3 ++ .../function.kt.new | 3 ++ .../topLevelFunctionWithJvmName/usage.kt | 3 ++ .../topLevelPropertyWithJvmName/build.log | 20 ++++++++ .../experimental-ic-build.log | 22 +++++++++ .../topLevelPropertyWithJvmName/property.kt | 4 ++ .../property.kt.new | 4 ++ .../topLevelPropertyWithJvmName/usage.kt | 3 ++ 40 files changed, 455 insertions(+), 4 deletions(-) create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/Usage.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/build.log create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/inline.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/inline.kt.new create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/build.log create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/inline.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/inline.kt.new create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/usage.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/usageNotChanged.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/build.log create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/inline.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/inline.kt.new create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/usage.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/build.log create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/inline.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/inline.kt.new create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/usage.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/build.log create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/inline.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/inline.kt.new create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/usage.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/build.log create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/inline.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/inline.kt.new create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/usage.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/usageNotChanged.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/build.log create mode 100644 jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/experimental-ic-build.log create mode 100644 jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/function.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/function.kt.new create mode 100644 jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/usage.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/build.log create mode 100644 jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/experimental-ic-build.log create mode 100644 jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/property.kt create mode 100644 jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/property.kt.new create mode 100644 jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/usage.kt diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.java index 0c89e612733..dbb38b3a657 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.java @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.codegen.intrinsics.IntrinsicArrayConstructorsKt; import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper; import org.jetbrains.kotlin.descriptors.*; +import org.jetbrains.kotlin.incremental.KotlinLookupLocation; import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache; import org.jetbrains.kotlin.name.ClassId; import org.jetbrains.kotlin.name.Name; @@ -46,6 +47,7 @@ import org.jetbrains.kotlin.resolve.jvm.AsmTypes; import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodParameterKind; import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodParameterSignature; import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature; +import org.jetbrains.kotlin.resolve.scopes.MemberScope; import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor; import org.jetbrains.kotlin.types.expressions.DoubleColonLHS; import org.jetbrains.kotlin.types.expressions.LabelResolver; @@ -129,9 +131,31 @@ public class InlineCodegen extends CallGenerator { if (!(functionDescriptor instanceof FictitiousArrayConstructor)) { reportIncrementalInfo(functionDescriptor, codegen.getContext().getFunctionDescriptor().getOriginal(), jvmSignature, state); + String functionOrAccessorName = typeMapper.mapAsmMethod(function).getName(); + //track changes for property accessor and @JvmName inline functions/property accessors + if(!functionOrAccessorName.equals(functionDescriptor.getName().asString())) { + MemberScope scope = getMemberScope(functionDescriptor); + if (scope != null) { + //Fake lookup to track track changes for property accessors and @JvmName functions/property accessors + scope.getContributedFunctions(Name.identifier(functionOrAccessorName), new KotlinLookupLocation(callElement)); + } + } } } + @Nullable + private static MemberScope getMemberScope(@NotNull FunctionDescriptor functionOrAccessor) { + CallableMemberDescriptor callableMemberDescriptor = JvmCodegenUtil.getDirectMember(functionOrAccessor); + DeclarationDescriptor classOrPackageFragment = callableMemberDescriptor.getContainingDeclaration(); + if (classOrPackageFragment instanceof ClassDescriptor) { + return ((ClassDescriptor) classOrPackageFragment).getUnsubstitutedMemberScope(); + } + else if (classOrPackageFragment instanceof PackageFragmentDescriptor) { + return ((PackageFragmentDescriptor) classOrPackageFragment).getMemberScope(); + } + return null; + } + @Override public void genCallInner( @NotNull Callable callableMethod, diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt index 3cdddcc30f4..17eb406b45d 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.codegen.inline import org.jetbrains.kotlin.codegen.ExpressionCodegen +import org.jetbrains.kotlin.codegen.JvmCodegenUtil import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource import org.jetbrains.kotlin.descriptors.FunctionDescriptor @@ -26,7 +27,6 @@ import org.jetbrains.kotlin.load.kotlin.VirtualFileKotlinClass import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache import org.jetbrains.kotlin.resolve.source.PsiSourceElement import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor -import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedSimpleFunctionDescriptor import org.jetbrains.org.objectweb.asm.Label import org.jetbrains.org.objectweb.asm.MethodVisitor @@ -43,10 +43,11 @@ fun FunctionDescriptor.getClassFilePath(typeMapper: KotlinTypeMapper, cache: Inc return when (source) { is KotlinJvmBinaryPackageSourceElement -> { - if (this !is DeserializedCallableMemberDescriptor) { + val directMember = JvmCodegenUtil.getDirectMember(this) + if (directMember !is DeserializedCallableMemberDescriptor) { throw AssertionError("Expected DeserializedCallableMemberDescriptor, got: $this") } - val kotlinClass = source.getContainingBinaryClass(this) ?: + val kotlinClass = source.getContainingBinaryClass(directMember) ?: throw AssertionError("Descriptor $this is not found, in: $source") if (kotlinClass !is VirtualFileKotlinClass) { throw AssertionError("Expected VirtualFileKotlinClass, got $kotlinClass") @@ -54,7 +55,8 @@ fun FunctionDescriptor.getClassFilePath(typeMapper: KotlinTypeMapper, cache: Inc kotlinClass.file.canonicalPath!! } is KotlinJvmBinarySourceElement -> { - assert(this is DeserializedSimpleFunctionDescriptor) { "Expected DeserializedSimpleFunctionDescriptor, got: $this" } + val directMember = JvmCodegenUtil.getDirectMember(this) + assert(directMember is DeserializedCallableMemberDescriptor) { "Expected DeserializedSimpleFunctionDescriptor, got: $this" } val kotlinClass = source.binaryClass as VirtualFileKotlinClass kotlinClass.file.canonicalPath!! } diff --git a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java index 4daade82888..c8b4fab5886 100644 --- a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java +++ b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java @@ -443,6 +443,18 @@ public class ExperimentalIncrementalJpsTestGenerated extends AbstractExperimenta doTest(fileName); } + @TestMetadata("inlineClassValProperty") + public void testInlineClassValProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/"); + doTest(fileName); + } + + @TestMetadata("inlineClassVarProperty") + public void testInlineClassVarProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/"); + doTest(fileName); + } + @TestMetadata("inlineFunctionRemoved") public void testInlineFunctionRemoved() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineFunctionRemoved/"); @@ -479,6 +491,30 @@ public class ExperimentalIncrementalJpsTestGenerated extends AbstractExperimenta doTest(fileName); } + @TestMetadata("inlineTopLevelFunctionWithJvmName") + public void testInlineTopLevelFunctionWithJvmName() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/"); + doTest(fileName); + } + + @TestMetadata("inlineTopLevelValProperty") + public void testInlineTopLevelValProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/"); + doTest(fileName); + } + + @TestMetadata("inlineTopLevelValPropertyWithJvmName") + public void testInlineTopLevelValPropertyWithJvmName() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/"); + doTest(fileName); + } + + @TestMetadata("inlineTopLevelVarProperty") + public void testInlineTopLevelVarProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/"); + doTest(fileName); + } + @TestMetadata("inlineTwoFunctionsOneChanged") public void testInlineTwoFunctionsOneChanged() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineTwoFunctionsOneChanged/"); @@ -845,6 +881,12 @@ public class ExperimentalIncrementalJpsTestGenerated extends AbstractExperimenta doTest(fileName); } + @TestMetadata("topLevelFunctionWithJvmName") + public void testTopLevelFunctionWithJvmName() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/"); + doTest(fileName); + } + @TestMetadata("topLevelMembersInTwoFiles") public void testTopLevelMembersInTwoFiles() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/topLevelMembersInTwoFiles/"); @@ -857,6 +899,12 @@ public class ExperimentalIncrementalJpsTestGenerated extends AbstractExperimenta doTest(fileName); } + @TestMetadata("topLevelPropertyWithJvmName") + public void testTopLevelPropertyWithJvmName() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/"); + doTest(fileName); + } + @TestMetadata("traitClassObjectConstantChanged") public void testTraitClassObjectConstantChanged() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/traitClassObjectConstantChanged/"); diff --git a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java index bcc80c08637..cd72810ef37 100644 --- a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java +++ b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java @@ -443,6 +443,18 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest { doTest(fileName); } + @TestMetadata("inlineClassValProperty") + public void testInlineClassValProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/"); + doTest(fileName); + } + + @TestMetadata("inlineClassVarProperty") + public void testInlineClassVarProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/"); + doTest(fileName); + } + @TestMetadata("inlineFunctionRemoved") public void testInlineFunctionRemoved() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineFunctionRemoved/"); @@ -479,6 +491,30 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest { doTest(fileName); } + @TestMetadata("inlineTopLevelFunctionWithJvmName") + public void testInlineTopLevelFunctionWithJvmName() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/"); + doTest(fileName); + } + + @TestMetadata("inlineTopLevelValProperty") + public void testInlineTopLevelValProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/"); + doTest(fileName); + } + + @TestMetadata("inlineTopLevelValPropertyWithJvmName") + public void testInlineTopLevelValPropertyWithJvmName() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/"); + doTest(fileName); + } + + @TestMetadata("inlineTopLevelVarProperty") + public void testInlineTopLevelVarProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/"); + doTest(fileName); + } + @TestMetadata("inlineTwoFunctionsOneChanged") public void testInlineTwoFunctionsOneChanged() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/inlineTwoFunctionsOneChanged/"); @@ -845,6 +881,12 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest { doTest(fileName); } + @TestMetadata("topLevelFunctionWithJvmName") + public void testTopLevelFunctionWithJvmName() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/"); + doTest(fileName); + } + @TestMetadata("topLevelMembersInTwoFiles") public void testTopLevelMembersInTwoFiles() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/topLevelMembersInTwoFiles/"); @@ -857,6 +899,12 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest { doTest(fileName); } + @TestMetadata("topLevelPropertyWithJvmName") + public void testTopLevelPropertyWithJvmName() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/"); + doTest(fileName); + } + @TestMetadata("traitClassObjectConstantChanged") public void testTraitClassObjectConstantChanged() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/traitClassObjectConstantChanged/"); diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/Usage.kt b/jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/Usage.kt new file mode 100644 index 00000000000..dc4eb09fea5 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/Usage.kt @@ -0,0 +1,5 @@ +package usage + +class Usage { + val x = inline.A().f +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/build.log b/jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/build.log new file mode 100644 index 00000000000..eb7f0e8375e --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/build.log @@ -0,0 +1,20 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/inline/A.class +End of files +Compiling files: + src/inline.kt +End of files +Marked as dirty by Kotlin: + src/Usage.kt +Exit code: ADDITIONAL_PASS_REQUIRED +------------------------------------------ +Cleaning output files: + out/production/module/usage/Usage.class +End of files +Compiling files: + src/Usage.kt +End of files +Exit code: OK +------------------------------------------ \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/inline.kt b/jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/inline.kt new file mode 100644 index 00000000000..bdf6a30ec34 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/inline.kt @@ -0,0 +1,6 @@ +package inline + +class A { + inline val f: Int + get() = 0 +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/inline.kt.new b/jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/inline.kt.new new file mode 100644 index 00000000000..e3476a57ae1 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineClassValProperty/inline.kt.new @@ -0,0 +1,6 @@ +package inline + +class A { + inline val f: Int + get() = 1 +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/build.log b/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/build.log new file mode 100644 index 00000000000..12ab1564d06 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/build.log @@ -0,0 +1,21 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/inline/A.class +End of files +Compiling files: + src/inline.kt +End of files +Marked as dirty by Kotlin: + src/usage.kt +Exit code: ADDITIONAL_PASS_REQUIRED +------------------------------------------ +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/usage/UsageKt.class +End of files +Compiling files: + src/usage.kt +End of files +Exit code: OK +------------------------------------------ \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/inline.kt b/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/inline.kt new file mode 100644 index 00000000000..f5e8fa6a4b1 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/inline.kt @@ -0,0 +1,9 @@ +package inline + +class A { + inline var f: Int + get() = 0 + set(p: Int) { + 0 + } +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/inline.kt.new b/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/inline.kt.new new file mode 100644 index 00000000000..05b3f2c0365 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/inline.kt.new @@ -0,0 +1,9 @@ +package inline + +class A { + inline var f: Int + get() = 0 + set(p: Int) { + 1 + } +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/usage.kt b/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/usage.kt new file mode 100644 index 00000000000..131c1a19732 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/usage.kt @@ -0,0 +1,5 @@ +package usage + +fun a() { + inline.A().f = 1 +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/usageNotChanged.kt b/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/usageNotChanged.kt new file mode 100644 index 00000000000..1043725e397 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineClassVarProperty/usageNotChanged.kt @@ -0,0 +1,5 @@ +package usage2 + +fun b() { + inline.A().f +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/build.log b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/build.log new file mode 100644 index 00000000000..98c5e9ece93 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/build.log @@ -0,0 +1,22 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/inline/InlineKt.class +End of files +Compiling files: + src/inline.kt +End of files +Marked as dirty by Kotlin: + src/usage.kt +Exit code: ADDITIONAL_PASS_REQUIRED +------------------------------------------ +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/usage/UsageKt.class +End of files +Compiling files: + src/usage.kt +End of files +Exit code: OK +------------------------------------------ diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/inline.kt b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/inline.kt new file mode 100644 index 00000000000..dbc194da3a1 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/inline.kt @@ -0,0 +1,3 @@ +package inline + + @JvmName("test") inline fun g() = 0 diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/inline.kt.new b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/inline.kt.new new file mode 100644 index 00000000000..a7cdecaf3fb --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/inline.kt.new @@ -0,0 +1,3 @@ +package inline + +@JvmName("test") inline fun g() = 1 diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/usage.kt b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/usage.kt new file mode 100644 index 00000000000..abd575668fd --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelFunctionWithJvmName/usage.kt @@ -0,0 +1,3 @@ +package usage + +val x = inline.g() \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/build.log b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/build.log new file mode 100644 index 00000000000..98c5e9ece93 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/build.log @@ -0,0 +1,22 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/inline/InlineKt.class +End of files +Compiling files: + src/inline.kt +End of files +Marked as dirty by Kotlin: + src/usage.kt +Exit code: ADDITIONAL_PASS_REQUIRED +------------------------------------------ +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/usage/UsageKt.class +End of files +Compiling files: + src/usage.kt +End of files +Exit code: OK +------------------------------------------ diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/inline.kt b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/inline.kt new file mode 100644 index 00000000000..511d4f1d576 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/inline.kt @@ -0,0 +1,4 @@ +package inline + +inline val f: Int + get() = 0 diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/inline.kt.new b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/inline.kt.new new file mode 100644 index 00000000000..033295b3f34 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/inline.kt.new @@ -0,0 +1,4 @@ +package inline + +inline val f: Int + get() = 1 diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/usage.kt b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/usage.kt new file mode 100644 index 00000000000..b11c96eea3d --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValProperty/usage.kt @@ -0,0 +1,3 @@ +package usage + +val x = inline.f \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/build.log b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/build.log new file mode 100644 index 00000000000..98c5e9ece93 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/build.log @@ -0,0 +1,22 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/inline/InlineKt.class +End of files +Compiling files: + src/inline.kt +End of files +Marked as dirty by Kotlin: + src/usage.kt +Exit code: ADDITIONAL_PASS_REQUIRED +------------------------------------------ +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/usage/UsageKt.class +End of files +Compiling files: + src/usage.kt +End of files +Exit code: OK +------------------------------------------ diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/inline.kt b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/inline.kt new file mode 100644 index 00000000000..ced1160f719 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/inline.kt @@ -0,0 +1,4 @@ +package inline + +inline val f: Int + @JvmName("getG") get() = 0 diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/inline.kt.new b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/inline.kt.new new file mode 100644 index 00000000000..7fe7e429c94 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/inline.kt.new @@ -0,0 +1,4 @@ +package inline + +inline val f: Int + @JvmName("getG") get() = 1 diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/usage.kt b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/usage.kt new file mode 100644 index 00000000000..b11c96eea3d --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelValPropertyWithJvmName/usage.kt @@ -0,0 +1,3 @@ +package usage + +val x = inline.f \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/build.log b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/build.log new file mode 100644 index 00000000000..98c5e9ece93 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/build.log @@ -0,0 +1,22 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/inline/InlineKt.class +End of files +Compiling files: + src/inline.kt +End of files +Marked as dirty by Kotlin: + src/usage.kt +Exit code: ADDITIONAL_PASS_REQUIRED +------------------------------------------ +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/usage/UsageKt.class +End of files +Compiling files: + src/usage.kt +End of files +Exit code: OK +------------------------------------------ diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/inline.kt b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/inline.kt new file mode 100644 index 00000000000..e345852dbb9 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/inline.kt @@ -0,0 +1,5 @@ +package inline + +inline var f: Int + get() = 0 + set(p: Int) {0} diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/inline.kt.new b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/inline.kt.new new file mode 100644 index 00000000000..bf8d995196a --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/inline.kt.new @@ -0,0 +1,5 @@ +package inline + +inline var f: Int + get() = 0 + set(p: Int) { 1 } \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/usage.kt b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/usage.kt new file mode 100644 index 00000000000..8f373aa1881 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/usage.kt @@ -0,0 +1,5 @@ +package usage + +fun a() { + inline.f = 1 +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/usageNotChanged.kt b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/usageNotChanged.kt new file mode 100644 index 00000000000..418b02b95f0 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/inlineTopLevelVarProperty/usageNotChanged.kt @@ -0,0 +1,5 @@ +package usage2 + +fun b() { + inline.f +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/build.log b/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/build.log new file mode 100644 index 00000000000..1462c579df1 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/build.log @@ -0,0 +1,20 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/inline/FunctionKt.class +End of files +Compiling files: + src/function.kt +End of files +Exit code: ADDITIONAL_PASS_REQUIRED +------------------------------------------ +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/usage/UsageKt.class +End of files +Compiling files: + src/usage.kt +End of files +Exit code: OK +------------------------------------------ \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/experimental-ic-build.log b/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/experimental-ic-build.log new file mode 100644 index 00000000000..cce51e9e605 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/experimental-ic-build.log @@ -0,0 +1,22 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/inline/FunctionKt.class +End of files +Compiling files: + src/function.kt +End of files +Marked as dirty by Kotlin: + src/usage.kt +Exit code: ADDITIONAL_PASS_REQUIRED +------------------------------------------ +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/usage/UsageKt.class +End of files +Compiling files: + src/usage.kt +End of files +Exit code: OK +------------------------------------------ \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/function.kt b/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/function.kt new file mode 100644 index 00000000000..b548d641698 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/function.kt @@ -0,0 +1,3 @@ +package inline + +@JvmName("oldName") fun g() = 0 diff --git a/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/function.kt.new b/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/function.kt.new new file mode 100644 index 00000000000..1f04d228c28 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/function.kt.new @@ -0,0 +1,3 @@ +package inline + +@JvmName("newName") fun g() = 1 diff --git a/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/usage.kt b/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/usage.kt new file mode 100644 index 00000000000..abd575668fd --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/topLevelFunctionWithJvmName/usage.kt @@ -0,0 +1,3 @@ +package usage + +val x = inline.g() \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/build.log b/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/build.log new file mode 100644 index 00000000000..980c6527681 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/build.log @@ -0,0 +1,20 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/test/PropertyKt.class +End of files +Compiling files: + src/property.kt +End of files +Exit code: ADDITIONAL_PASS_REQUIRED +------------------------------------------ +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/usage/UsageKt.class +End of files +Compiling files: + src/usage.kt +End of files +Exit code: OK +------------------------------------------ \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/experimental-ic-build.log b/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/experimental-ic-build.log new file mode 100644 index 00000000000..c9ee99392d6 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/experimental-ic-build.log @@ -0,0 +1,22 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/test/PropertyKt.class +End of files +Compiling files: + src/property.kt +End of files +Marked as dirty by Kotlin: + src/usage.kt +Exit code: ADDITIONAL_PASS_REQUIRED +------------------------------------------ +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/usage/UsageKt.class +End of files +Compiling files: + src/usage.kt +End of files +Exit code: OK +------------------------------------------ \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/property.kt b/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/property.kt new file mode 100644 index 00000000000..da702f5f509 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/property.kt @@ -0,0 +1,4 @@ +package test + +val g: Int + @JvmName("oldName") get() = 0 diff --git a/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/property.kt.new b/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/property.kt.new new file mode 100644 index 00000000000..39bbfb29c7e --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/property.kt.new @@ -0,0 +1,4 @@ +package test + +val g: Int + @JvmName("newName") get() = 0 \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/usage.kt b/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/usage.kt new file mode 100644 index 00000000000..06dfeea7c86 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/topLevelPropertyWithJvmName/usage.kt @@ -0,0 +1,3 @@ +package usage + +val x = test.g \ No newline at end of file