Drop package facades: JVM BE tests passed.
This commit is contained in:
+1
-1
@@ -1,7 +1,7 @@
|
||||
public class Test {
|
||||
public static void checkCallFromJava() {
|
||||
try {
|
||||
String x = _DefaultPackage.foo().iterator().next();
|
||||
String x = SubstitutedIterableKt.foo().iterator().next();
|
||||
throw new AssertionError("E should have been thrown");
|
||||
} catch (E e) { }
|
||||
}
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
import test.TestPackage;
|
||||
|
||||
public class Baz {
|
||||
public static String baz() {
|
||||
return TestPackage.foo() + TestPackage.bar();
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
@file:JvmName("Util")
|
||||
@file:JvmMultifileClass
|
||||
package test
|
||||
|
||||
public fun bar(): String = "K"
|
||||
@@ -1,4 +0,0 @@
|
||||
@file:[JvmName("Util") JvmMultifileClass]
|
||||
package test
|
||||
|
||||
public fun foo(): String = "O"
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
package test
|
||||
|
||||
import Baz
|
||||
|
||||
fun box(): String = Baz.baz()
|
||||
Vendored
+2
-2
@@ -1,11 +1,11 @@
|
||||
public class Test {
|
||||
public static String invokeFoo() {
|
||||
try {
|
||||
_DefaultPackage.foo(null);
|
||||
ExtensionKt.foo(null);
|
||||
}
|
||||
catch (IllegalArgumentException e) {
|
||||
try {
|
||||
_DefaultPackage.getBar(null);
|
||||
ExtensionKt.getBar(null);
|
||||
}
|
||||
catch (IllegalArgumentException f) {
|
||||
return "OK";
|
||||
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
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
@@ -1,47 +0,0 @@
|
||||
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"
|
||||
}
|
||||
@@ -6,6 +6,6 @@ class C {
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val m = javaClass<C>().getClassLoader().loadClass("_DefaultPackage").getMethod("foo", javaClass<C>(), javaClass<String>())
|
||||
val m = javaClass<C>().getClassLoader().loadClass("ExtensionMethodKt").getMethod("foo", javaClass<C>(), javaClass<String>())
|
||||
return m.invoke(null, C(), "O") as String
|
||||
}
|
||||
|
||||
@@ -44,10 +44,4 @@
|
||||
|
||||
@kotlin.jvm.internal.KotlinClass My {
|
||||
public method <init>(): void
|
||||
}
|
||||
|
||||
@java.lang.Deprecated @kotlin.jvm.internal.KotlinPackage _DefaultPackage {
|
||||
public synthetic final field $moduleName: java.lang.String
|
||||
public final @kotlin.jvm.internal.KotlinDelegatedMethod method bar(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): int
|
||||
public final @kotlin.jvm.internal.KotlinDelegatedMethod @org.jetbrains.annotations.NotNull method foo(p0: int): My
|
||||
}
|
||||
}
|
||||
@@ -9,10 +9,4 @@
|
||||
@kotlin.jvm.internal.KotlinFileFacade OnReceiverKt {
|
||||
public final @org.jetbrains.annotations.NotNull method getTopLevelP(@Ann p0: java.lang.String): java.lang.String
|
||||
public final @org.jetbrains.annotations.NotNull method topLevelF(@Ann p0: java.lang.String): java.lang.String
|
||||
}
|
||||
|
||||
@java.lang.Deprecated @kotlin.jvm.internal.KotlinPackage _DefaultPackage {
|
||||
public synthetic final field $moduleName: java.lang.String
|
||||
public final @kotlin.jvm.internal.KotlinDelegatedMethod @org.jetbrains.annotations.NotNull method getTopLevelP(@Ann p0: java.lang.String): java.lang.String
|
||||
public final @kotlin.jvm.internal.KotlinDelegatedMethod @org.jetbrains.annotations.NotNull method topLevelF(@Ann p0: java.lang.String): java.lang.String
|
||||
}
|
||||
}
|
||||
@@ -11,10 +11,8 @@ class B {
|
||||
}
|
||||
|
||||
/*
|
||||
One DEPRECATED is for _DefaultPackage
|
||||
One is for _DefaultPackage.getCONST_VAL
|
||||
One DEPRECATED is for INSTANCE$ temporarily
|
||||
3 others are for getCONST_VAL
|
||||
One more for INSTANCE$ temporarily
|
||||
*/
|
||||
|
||||
// 6 DEPRECATED
|
||||
// 4 DEPRECATED
|
||||
@@ -16,7 +16,7 @@ fun box(): String {
|
||||
|
||||
/*
|
||||
3 return's are defined in functions
|
||||
2 are from package facade
|
||||
*/
|
||||
|
||||
// 5 RETURN
|
||||
// 2 IRETURN
|
||||
// 1 ARETURN
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
package foo
|
||||
|
||||
fun simpleFoo(s: Int = 111) {
|
||||
|
||||
}
|
||||
|
||||
// 1 BIPUSH 111
|
||||
// 1 INVOKESTATIC foo/DefaultDelegationKt.simpleFoo\$default \(II\)V
|
||||
+3
-3
@@ -7,10 +7,10 @@ fun foo() : String {
|
||||
}
|
||||
|
||||
// 3 ISTORE
|
||||
// 11 ILOAD
|
||||
// 7 ILOAD
|
||||
// 2 ASTORE
|
||||
// 8 ALOAD
|
||||
// 6 ALOAD
|
||||
// 2 LSTORE
|
||||
// 6 LLOAD
|
||||
// 4 LLOAD
|
||||
// 1 MAXLOCALS = 10
|
||||
// 0 InlineMarker
|
||||
|
||||
+2
-2
@@ -9,9 +9,9 @@ fun test() {
|
||||
}
|
||||
|
||||
// 1 ISTORE
|
||||
// 3 ILOAD
|
||||
// 2 ILOAD
|
||||
// 2 ASTORE
|
||||
// 7 ALOAD
|
||||
// 5 ALOAD
|
||||
// 2 MAXLOCALS = 3
|
||||
// 1 MAXLOCALS = 4
|
||||
// 0 InlineMarker
|
||||
|
||||
@@ -10,5 +10,5 @@ fun foo() : Int {
|
||||
}
|
||||
|
||||
// 3 ISTORE
|
||||
// 11 ILOAD
|
||||
// 7 ILOAD
|
||||
// 0 InlineMarker
|
||||
|
||||
+1
-1
@@ -16,6 +16,6 @@ fun foo() : String {
|
||||
)
|
||||
}
|
||||
|
||||
// 14 ALOAD
|
||||
// 10 ALOAD
|
||||
// 2 ASTORE
|
||||
// 0 InlineMarker
|
||||
|
||||
+1
-1
@@ -6,6 +6,6 @@ fun foo() : String {
|
||||
}
|
||||
|
||||
// 6 ASTORE
|
||||
// 21 ALOAD
|
||||
// 16 ALOAD
|
||||
// 1 MAXLOCALS = 7
|
||||
// 0 InlineMarker
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
fun foo(a: Int = 1) {}
|
||||
|
||||
// 0 _DefaultPackage.foo
|
||||
// 3 INVOKESTATIC TopLevelFunWithDefaultArgsKt\.foo
|
||||
// 1 INVOKESTATIC TopLevelFunWithDefaultArgsKt\.foo
|
||||
|
||||
@@ -4,5 +4,5 @@ fun test2() {
|
||||
1.test1()
|
||||
}
|
||||
|
||||
// 2 INVOKESTATIC _1Kt.test1 \(I\)V
|
||||
// 1 INVOKESTATIC _1Kt.test2 \(\)V
|
||||
// 1 INVOKESTATIC _1Kt.test1 \(I\)V
|
||||
// 0 INVOKESTATIC _1Kt.test2 \(\)V
|
||||
|
||||
+2
-2
@@ -2,5 +2,5 @@ package a
|
||||
|
||||
fun test1() {}
|
||||
|
||||
// 2 INVOKESTATIC a/_1Kt.test1 \(\)V
|
||||
// 1 INVOKESTATIC b/_2Kt.test2 \(\)V
|
||||
// 1 INVOKESTATIC a/_1Kt.test1 \(\)V
|
||||
// 0 INVOKESTATIC b/_2Kt.test2 \(\)V
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
fun test1() {}
|
||||
|
||||
// 2 INVOKESTATIC _1Kt.test1 \(\)V
|
||||
// 1 INVOKESTATIC _2Kt.test2 \(\)V
|
||||
// 1 INVOKESTATIC _1Kt.test1 \(\)V
|
||||
// 0 INVOKESTATIC _2Kt.test2 \(\)V
|
||||
|
||||
+2
-2
@@ -4,5 +4,5 @@ fun test2() {
|
||||
test1()
|
||||
}
|
||||
|
||||
// 2 INVOKESTATIC _1Kt.test1 \(\)V
|
||||
// 1 INVOKESTATIC _1Kt.test2 \(\)V
|
||||
// 1 INVOKESTATIC _1Kt.test1 \(\)V
|
||||
// 0 INVOKESTATIC _1Kt.test2 \(\)V
|
||||
|
||||
@@ -2,5 +2,5 @@ package a
|
||||
|
||||
val prop = 1
|
||||
|
||||
// 2 INVOKESTATIC a/_1Kt.getProp \(\)I
|
||||
// 1 INVOKESTATIC a/_1Kt.getProp \(\)I
|
||||
// 1 GETSTATIC a/_1Kt.prop \: I
|
||||
|
||||
@@ -5,5 +5,5 @@ val prop: Int = 0
|
||||
return field + 1
|
||||
}
|
||||
|
||||
// 2 INVOKESTATIC a/_1Kt.getProp \(\)I
|
||||
// 1 INVOKESTATIC a/_1Kt.getProp \(\)I
|
||||
// 1 GETSTATIC a/_1Kt.prop \: I
|
||||
|
||||
Reference in New Issue
Block a user