From 8595315ba5abaa160a4c218f381b974e04f86b02 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Wed, 23 Sep 2015 12:34:45 +0300 Subject: [PATCH] - Package facade classes should have ACC_DEPRECATED - Light classes for package facades should be deprecated --- .../org/jetbrains/kotlin/codegen/PackageCodegen.java | 2 +- .../kotlin/asJava/KotlinLightClassForFacade.kt | 11 ++++++----- .../nullabilityAnnotations/NullableUnitReturn.java | 3 +++ .../nullabilityAnnotations/UnitParameter.java | 3 +++ .../nullabilityAnnotations/VoidReturn.java | 3 +++ .../nullabilityAnnotations/_DefaultPackage.java | 3 +++ .../kotlin/asJava/KotlinLightClassStructureTest.java | 2 +- 7 files changed, 20 insertions(+), 7 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java index 4d1c195e8ee..51ef3d4d738 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java @@ -112,7 +112,7 @@ public class PackageCodegen { packageClassType, PackagePartClassUtils.getFilesWithCallables(files) ); v.defineClass(sourceFile, V1_6, - ACC_PUBLIC | ACC_FINAL, + ACC_PUBLIC | ACC_FINAL | ACC_DEPRECATED, packageClassType.getInternalName(), null, "java/lang/Object", diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightClassForFacade.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightClassForFacade.kt index adbf19153fd..90b8cf2eef7 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightClassForFacade.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightClassForFacade.kt @@ -42,7 +42,8 @@ public class KotlinLightClassForFacade private constructor( private val facadeClassFqName: FqName, private val searchScope: GlobalSearchScope, private val lightClassDataCache: CachedValue, - files: Collection + files: Collection, + private val deprecated: Boolean ) : KotlinWrappingLightClass(manager), JetJavaMirrorMarker { private data class StubCacheKey(val fqName: FqName, val searchScope: GlobalSearchScope) @@ -127,7 +128,7 @@ public class KotlinLightClassForFacade private constructor( override fun hasModifierProperty(@NonNls name: String) = modifierList.hasModifierProperty(name) - override fun isDeprecated() = false + override fun isDeprecated() = deprecated override fun isInterface() = false @@ -186,7 +187,7 @@ public class KotlinLightClassForFacade private constructor( override fun isValid() = files.all { it.isValid() } - override fun copy() = KotlinLightClassForFacade(getManager(), facadeClassFqName, searchScope, lightClassDataCache, files) + override fun copy() = KotlinLightClassForFacade(getManager(), facadeClassFqName, searchScope, lightClassDataCache, files, deprecated) override fun getDelegate(): PsiClass { val psiClass = LightClassUtil.findClass(facadeClassFqName, lightClassDataCache.getValue().javaFileStub) @@ -251,7 +252,7 @@ public class KotlinLightClassForFacade private constructor( val packageClassFqName = PackageClassUtils.getPackageClassFqName(packageFqName) val lightClassDataCache = PackageFacadeStubCache.getInstance(manager.project).get(packageFqName, searchScope) - return KotlinLightClassForFacade(manager, packageClassFqName, searchScope, lightClassDataCache, files) + return KotlinLightClassForFacade(manager, packageClassFqName, searchScope, lightClassDataCache, files, true) } public fun createForFacade( @@ -267,7 +268,7 @@ public class KotlinLightClassForFacade private constructor( assert(files.isNotEmpty()) { "No files for facade $facadeClassFqName" } val lightClassDataCache = FacadeStubCache.getInstance(manager.project).get(facadeClassFqName, searchScope) - return KotlinLightClassForFacade(manager, facadeClassFqName, searchScope, lightClassDataCache, files) + return KotlinLightClassForFacade(manager, facadeClassFqName, searchScope, lightClassDataCache, files, false) } } } diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/NullableUnitReturn.java b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/NullableUnitReturn.java index 99e3a8daeb7..e35b760ecbe 100644 --- a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/NullableUnitReturn.java +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/NullableUnitReturn.java @@ -1,3 +1,6 @@ +/** + * @deprecated + */ @java.lang.Deprecated public final class _DefaultPackage { @kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "NullableUnitReturnKt") diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitParameter.java b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitParameter.java index 6b53f1e493a..5ba0dda0c7e 100644 --- a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitParameter.java +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitParameter.java @@ -1,3 +1,6 @@ +/** + * @deprecated + */ @java.lang.Deprecated public final class _DefaultPackage { @kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "UnitParameterKt") diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/VoidReturn.java b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/VoidReturn.java index adebde7c1ab..81a63ae9c0f 100644 --- a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/VoidReturn.java +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/VoidReturn.java @@ -1,3 +1,6 @@ +/** + * @deprecated + */ @java.lang.Deprecated public final class _DefaultPackage { @kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "VoidReturnKt") diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/_DefaultPackage.java b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/_DefaultPackage.java index fb95bde5bad..bba05c3ae21 100644 --- a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/_DefaultPackage.java +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/_DefaultPackage.java @@ -1,3 +1,6 @@ +/** + * @deprecated + */ @java.lang.Deprecated public final class _DefaultPackage { @kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt") diff --git a/compiler/tests/org/jetbrains/kotlin/asJava/KotlinLightClassStructureTest.java b/compiler/tests/org/jetbrains/kotlin/asJava/KotlinLightClassStructureTest.java index ec6c8e867c7..5c6356d3da1 100644 --- a/compiler/tests/org/jetbrains/kotlin/asJava/KotlinLightClassStructureTest.java +++ b/compiler/tests/org/jetbrains/kotlin/asJava/KotlinLightClassStructureTest.java @@ -163,7 +163,7 @@ public abstract class KotlinLightClassStructureTest extends KotlinAsJavaTestBase } public void testPackage() throws Exception { - checkModifiers("test.TestPackage", PUBLIC, FINAL); + checkModifiers("test.TestPackage", PUBLIC, FINAL, DEPRECATED); } }