- Annotate package facades with java.lang.Deprecated.
- Provide KotlinDelegatedMethod annotation on package facade members.
This commit is contained in:
+2
@@ -1,4 +1,6 @@
|
||||
@java.lang.Deprecated
|
||||
public final class _DefaultPackage {
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "NullableUnitReturnKt")
|
||||
@org.jetbrains.annotations.Nullable
|
||||
public static final kotlin.Unit foo() { /* compiled code */ }
|
||||
}
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
@java.lang.Deprecated
|
||||
public final class _DefaultPackage {
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "UnitParameterKt")
|
||||
public static final void foo(@org.jetbrains.annotations.NotNull kotlin.Unit s) { /* compiled code */ }
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
@java.lang.Deprecated
|
||||
public final class _DefaultPackage {
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "VoidReturnKt")
|
||||
public static final void foo(@org.jetbrains.annotations.NotNull java.lang.String s) { /* compiled code */ }
|
||||
}
|
||||
+22
@@ -1,68 +1,90 @@
|
||||
@java.lang.Deprecated
|
||||
public final class _DefaultPackage {
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.NotNull
|
||||
public static final java.lang.String getNotNullVal() { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.Nullable
|
||||
@org.jetbrains.annotations.NotNull
|
||||
public static final java.lang.String getNotNullValWithGet() { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.NotNull
|
||||
public static final java.lang.String getNotNullVar() { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
public static final void setNotNullVar(@org.jetbrains.annotations.NotNull java.lang.String p) { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.Nullable
|
||||
@org.jetbrains.annotations.NotNull
|
||||
public static final java.lang.String getNotNullVarWithGetSet() { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.Nullable
|
||||
public static final void setNotNullVarWithGetSet(@org.jetbrains.annotations.NotNull java.lang.String v) { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.Nullable
|
||||
public static final java.lang.String getNullableVal() { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.NotNull
|
||||
@org.jetbrains.annotations.Nullable
|
||||
public static final java.lang.String getNullableValWithGet() { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.Nullable
|
||||
public static final java.lang.String getNullableVar() { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
public static final void setNullableVar(@org.jetbrains.annotations.Nullable java.lang.String p) { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.NotNull
|
||||
@org.jetbrains.annotations.Nullable
|
||||
public static final java.lang.String getNullableVarWithGetSet() { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.NotNull
|
||||
public static final void setNullableVarWithGetSet(@org.jetbrains.annotations.Nullable java.lang.String v) { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.Nullable
|
||||
public static final java.lang.String getPrivateN() { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.NotNull
|
||||
public static final java.lang.String getPrivateNn() { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.NotNull
|
||||
public static final java.lang.String notNull(@org.jetbrains.annotations.NotNull java.lang.String a) { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.Nullable
|
||||
@org.jetbrains.annotations.NotNull
|
||||
public static final java.lang.String notNullWithN() { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.NotNull
|
||||
public static final java.lang.String notNullWithNN() { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.Nullable
|
||||
public static final java.lang.String nullable(@org.jetbrains.annotations.Nullable java.lang.String a) { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.Nullable
|
||||
public static final java.lang.String nullableWithN() { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.NotNull
|
||||
@org.jetbrains.annotations.Nullable
|
||||
public static final java.lang.String nullableWithNN() { /* compiled code */ }
|
||||
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt")
|
||||
@org.jetbrains.annotations.Nullable
|
||||
public static final java.lang.String privateFun(@org.jetbrains.annotations.NotNull java.lang.String a, @org.jetbrains.annotations.Nullable java.lang.String b) { /* compiled code */ }
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package test
|
||||
|
||||
fun findClassOrFail(className: String): Class<*> =
|
||||
try {
|
||||
Class.forName(className)
|
||||
}
|
||||
catch (e: Exception) {
|
||||
throw AssertionError("Class $className not found")
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val testPackage = findClassOrFail("test.TestPackage")
|
||||
val deprecated = findClassOrFail("java.lang.Deprecated") as Class<Annotation>
|
||||
val ann = testPackage.getAnnotation(deprecated)
|
||||
assert(ann != null) { "Package facade ${testPackage.name} is not deprecated" }
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
package test
|
||||
|
||||
import kotlin.jvm.internal.KotlinDelegatedMethod
|
||||
|
||||
fun findClassOrFail(className: String): Class<*> =
|
||||
try {
|
||||
Class.forName(className)
|
||||
}
|
||||
catch (e: Exception) {
|
||||
throw AssertionError("Class $className not found")
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val testPackage = findClassOrFail("test.TestPackage")
|
||||
val kotlinDelegatedMethod = findClassOrFail("kotlin.jvm.internal.KotlinDelegatedMethod") as Class<Annotation>
|
||||
|
||||
assert(testPackage.declaredMethods.size() > 0) { "Class ${testPackage.name} has no declared methods" }
|
||||
|
||||
for (method in testPackage.declaredMethods) {
|
||||
val ann = method.getAnnotation(kotlinDelegatedMethod) as? KotlinDelegatedMethod
|
||||
if (ann == null) {
|
||||
throw AssertionError("Method ${method.name} has no ${kotlinDelegatedMethod.simpleName} annotation.")
|
||||
}
|
||||
|
||||
val implementationClassName = ann.implementationClassName()
|
||||
val implementationClass = try {
|
||||
Class.forName(implementationClassName)
|
||||
}
|
||||
catch (e: Exception) {
|
||||
throw AssertionError("Implementation class $implementationClassName for method ${method.name} not found.")
|
||||
}
|
||||
|
||||
val implementationMethod = try {
|
||||
implementationClass.getMethod(method.name, *method.parameterTypes)
|
||||
}
|
||||
catch (e: Exception) {
|
||||
throw AssertionError("Implementation class $implementationClassName for method ${method.name} has no corresponding implementation method.")
|
||||
}
|
||||
|
||||
assert(implementationMethod.modifiers == method.modifiers) {
|
||||
"Implementation method for ${method.name} in $implementationClassName: " +
|
||||
"expected modifiers: ${method.modifiers}; actual modifiers: ${implementationMethod.modifiers}"
|
||||
}
|
||||
}
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -13,10 +13,10 @@
|
||||
@org.jetbrains.annotations.NotNull method getTopLevelP(@Ann p0: java.lang.String): java.lang.String
|
||||
}
|
||||
|
||||
@kotlin.jvm.internal.KotlinPackage _DefaultPackage {
|
||||
@java.lang.Deprecated @kotlin.jvm.internal.KotlinPackage _DefaultPackage {
|
||||
field $kotlinPackage: kotlin.reflect.KPackage
|
||||
field $moduleName: java.lang.String
|
||||
method <clinit>(): void
|
||||
@org.jetbrains.annotations.NotNull method getTopLevelP(@Ann p0: java.lang.String): java.lang.String
|
||||
@org.jetbrains.annotations.NotNull method topLevelF(@Ann p0: java.lang.String): java.lang.String
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod @org.jetbrains.annotations.NotNull method getTopLevelP(@Ann p0: java.lang.String): java.lang.String
|
||||
@kotlin.jvm.internal.KotlinDelegatedMethod @org.jetbrains.annotations.NotNull method topLevelF(@Ann p0: java.lang.String): java.lang.String
|
||||
}
|
||||
Reference in New Issue
Block a user