From 8594cfca469a1b02a23f4fae16e57ed9532414da Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 20 Nov 2015 16:20:05 +0300 Subject: [PATCH] Remove kotlin.jvm.internal.KotlinPackage and corresponding code --- .../JvmSerializationBindings.java | 35 +++--------------- .../jvm/diagnostics/JvmDeclarationOrigin.kt | 14 ++----- .../asJava/duplicateJvmSignatureUtil.kt | 17 ++++----- compiler/testData/cli/jvm/wrongAbiVersion.out | 3 +- .../bin/ClassWithWrongAbiVersion.class | Bin 795 -> 471 bytes .../bin/META-INF/main.kotlin_module | Bin 0 -> 42 bytes .../wrong/ClassWithInnerLambda$other$1.class | Bin 951 -> 1103 bytes .../bin/wrong/ClassWithInnerLambda.class | Bin 1780 -> 1397 bytes .../WrongPackage$wrong-package$0984b5e5.class | Bin 396 -> 0 bytes .../bin/wrong/WrongPackage.class | Bin 733 -> 0 bytes .../bin/wrong/Wrong_packageKt.class | Bin 0 -> 413 bytes .../cli/jvm/wrongAbiVersionLib/readme.txt | 2 +- .../kotlin/codegen/InlineTestUtil.kt | 11 +++--- .../AbstractJvmRuntimeDescriptorLoaderTest.kt | 5 +-- .../kotlin/load/java/JvmAnnotationNames.java | 5 +-- .../descriptors/LazyJavaPackageFragment.kt | 6 --- .../lazy/descriptors/LazyJavaPackageScope.kt | 25 +++---------- .../DeserializedDescriptorResolver.java | 8 ++-- .../load/kotlin/header/KotlinClassHeader.kt | 2 - ...eadKotlinClassHeaderAnnotationVisitor.java | 3 -- .../reflect/jvm/internal/KPackageImpl.kt | 8 +--- .../kotlin/jvm/internal/KotlinPackage.java | 35 ------------------ .../stubBuilder/KotlinClsStubBuilder.kt | 6 --- .../textBuilder/DecompiledTextFactory.kt | 6 +-- .../idea/versions/KotlinAbiVersionIndex.kt | 1 - .../ClsStubForWrongAbiVersionTest.kt | 2 +- .../DecompiledTextForWrongAbiVersionTest.kt | 2 +- .../kotlin/jps/build/KotlinBuilder.kt | 6 +-- .../jps/incremental/IncrementalCacheImpl.kt | 29 ++++++--------- .../classFilesComparison.kt | 8 ++-- .../AbstractProtoComparisonTest.kt | 6 +-- 31 files changed, 63 insertions(+), 182 deletions(-) create mode 100644 compiler/testData/cli/jvm/wrongAbiVersionLib/bin/META-INF/main.kotlin_module delete mode 100644 compiler/testData/cli/jvm/wrongAbiVersionLib/bin/wrong/WrongPackage$wrong-package$0984b5e5.class delete mode 100644 compiler/testData/cli/jvm/wrongAbiVersionLib/bin/wrong/WrongPackage.class create mode 100644 compiler/testData/cli/jvm/wrongAbiVersionLib/bin/wrong/Wrong_packageKt.class delete mode 100644 core/runtime.jvm/src/kotlin/jvm/internal/KotlinPackage.java diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializationBindings.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializationBindings.java index 3278e68923007..ae73e9ca80227 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializationBindings.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/serialization/JvmSerializationBindings.java @@ -17,19 +17,19 @@ package org.jetbrains.kotlin.codegen.serialization; import com.intellij.openapi.util.Pair; -import kotlin.jvm.functions.Function3; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor; import org.jetbrains.kotlin.descriptors.FunctionDescriptor; import org.jetbrains.kotlin.descriptors.PropertyDescriptor; import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor; -import org.jetbrains.kotlin.util.slicedMap.*; +import org.jetbrains.kotlin.util.slicedMap.BasicWritableSlice; +import org.jetbrains.kotlin.util.slicedMap.MutableSlicedMap; +import org.jetbrains.kotlin.util.slicedMap.SlicedMapImpl; +import org.jetbrains.kotlin.util.slicedMap.Slices; import org.jetbrains.org.objectweb.asm.Type; import org.jetbrains.org.objectweb.asm.commons.Method; -import java.util.Collection; - public final class JvmSerializationBindings { public static final SerializationMappingSlice METHOD_FOR_FUNCTION = SerializationMappingSlice.create(); @@ -70,32 +70,7 @@ public static SerializationMappingSetSlice create() { BasicWritableSlice.initSliceDebugNames(JvmSerializationBindings.class); } - private final MutableSlicedMap map; - - private JvmSerializationBindings(@NotNull MutableSlicedMap map) { - this.map = map; - } - - public JvmSerializationBindings() { - this(SlicedMapImpl.create()); - } - - @NotNull - public static JvmSerializationBindings union(@NotNull Collection bindings) { - final MutableSlicedMap result = SlicedMapImpl.create(); - - for (JvmSerializationBindings binding : bindings) { - binding.map.forEach(new Function3() { - @Override - public Void invoke(WritableSlice slice, Object key, Object value) { - result.put(slice, key, value); - return null; - } - }); - } - - return new JvmSerializationBindings(result); - } + private final MutableSlicedMap map = SlicedMapImpl.create(); public void put(@NotNull SerializationMappingSlice slice, @NotNull K key, @NotNull V value) { map.put(slice, key, value); diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/JvmDeclarationOrigin.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/JvmDeclarationOrigin.kt index 6fd57e7a022d3..f2253273494de 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/JvmDeclarationOrigin.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/JvmDeclarationOrigin.kt @@ -17,16 +17,12 @@ package org.jetbrains.kotlin.resolve.jvm.diagnostics import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.descriptors.DeclarationDescriptor -import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor -import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.descriptors.ClassDescriptor -import org.jetbrains.kotlin.psi.KtClassOrObject -import org.jetbrains.kotlin.descriptors.FunctionDescriptor -import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind.* -import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor +import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.psi.KtClassOrObject +import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils +import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind.* public enum class MemberKind { FIELD, METHOD } @@ -34,7 +30,6 @@ public data class RawSignature(public val name: String, public val desc: String, public enum class JvmDeclarationOriginKind { OTHER, - PACKAGE_FACADE, PACKAGE_PART, INTERFACE_DEFAULT_IMPL, DELEGATION_TO_DEFAULT_IMPLS, @@ -68,7 +63,6 @@ public fun OtherOrigin(descriptor: DeclarationDescriptor): JvmDeclarationOrigin public fun Bridge(descriptor: DeclarationDescriptor, element: PsiElement? = DescriptorToSourceUtils.descriptorToDeclaration(descriptor)): JvmDeclarationOrigin = JvmDeclarationOrigin(BRIDGE, element, descriptor) -public fun PackageFacade(descriptor: PackageFragmentDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(PACKAGE_FACADE, null, descriptor) public fun PackagePart(file: KtFile, descriptor: PackageFragmentDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(PACKAGE_PART, file, descriptor) /** diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/duplicateJvmSignatureUtil.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/duplicateJvmSignatureUtil.kt index 9691facf182e7..26d341fa279a5 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/duplicateJvmSignatureUtil.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/duplicateJvmSignatureUtil.kt @@ -17,18 +17,18 @@ package org.jetbrains.kotlin.asJava import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.diagnostics.Diagnostic -import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm.* -import org.jetbrains.kotlin.resolve.jvm.diagnostics.ConflictingJvmDeclarationsData -import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind.* -import org.jetbrains.kotlin.diagnostics.Errors.* -import org.jetbrains.kotlin.diagnostics.DiagnosticFactory.* import org.jetbrains.kotlin.diagnostics.DiagnosticFactory +import org.jetbrains.kotlin.diagnostics.DiagnosticFactory.cast +import org.jetbrains.kotlin.diagnostics.Errors.* import org.jetbrains.kotlin.fileClasses.NoResolveFileClassesProvider import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics +import org.jetbrains.kotlin.resolve.jvm.diagnostics.ConflictingJvmDeclarationsData import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm +import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm.* +import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind.* public fun getJvmSignatureDiagnostics(element: PsiElement, otherDiagnostics: Diagnostics, moduleScope: GlobalSearchScope): Diagnostics? { fun getDiagnosticsForFileFacade(file: KtFile): Diagnostics? { @@ -118,8 +118,8 @@ class FilteredJvmDiagnostics(val jvmDiagnostics: Diagnostics, val otherDiagnosti // in case of implementation copied from a super trait there will be both diagnostics on the same signature other.factory == ErrorsJvm.CONFLICTING_JVM_DECLARATIONS && (me.factory == ACCIDENTAL_OVERRIDE || me.factory == CONFLICTING_INHERITED_JVM_DECLARATIONS) - // there are paris of corresponding signatures that frequently clash simultaneously: package facade & part, trait and trait-impl - || other.data() higherThan me.data() + // there are paris of corresponding signatures that frequently clash simultaneously: multifile class & part, trait and trait-impl + || other.data().higherThan(me.data()) ) } } @@ -140,7 +140,6 @@ class FilteredJvmDiagnostics(val jvmDiagnostics: Diagnostics, val otherDiagnosti private infix fun ConflictingJvmDeclarationsData.higherThan(other: ConflictingJvmDeclarationsData): Boolean { return when (other.classOrigin.originKind) { - PACKAGE_PART -> this.classOrigin.originKind == PACKAGE_FACADE INTERFACE_DEFAULT_IMPL -> this.classOrigin.originKind != INTERFACE_DEFAULT_IMPL MULTIFILE_CLASS_PART -> this.classOrigin.originKind == MULTIFILE_CLASS else -> false diff --git a/compiler/testData/cli/jvm/wrongAbiVersion.out b/compiler/testData/cli/jvm/wrongAbiVersion.out index e5dd8d05d8d5f..e0c3fdf6be5be 100644 --- a/compiler/testData/cli/jvm/wrongAbiVersion.out +++ b/compiler/testData/cli/jvm/wrongAbiVersion.out @@ -8,6 +8,5 @@ public fun kotlin.Throwable.printStackTrace(writer: java.io.PrintWriter): kotlin (note: this may be caused by the fact that some classes compiled with an incompatible version of Kotlin were found in the classpath. Such classes cannot be loaded properly by this version of Kotlin compiler. See below for more information) 1.printStackTrace(2, 3) ^ -compiler/testData/cli/jvm/wrongAbiVersionLib/bin/ClassWithWrongAbiVersion.class: error: class 'ClassWithWrongAbiVersion' was compiled with an incompatible version of Kotlin. Its ABI version is unknown, expected ABI version is $ABI_VERSION$ -compiler/testData/cli/jvm/wrongAbiVersionLib/bin/wrong/WrongPackage.class: error: class 'wrong/WrongPackage' was compiled with an incompatible version of Kotlin. Its ABI version is unknown, expected ABI version is $ABI_VERSION$ +compiler/testData/cli/jvm/wrongAbiVersionLib/bin/ClassWithWrongAbiVersion.class: error: class 'ClassWithWrongAbiVersion' was compiled with an incompatible version of Kotlin. Its ABI version is 0.30.0, expected ABI version is $ABI_VERSION$ COMPILATION_ERROR \ No newline at end of file diff --git a/compiler/testData/cli/jvm/wrongAbiVersionLib/bin/ClassWithWrongAbiVersion.class b/compiler/testData/cli/jvm/wrongAbiVersionLib/bin/ClassWithWrongAbiVersion.class index 8e0d4bc08c8d2f307d24e258a8b221babf75ac2e..5e5e0082bf0fd8d698e278539d65d093622e0095 100644 GIT binary patch delta 258 zcmYL@y-LJT5QV?V&5yYob)&AUi^!^t*+#Ii5+P;Q+O^n1B8sGmus8Z1!P2L&5-fZG zU%(Sug05 Q&Jo83n;JQ+W6Kf#0nS(>{Qv*} literal 795 zcmah{T~8BH5IwWouU!^xt3^r?te|OCsO7cDvi`UhsDr zA2dGr1N>3ybW1Uspm&qGcV^C<+4=bX`VT@IdwVbUwI-_YczJZ35lJE$btpKL=5wUm^zaoVadMkA2_Ty z%kXCfQB_eGV@z??3jHS^WNhee8O!;NxLYXnqH z8f(P{8MIrdQkP6ULp+Md|7uF>atg0RZz%ds5(_-LVN}Xq;E(pB$_U#f`}aVng_dWn z_+PUvEFy2>4wfvKm@}YZnS0XoPaHzl_ItwZh(L<2>%5r=?%-v?l~BBAA*xIj0}m6F&QG{`H#MaAGuXPqT8{6@F|yhh6h7hZ$4KSPxq_@Q rWCDsm`ivVBH(`~fH8tWU(yVE?7s(`weBWYUhHcpvKX1PSg~-7y01QApOtXhh4;Ohq(l7>LiP%&7nF?`xyPrCHFo7`<{_*cFp zl4#-&@JAVEudP4=u}ODl=jEB1XXbwY`SAwmn#b#kHLB63E@|B{Yl-JWk}=FYk_Ve0_oCsPU&Fvj@-}HwCF>NoOf;pWl1BC!vYTJ- zClVh{vGNU122M78(k7LKXYsv?=X59W2+Mduk^vZm&f+D#cjz@o|J#SKs<>0dT{LPX*Lo^(##iLP|nPkEBpcKbhsaDGSG*xm#-dSH2`R z(ZnC%k5Xq(Xrj^7{jf7TJM+vlFWvh#Yx}kNbMCYIrvt;* zb(m=+7?x*VS3qf`7)pPmyffAe)p_RMs2)c2yKfa0rKKB1*BEkqAp0T+sfhRwIt+=i zRA&tKf1_B36hKggy3=t^k2)vaSIrZr(Q9=ahLltn{#Y;+%a!(sUvS&w)bGw+bHcDCC!YYy0Lm4ty?d!)$ zNmF~0;P>;mYw{+s!I0T=X}V-IJT?sUoh)hh8P@*|nZ^T#WV9xEJj4p|X!vJTY@zMD z-0Sl|@_{FM=3-cCOC_A?WFUf>CEJzfitA}WzqzhI4P4Qbk?VnSJwKG{{7C4bPvclS zo+>RTqAx>9XmzE0&CTkC*d?AxFwmZ2)exuMPM}UrT_($8dKF1Bl9}o!-28yGcccR= zrtLG2C-gQR>^)sElO(bs zX!_ibYB~$}S|&5>dD*kiIcLwa_t)?5KLD)YIbr;R=Q{P=W>aXrulz>Qaimugt?Hq$ zL4<)LaUya}!7;C^N3!PI2ogfR)IMP&T{?FCrgCyeC#~H3wo~(!>*(BePg}}oZVDjG zmRzr%JCc6Y6N(QD$8mkp1uDCKx!r8$2_zzj5T-8VQ;sh^M>KOq$M^W8s%aZB!dR^# zYsYVdCt8vtin@nFm`|6kwv)f$*)cHne5Mjd9JgZV!)?=QLutZf>H3S}@}_U@({lZW z^a#Oprb3vx9&WA^IJazLgb*o~cXkWq%`L**e@Zw#laFHzccK_Y^73WmV@;;;~o zA%MGt@S1XzzaGau495_{G$D1dtF!BV)fst*G2FR*B0bGh4>F@*mMKC^R8{5N%}Aj` z;S0iEawJ-qDFg!v$|Pum!ogJZEwP=nGDIO74+<->SIC5nU(!}!!Ya(9UfR*{YAUf& zuma1`!b-{xMI#q%W~r?^qvJV&FnC(^ISrW<|6=&!F_Sp7=^jdR%B_iJMR-b7n{wAI zg#MCpWVzj{O0VaM?x?yW{Iz_S9u!y-L?(>QVMa(080Mf`{;Q$eh Sghp0lSYxQ8SQ-yCB7Xop%2ee5 literal 1780 zcmah~>r>lC5Z{$7jEs25j*~hev;v1x;)Ix3p zfD5M~!f>fYnohWeAkXC*2wJuW7HJ^N)%w^zKWvk|D>fpjYUf4ULWqStAjH{$%0}01 zg^uSwuyW@pZ%7C;HP1gXPk7k$nd1f~b6qcFLLo5gURdw81?pUlBuu~ShE9i@;dd{% z;~skEV;(kGyUU+2pLIB0SvcU*Cjzoz&=IDt3rf`ueX`}Wf;gloF0EtUIvrqCgT7sa z`(*b@sI3c>T>*1sN2)c{>A!J1Bk`vE0T{)Zk4$N>u(VtOyVompS_dNnj>v%?Fi6>szL zL3)02iC6Nums{Vicw705Ufq8rw;9Tkt}rypk|G-!TM~T5t_r@Q zle{EjMy^g9WmIFuIw^iBSJa$NYCG{!BWF}l!Q%5W(PLJ@K$PXNQL?jRE3s5hZaa=@ zOXv^X%jjjB?5XOqAyr~2#a=YNKsEmK`L->~2NKiub-|a_W%5f-DTIemcvovtrAB@H zgtboD5s!l@5*NjK!}mIyQRoq@i*?$|#Gu*!uVpn@grx*LfR8jtz=%rOFH+Jf-T`${ zvgWl|yTN>iHQRhoEC}N@$K~~Ir^)?3Mcs9dTo!hH;;#R<^Gk*E!g)$V##*~(5|pk; z&^X)ab$iu4a{`A9+ixZVwMd`a=4dr2sJ72(?9lds{u!jJSV z!3wQ6dvwUa?MRE}7u+GhPw7M^>5ai^ByB;dPaC8CA-x(6JQ$~UA|S0bqQnJ7uyvRm z__sW_!sE#vwZ*n diff --git a/compiler/testData/cli/jvm/wrongAbiVersionLib/bin/wrong/WrongPackage$wrong-package$0984b5e5.class b/compiler/testData/cli/jvm/wrongAbiVersionLib/bin/wrong/WrongPackage$wrong-package$0984b5e5.class deleted file mode 100644 index fe19324995c993341280e7200b66bec987c8b5dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcma)&%}T>S6ot<;wbfW{?XLSSte_FGP;nK4ilk_0OI*q%9qQy~B9lqQ$8zh!2k@cP z+u+8Xv$(_g&YZ(=Kfm5T0Gy%EFnZC2S~(A!8SpseD>1Cm@$;`by_lRwV=-=nG4v9? z=1#^bavvokHf>l$|0GUQ!(c^R(>xr73`f(nFqu?Nvd$f;jL?c_j$gC+t1?f*$k@wx zSza>OJd&Z%r7V>7O^2bGO0{Hg{@pV4DL_@7!1a9h=ISwUXAA1_ilt!aPNfoeRUQew z;88}zo)?vl#kJgs!K_k7<|34(B-d4{Fx=2@N*thpCM^!2XJ~;of_+khnh|}gtuD9^DOWQ5fhG-6pkj3mdxv9qj!8fU{`U diff --git a/compiler/testData/cli/jvm/wrongAbiVersionLib/bin/wrong/WrongPackage.class b/compiler/testData/cli/jvm/wrongAbiVersionLib/bin/wrong/WrongPackage.class deleted file mode 100644 index 816be83a03e4fe707d5165475473f340fc7dee11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 733 zcma)4U2oE06n+jAI#^*8L@aK8AQ!6(t5avh>5_%Sg^A2egBM2uEWo{y*R_a9%s0l1G_gyJmly`l9sK3|FcSPZ2KA{0jA zL|Cri+@U>^{YXWUqjPrS_>8zYjtEOn`>x|T(JmpmZuSWI`q+;+w5Ue7+c^tZf&Acd zC2Mptu^cawfhSz+#e&zK9J@P&jel|5i%S=SX1V|PqS3SU&hM#Pt_Z^&^Z$Em(2&bw z8F>v$$YhW}fp@Y+KrsJSseVa{`n~4khxWGIR#DPWgqp<_lnHmv`(NJqPl0&ptgxM) z3_{2El0Vr9%0NVd;5N%Sz4CG`o!WTP**{Dw?)#%brMsH0TL+(pUe&bsH?>)#TKXt= zqgg|1p5v`h)as4ygGYv`Q;X87PE;h7mK(Q;T`g74P;t*xIIh|@Im6Q@}D0{!zG8nI#vN=%DQImOjDOIYJGJ-S6ot=CT4P(a^{19@L^q-f4Y+kxghFUh{Gl$okehTU)1(v0OzU&Gb>Rc} zP~uGx1UKh0-x=;X_v`!P6TlUEgzj6Bn|b(L>dPx9DbLl&1t3Ca!D|jP7W*zaztoytS5i? zm{6OsV?wXdrTY`Ado9ut`LyG6eUJ{MQD9x6&D;_|X#eXhg{xaGey_MpovggcXG;E# zwNbaLWvq%Pjx!<6$9z>Js%%N, sourceFiles: List) { + fun checkNoCallsToInline(files: Iterable, sourceFiles: List) { val inlineInfo = obtainInlineInfo(files) val inlineMethods = inlineInfo.inlineMethods assert(!inlineMethods.isEmpty()) { "There are no inline methods" } @@ -94,7 +93,7 @@ public object InlineTestUtil { private var skipMethodsOfThisClass = false override fun visitAnnotation(desc: String, visible: Boolean): AnnotationVisitor? { - if (desc == KOTLIN_PACKAGE_DESC || desc == KOTLIN_MULTIFILE_CLASS_DESC) { + if (desc == KOTLIN_MULTIFILE_CLASS_DESC) { skipMethodsOfThisClass = true } return null diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt b/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt index 21a342eda7704..0ee652ece796a 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt @@ -157,10 +157,7 @@ public abstract class AbstractJvmRuntimeDescriptorLoaderTest : TestCaseWithTmpdi val klass = classLoader.loadClass(className).sure { "Couldn't load class $className" } val header = ReflectKotlinClass.create(klass)?.getClassHeader() - if (header?.kind == KotlinClassHeader.Kind.PACKAGE_FACADE || - header?.kind == KotlinClassHeader.Kind.FILE_FACADE || - header?.kind == KotlinClassHeader.Kind.MULTIFILE_CLASS - ) { + if (header?.kind == KotlinClassHeader.Kind.FILE_FACADE || header?.kind == KotlinClassHeader.Kind.MULTIFILE_CLASS) { val packageView = module.getPackage(LoadDescriptorUtil.TEST_PACKAGE_FQNAME) if (!packageScopes.contains(packageView.memberScope)) { packageScopes.add(packageView.memberScope) diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.java index 88d0f72abb265..eaa8de0c46b02 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.java +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.java @@ -29,7 +29,6 @@ public final class JvmAnnotationNames { public static final FqName KOTLIN_CLASS = new FqName("kotlin.jvm.internal.KotlinClass"); - public static final FqName KOTLIN_PACKAGE = new FqName("kotlin.jvm.internal.KotlinPackage"); public static final FqName KOTLIN_FILE_FACADE = new FqName("kotlin.jvm.internal.KotlinFileFacade"); public static final FqName KOTLIN_MULTIFILE_CLASS = new FqName("kotlin.jvm.internal.KotlinMultifileClass"); public static final FqName KOTLIN_MULTIFILE_CLASS_PART = new FqName("kotlin.jvm.internal.KotlinMultifileClassPart"); @@ -81,9 +80,7 @@ public final class JvmAnnotationNames { private static final Set NULLABILITY_ANNOTATIONS = new HashSet(); private static final Set SPECIAL_META_ANNOTATIONS = new HashSet(); static { - for (FqName fqName : Arrays.asList( - KOTLIN_CLASS, KOTLIN_PACKAGE, KOTLIN_SYNTHETIC_CLASS, KOTLIN_INTERFACE_DEFAULT_IMPLS, KOTLIN_LOCAL_CLASS - )) { + for (FqName fqName : Arrays.asList(KOTLIN_CLASS, KOTLIN_SYNTHETIC_CLASS, KOTLIN_INTERFACE_DEFAULT_IMPLS, KOTLIN_LOCAL_CLASS)) { SPECIAL_ANNOTATIONS.add(JvmClassName.byFqNameWithoutInnerClasses(fqName)); } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageFragment.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageFragment.kt index e524071ac095a..ebc755ecc1399 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageFragment.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageFragment.kt @@ -22,8 +22,6 @@ import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext import org.jetbrains.kotlin.load.java.structure.JavaClass import org.jetbrains.kotlin.load.java.structure.JavaPackage import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinaryPackageSourceElement -import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinarySourceElement -import org.jetbrains.kotlin.load.kotlin.PackageClassUtils import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.storage.getValue @@ -39,10 +37,6 @@ class LazyJavaPackageFragment( LazyJavaClassDescriptor(c, this, javaClass.fqName!!, javaClass) } - internal val oldPackageFacade by c.storageManager.createNullableLazyValue { - c.components.kotlinClassFinder.findKotlinClass(PackageClassUtils.getPackageClassId(fqName)) - } - internal val kotlinBinaryClasses by c.storageManager.createLazyValue { val simpleNames = c.components.packageMapper.findPackageParts(fqName.asString()) simpleNames.map { diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt index b9fadcb876467..baaa36b3c3dc7 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt @@ -25,13 +25,12 @@ import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext import org.jetbrains.kotlin.load.java.lazy.resolveKotlinBinaryClass import org.jetbrains.kotlin.load.java.structure.JavaClass import org.jetbrains.kotlin.load.java.structure.JavaPackage -import org.jetbrains.kotlin.load.kotlin.DeserializedDescriptorResolver import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter -import org.jetbrains.kotlin.resolve.scopes.MemberScope +import org.jetbrains.kotlin.storage.getValue public class LazyJavaPackageScope( c: LazyJavaResolverContext, @@ -62,20 +61,8 @@ public class LazyJavaPackageScope( public fun getFacadeSimpleNameForPartSimpleName(partName: String): String? = partToFacade()[partName] - private val deserializedPackageScope = c.storageManager.createLazyValue { - if (ownerDescriptor.kotlinBinaryClasses.isEmpty()) { - // If the scope is queried but no package parts are found, there's a possibility that we're trying to load symbols - // from an old package with the binary-incompatible facade. - // We try to read the old package facade if there is one, to report the "incompatible ABI version" message. - ownerDescriptor.oldPackageFacade?.let { binaryClass -> - c.components.deserializedDescriptorResolver.readData(binaryClass, DeserializedDescriptorResolver.KOTLIN_PACKAGE_FACADE) - } - - MemberScope.Empty - } - else { - c.components.deserializedDescriptorResolver.createKotlinPackageScope(ownerDescriptor, ownerDescriptor.kotlinBinaryClasses) - } + private val deserializedPackageScope by c.storageManager.createLazyValue { + c.components.deserializedDescriptorResolver.createKotlinPackageScope(ownerDescriptor, ownerDescriptor.kotlinBinaryClasses) } private val classes = c.storageManager.createMemoizedFunctionWithNullableValues { name -> @@ -107,19 +94,19 @@ public class LazyJavaPackageScope( override fun getContributedVariables(name: Name, location: LookupLocation): Collection { // We should track lookups here because this scope can be used for kotlin packages too (if it doesn't contain toplevel properties nor functions). recordLookup(name, location) - return deserializedPackageScope().getContributedVariables(name, NoLookupLocation.FOR_ALREADY_TRACKED) + return deserializedPackageScope.getContributedVariables(name, NoLookupLocation.FOR_ALREADY_TRACKED) } override fun getContributedFunctions(name: Name, location: LookupLocation): List { // We should track lookups here because this scope can be used for kotlin packages too (if it doesn't contain toplevel properties nor functions). recordLookup(name, location) - return deserializedPackageScope().getContributedFunctions(name, NoLookupLocation.FOR_ALREADY_TRACKED) + super.getContributedFunctions(name, NoLookupLocation.FOR_ALREADY_TRACKED) + return deserializedPackageScope.getContributedFunctions(name, NoLookupLocation.FOR_ALREADY_TRACKED) + super.getContributedFunctions(name, NoLookupLocation.FOR_ALREADY_TRACKED) } override fun addExtraDescriptors(result: MutableSet, kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean) { - result.addAll(deserializedPackageScope().getContributedDescriptors(kindFilter, nameFilter)) + result.addAll(deserializedPackageScope.getContributedDescriptors(kindFilter, nameFilter)) } override fun computeMemberIndex(): MemberIndex = object : MemberIndex by EMPTY_MEMBER_INDEX { diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/DeserializedDescriptorResolver.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/DeserializedDescriptorResolver.java index 6d5f169d7eec8..163c43348fe1c 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/DeserializedDescriptorResolver.java +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/DeserializedDescriptorResolver.java @@ -45,7 +45,6 @@ public final class DeserializedDescriptorResolver { public static final Set KOTLIN_CLASS = setOf(CLASS); public static final Set KOTLIN_FILE_FACADE_OR_MULTIFILE_CLASS_PART = setOf(FILE_FACADE, MULTIFILE_CLASS_PART); - public static final Set KOTLIN_PACKAGE_FACADE = setOf(PACKAGE_FACADE); public DeserializedDescriptorResolver(@NotNull ErrorReporter errorReporter) { this.errorReporter = errorReporter; @@ -95,8 +94,11 @@ public Collection invoke() { } @NotNull - public MemberScope createKotlinPackageScope(@NotNull PackageFragmentDescriptor descriptor, @NotNull List packageParts) { - List list = new ArrayList(); + public MemberScope createKotlinPackageScope( + @NotNull PackageFragmentDescriptor descriptor, + @NotNull List packageParts + ) { + List list = new ArrayList(packageParts.size()); for (KotlinJvmBinaryClass callable : packageParts) { MemberScope scope = createKotlinPackagePartScope(descriptor, callable); if (scope != null) { diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/KotlinClassHeader.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/KotlinClassHeader.kt index dadad589ede50..6747d7c01ad8c 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/KotlinClassHeader.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/KotlinClassHeader.kt @@ -34,7 +34,6 @@ class KotlinClassHeader( enum class Kind { CLASS, - PACKAGE_FACADE, FILE_FACADE, MULTIFILE_CLASS, MULTIFILE_CLASS_PART, @@ -49,7 +48,6 @@ class KotlinClassHeader( } fun KotlinClassHeader.isCompatibleClassKind(): Boolean = isCompatibleAbiVersion && kind == KotlinClassHeader.Kind.CLASS -fun KotlinClassHeader.isCompatiblePackageFacadeKind(): Boolean = isCompatibleAbiVersion && kind == KotlinClassHeader.Kind.PACKAGE_FACADE fun KotlinClassHeader.isCompatibleFileFacadeKind(): Boolean = isCompatibleAbiVersion && kind == KotlinClassHeader.Kind.FILE_FACADE fun KotlinClassHeader.isCompatibleMultifileClassKind(): Boolean = isCompatibleAbiVersion && kind == KotlinClassHeader.Kind.MULTIFILE_CLASS fun KotlinClassHeader.isCompatibleMultifileClassPartKind(): Boolean = isCompatibleAbiVersion && kind == KotlinClassHeader.Kind.MULTIFILE_CLASS_PART diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/ReadKotlinClassHeaderAnnotationVisitor.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/ReadKotlinClassHeaderAnnotationVisitor.java index 31818c2218fd5..c67d99b940aa8 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/ReadKotlinClassHeaderAnnotationVisitor.java +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/ReadKotlinClassHeaderAnnotationVisitor.java @@ -39,7 +39,6 @@ public class ReadKotlinClassHeaderAnnotationVisitor implements AnnotationVisitor static { HEADER_KINDS.put(ClassId.topLevel(KOTLIN_CLASS), CLASS); - HEADER_KINDS.put(ClassId.topLevel(KOTLIN_PACKAGE), PACKAGE_FACADE); HEADER_KINDS.put(ClassId.topLevel(KOTLIN_FILE_FACADE), FILE_FACADE); HEADER_KINDS.put(ClassId.topLevel(KOTLIN_MULTIFILE_CLASS), MULTIFILE_CLASS); HEADER_KINDS.put(ClassId.topLevel(KOTLIN_MULTIFILE_CLASS_PART), MULTIFILE_CLASS_PART); @@ -79,7 +78,6 @@ else if (shouldHaveData() && annotationData == null) { private boolean shouldHaveData() { return headerKind == CLASS || - headerKind == PACKAGE_FACADE || headerKind == FILE_FACADE || headerKind == MULTIFILE_CLASS_PART; } @@ -108,7 +106,6 @@ else if (KOTLIN_LOCAL_CLASS.equals(fqName)) { switch (newKind) { case CLASS: - case PACKAGE_FACADE: case FILE_FACADE: case MULTIFILE_CLASS: case MULTIFILE_CLASS_PART: diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPackageImpl.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPackageImpl.kt index 266593065c8d5..697fb5021b4e7 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPackageImpl.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPackageImpl.kt @@ -23,7 +23,6 @@ import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.load.java.structure.reflect.classId import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.scopes.MemberScope -import kotlin.jvm.internal.KotlinPackage import kotlin.reflect.KCallable internal class KPackageImpl(override val jClass: Class<*>, val moduleName: String) : KDeclarationContainerImpl() { @@ -55,10 +54,7 @@ internal class KPackageImpl(override val jClass: Class<*>, val moduleName: Strin jClass.hashCode() override fun toString(): String { - val name = jClass.name - return "package " + if (jClass.isAnnotationPresent(KotlinPackage::class.java)) { - if (name == "_DefaultPackage") "" else name.substringBeforeLast(".") - } - else name + val fqName = jClass.classId.packageFqName + return "package " + (if (fqName.isRoot) "" else fqName.asString()) } } diff --git a/core/runtime.jvm/src/kotlin/jvm/internal/KotlinPackage.java b/core/runtime.jvm/src/kotlin/jvm/internal/KotlinPackage.java deleted file mode 100644 index c01227bdf2ccf..0000000000000 --- a/core/runtime.jvm/src/kotlin/jvm/internal/KotlinPackage.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package kotlin.jvm.internal; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -public @interface KotlinPackage { - @Deprecated - int abiVersion() default 32; - - int[] version() default {}; - - String[] data(); - - String[] strings(); -} diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/KotlinClsStubBuilder.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/KotlinClsStubBuilder.kt index 1499779c6272c..03e550ea088a1 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/KotlinClsStubBuilder.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/KotlinClsStubBuilder.kt @@ -31,7 +31,6 @@ import org.jetbrains.kotlin.load.kotlin.KotlinBinaryClassCache import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind import org.jetbrains.kotlin.load.kotlin.header.isCompatibleFileFacadeKind import org.jetbrains.kotlin.load.kotlin.header.isCompatibleMultifileClassKind -import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.serialization.deserialization.TypeTable @@ -76,11 +75,6 @@ public open class KotlinClsStubBuilder : ClsStubBuilder() { return null } return when { - header.isCompatiblePackageFacadeKind() -> { - val (nameResolver, packageProto) = JvmProtoBufUtil.readPackageDataFrom(annotationData, strings) - val context = components.createContext(nameResolver, packageFqName, TypeTable(packageProto.typeTable)) - createPackageFacadeStub(packageProto, packageFqName, context) - } header.isCompatibleClassKind() -> { if (header.isLocalClass) return null val (nameResolver, classProto) = JvmProtoBufUtil.readClassDataFrom(annotationData, strings) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt index bb1ae742e24a5..64d7ddafcc54d 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt @@ -27,9 +27,10 @@ import org.jetbrains.kotlin.load.kotlin.PackageClassUtils import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind import org.jetbrains.kotlin.load.kotlin.header.isCompatibleFileFacadeKind import org.jetbrains.kotlin.load.kotlin.header.isCompatibleMultifileClassKind -import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.renderer.* +import org.jetbrains.kotlin.renderer.DescriptorRenderer +import org.jetbrains.kotlin.renderer.DescriptorRendererModifier +import org.jetbrains.kotlin.renderer.ExcludedTypeAnnotations import org.jetbrains.kotlin.resolve.DescriptorUtils.isEnumEntry import org.jetbrains.kotlin.resolve.dataClassUtils.isComponentLike import org.jetbrains.kotlin.resolve.descriptorUtil.secondaryConstructors @@ -66,7 +67,6 @@ public fun buildDecompiledText( .replace(FILE_ABI_VERSION_MARKER, classHeader.version.toString()), mapOf()) } - classHeader.isCompatiblePackageFacadeKind(), classHeader.isCompatibleFileFacadeKind() -> buildDecompiledText(packageFqName, ArrayList(resolver.resolveDeclarationsInFacade(classId.asSingleFqName()))) classHeader.isCompatibleClassKind() -> diff --git a/idea/src/org/jetbrains/kotlin/idea/versions/KotlinAbiVersionIndex.kt b/idea/src/org/jetbrains/kotlin/idea/versions/KotlinAbiVersionIndex.kt index 7a97a43311a86..7770ff022d36c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/versions/KotlinAbiVersionIndex.kt +++ b/idea/src/org/jetbrains/kotlin/idea/versions/KotlinAbiVersionIndex.kt @@ -41,7 +41,6 @@ public object KotlinAbiVersionIndex : KotlinAbiVersionIndexBase { if (!generatedClass.outputFile.getName().endsWith(PackageClassUtils.PACKAGE_CLASS_NAME_SUFFIX + ".class")) return emptySet() - val kotlinClass = generatedClass.outputClass - if (!kotlinClass.getClassHeader().isCompatiblePackageFacadeKind()) return emptySet() - - val classInternalName = JvmClassName.byClassId(kotlinClass.getClassId()).getInternalName() + val classInternalName = JvmClassName.byClassId(generatedClass.outputClass.getClassId()).getInternalName() val oldClassSources = previousMappings.getClassSources(previousMappings.getName(classInternalName)) if (oldClassSources == null) return emptySet() diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt index 97cc61c98f9f9..6d6f37a644591 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt @@ -36,7 +36,10 @@ import org.jetbrains.kotlin.jps.build.GeneratedJvmClass import org.jetbrains.kotlin.jps.build.KotlinBuilder import org.jetbrains.kotlin.jps.incremental.storage.* import org.jetbrains.kotlin.load.kotlin.ModuleMapping -import org.jetbrains.kotlin.load.kotlin.header.* +import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind +import org.jetbrains.kotlin.load.kotlin.header.isCompatibleFileFacadeKind +import org.jetbrains.kotlin.load.kotlin.header.isCompatibleMultifileClassKind +import org.jetbrains.kotlin.load.kotlin.header.isCompatibleMultifileClassPartKind import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache import org.jetbrains.kotlin.load.kotlin.incremental.components.JvmPackagePartProto import org.jetbrains.kotlin.name.FqName @@ -165,24 +168,20 @@ public class IncrementalCacheImpl( val header = kotlinClass.classHeader val changesInfo = when { - header.isCompatiblePackageFacadeKind() -> - protoMap.process(kotlinClass, isPackage = true) header.isCompatibleFileFacadeKind() -> { assert(sourceFiles.size() == 1) { "Package part from several source files: $sourceFiles" } packagePartMap.addPackagePart(className) - val isPackage = true - - protoMap.process(kotlinClass, isPackage) + + protoMap.process(kotlinClass, isPackage = true) + constantsMap.process(kotlinClass) + - inlineFunctionsMap.process(kotlinClass, isPackage) + inlineFunctionsMap.process(kotlinClass, isPackage = true) } header.isCompatibleMultifileClassKind() -> { val partNames = kotlinClass.classHeader.filePartClassNames?.toList() ?: throw AssertionError("Multifile class has no parts: ${kotlinClass.className}") multifileClassFacadeMap.add(className, partNames) - // TODO NO_CHANGES? (delegates only, see package facade) + // TODO NO_CHANGES? (delegates only) constantsMap.process(kotlinClass) + inlineFunctionsMap.process(kotlinClass, isPackage = true) } @@ -191,18 +190,14 @@ public class IncrementalCacheImpl( packagePartMap.addPackagePart(className) multifileClassPartMap.add(className.internalName, header.multifileClassName!!) - val isPackage = true - - protoMap.process(kotlinClass, isPackage) + + protoMap.process(kotlinClass, isPackage = true) + constantsMap.process(kotlinClass) + - inlineFunctionsMap.process(kotlinClass, isPackage) + inlineFunctionsMap.process(kotlinClass, isPackage = true) } header.isCompatibleClassKind() && !header.isLocalClass -> { - val isPackage = false - - protoMap.process(kotlinClass, isPackage) + + protoMap.process(kotlinClass, isPackage = false) + constantsMap.process(kotlinClass) + - inlineFunctionsMap.process(kotlinClass, isPackage) + inlineFunctionsMap.process(kotlinClass, isPackage = false) } else -> CompilationResult.NO_CHANGES } @@ -674,7 +669,7 @@ data class CompilationResult( public val NO_CHANGES: CompilationResult = CompilationResult() } - public operator fun plus(other: CompilationResult): CompilationResult = + operator fun plus(other: CompilationResult): CompilationResult = CompilationResult(protoChanged || other.protoChanged, constantsChanged || other.constantsChanged, inlineChanged || other.inlineChanged, diff --git a/jps-plugin/test/org/jetbrains/kotlin/jps/build/classFilesComparison/classFilesComparison.kt b/jps-plugin/test/org/jetbrains/kotlin/jps/build/classFilesComparison/classFilesComparison.kt index d9958f5688144..388db7f1c42f1 100644 --- a/jps-plugin/test/org/jetbrains/kotlin/jps/build/classFilesComparison/classFilesComparison.kt +++ b/jps-plugin/test/org/jetbrains/kotlin/jps/build/classFilesComparison/classFilesComparison.kt @@ -22,7 +22,9 @@ import com.google.common.io.Files import com.google.protobuf.ExtensionRegistry import com.intellij.openapi.util.io.FileUtil import org.jetbrains.kotlin.jps.incremental.LocalFileKotlinClass -import org.jetbrains.kotlin.load.kotlin.header.* +import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind +import org.jetbrains.kotlin.load.kotlin.header.isCompatibleFileFacadeKind +import org.jetbrains.kotlin.load.kotlin.header.isCompatibleMultifileClassPartKind import org.jetbrains.kotlin.serialization.DebugProtoBuf import org.jetbrains.kotlin.serialization.jvm.BitEncoding import org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf @@ -140,9 +142,7 @@ fun classFileToString(classFile: File): String { out.write("\n------ string table types proto -----\n${DebugJvmProtoBuf.StringTableTypes.parseDelimitedFrom(input)}") when { - classHeader!!.isCompatiblePackageFacadeKind() -> - out.write("\n------ package proto -----\n${DebugProtoBuf.Package.parseFrom(input, getExtensionRegistry())}") - classHeader.isCompatibleFileFacadeKind() -> + classHeader!!.isCompatibleFileFacadeKind() -> out.write("\n------ file facade proto -----\n${DebugProtoBuf.Package.parseFrom(input, getExtensionRegistry())}") classHeader.isCompatibleClassKind() -> out.write("\n------ class proto -----\n${DebugProtoBuf.Class.parseFrom(input, getExtensionRegistry())}") diff --git a/jps-plugin/test/org/jetbrains/kotlin/jps/incremental/AbstractProtoComparisonTest.kt b/jps-plugin/test/org/jetbrains/kotlin/jps/incremental/AbstractProtoComparisonTest.kt index 5b95c7899f6e6..d0dca0e7497bb 100644 --- a/jps-plugin/test/org/jetbrains/kotlin/jps/incremental/AbstractProtoComparisonTest.kt +++ b/jps-plugin/test/org/jetbrains/kotlin/jps/incremental/AbstractProtoComparisonTest.kt @@ -22,7 +22,6 @@ import org.jetbrains.kotlin.jps.incremental.storage.ProtoMapValue import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind import org.jetbrains.kotlin.load.kotlin.header.isCompatibleFileFacadeKind import org.jetbrains.kotlin.load.kotlin.header.isCompatibleMultifileClassPartKind -import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind import org.jetbrains.kotlin.serialization.jvm.BitEncoding import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.MockLibraryUtil @@ -94,16 +93,15 @@ public abstract class AbstractProtoComparisonTest : UsefulTestCase() { val newProtoBytes = BitEncoding.decodeBytes(newClassHeader.annotationData!!) val oldProto = ProtoMapValue( - oldClassHeader.isCompatiblePackageFacadeKind() || oldClassHeader.isCompatibleFileFacadeKind() || oldClassHeader.isCompatibleMultifileClassPartKind(), + oldClassHeader.isCompatibleFileFacadeKind() || oldClassHeader.isCompatibleMultifileClassPartKind(), oldProtoBytes, oldClassHeader.strings!! ) val newProto = ProtoMapValue( - newClassHeader.isCompatiblePackageFacadeKind() || newClassHeader.isCompatibleFileFacadeKind() || newClassHeader.isCompatibleMultifileClassPartKind(), + newClassHeader.isCompatibleFileFacadeKind() || newClassHeader.isCompatibleMultifileClassPartKind(), newProtoBytes, newClassHeader.strings!! ) val diff = when { - newClassHeader.isCompatiblePackageFacadeKind(), newClassHeader.isCompatibleClassKind(), newClassHeader.isCompatibleFileFacadeKind(), newClassHeader.isCompatibleMultifileClassPartKind() ->