Drop package facades: JVM BE tests passed.

This commit is contained in:
Dmitry Petrov
2015-10-14 13:13:01 +03:00
parent a59cb22bc6
commit 3502c393fc
51 changed files with 120 additions and 571 deletions
@@ -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"
@@ -1,5 +0,0 @@
package test
import Baz
fun box(): String = Baz.baz()
@@ -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";
@@ -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"
}
@@ -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
@@ -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
@@ -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
@@ -16,6 +16,6 @@ fun foo() : String {
)
}
// 14 ALOAD
// 10 ALOAD
// 2 ASTORE
// 0 InlineMarker
@@ -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,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
@@ -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
@@ -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