Use '$' instead of '-' in package part class names

Otherwise some tools break (e.g. CheckMethodAdapter in ASM, used in generic
signature writer) because they expect class names to be Java identifiers.

Some tests fixed, some will be fixed in future commits
This commit is contained in:
Alexander Udalov
2014-09-22 11:43:30 +04:00
parent e3876624d8
commit c57441b51b
69 changed files with 148 additions and 135 deletions
@@ -5,11 +5,11 @@ fun box(): String {
val enclosingMethod = javaClass.getEnclosingMethod()
if (enclosingMethod?.getName() != "box") return "method: $enclosingMethod"
val enclosingClass = javaClass.getEnclosingClass()
if (!enclosingClass!!.getName().startsWith("_DefaultPackage-lambdaInFunction-")) return "enclosing class: $enclosingClass"
val enclosingClass = javaClass.getEnclosingClass()!!.getName()
if (!enclosingClass.startsWith("_DefaultPackage") || !enclosingClass.contains("lambdaInFunction")) return "enclosing class: $enclosingClass"
val declaringClass = javaClass.getDeclaringClass()
if (declaringClass != null) return "anonymous function has a declaring class: $declaringClass"
return "OK"
}
}
@@ -1,8 +1,8 @@
val l: Any = {}
fun box(): String {
val enclosingClass = l.javaClass.getEnclosingClass()
if (!enclosingClass!!.getName().startsWith("_DefaultPackage-lambdaInPackage-")) return "enclosing class: $enclosingClass"
val enclosingClass = l.javaClass.getEnclosingClass()!!.getName()
if (!enclosingClass.startsWith("_DefaultPackage") || !enclosingClass.contains("lambdaInPackage")) return "enclosing class: $enclosingClass"
val enclosingConstructor = l.javaClass.getEnclosingConstructor()
if (enclosingConstructor != null) return "enclosing constructor found: $enclosingConstructor"
@@ -14,4 +14,4 @@ fun box(): String {
if (declaringClass != null) return "anonymous function has a declaring class: $declaringClass"
return "OK"
}
}
@@ -6,11 +6,11 @@ fun box(): String {
val enclosingMethod = l.javaClass.getEnclosingMethod()
if (enclosingMethod?.getName() != "getL") return "method: $enclosingMethod"
val enclosingClass = l.javaClass.getEnclosingClass()
if (!enclosingClass!!.getName().startsWith("_DefaultPackage-lambdaInPropertyGetter-")) return "enclosing class: $enclosingClass"
val enclosingClass = l.javaClass.getEnclosingClass()!!.getName()
if (!enclosingClass.startsWith("_DefaultPackage") || !enclosingClass.contains("lambdaInPropertyGetter")) return "enclosing class: $enclosingClass"
val declaringClass = l.javaClass.getDeclaringClass()
if (declaringClass != null) return "anonymous function has a declaring class: $declaringClass"
return "OK"
}
}
@@ -1,4 +1,3 @@
var _l: Any = ""
var l: Any
@@ -13,11 +12,11 @@ fun box(): String {
val enclosingMethod = l.javaClass.getEnclosingMethod()
if (enclosingMethod?.getName() != "setL") return "method: $enclosingMethod"
val enclosingClass = l.javaClass.getEnclosingClass()
if (!enclosingClass!!.getName().startsWith("_DefaultPackage-lambdaInPropertySetter-")) return "enclosing class: $enclosingClass"
val enclosingClass = l.javaClass.getEnclosingClass()!!.getName()
if (!enclosingClass.startsWith("_DefaultPackage") || !enclosingClass.contains("lambdaInPropertySetter")) return "enclosing class: $enclosingClass"
val declaringClass = l.javaClass.getDeclaringClass()
if (declaringClass != null) return "anonymous function has a declaring class: $declaringClass"
return "OK"
}
}
@@ -5,4 +5,4 @@ fun simpleFoo(s: Int = 111) {
}
// 1 BIPUSH 111
// 1 INVOKESTATIC foo/FooPackage-.*\.simpleFoo\$default \(II\)V
// 1 INVOKESTATIC foo/FooPackage.+\.simpleFoo\$default \(II\)V
@@ -3,5 +3,5 @@ fun foo() {
}
// assert function will be inlined, and we assure that there are no calls via package part, but is call via package facade in inlined code
// 0 INVOKESTATIC kotlin\/KotlinPackage-[^-]+-[^-]+.getASSERTIONS_ENABLED \(\)Z
// 1 INVOKESTATIC kotlin\/KotlinPackage.getASSERTIONS_ENABLED \(\)Z
// 0 INVOKESTATIC kotlin\/KotlinPackage.+\.getASSERTIONS_ENABLED \(\)Z
// 1 INVOKESTATIC kotlin\/KotlinPackage\.getASSERTIONS_ENABLED \(\)Z
@@ -1,4 +1,4 @@
fun foo(a: Int = 1) {}
//0 _DefaultPackage.foo
//3 INVOKESTATIC _DefaultPackage-
// 0 _DefaultPackage.foo
// 3 INVOKESTATIC _DefaultPackage.+
@@ -24,4 +24,3 @@ fun bar2(x : Season) : String {
}
// 2 TABLESWITCH
// 1 @_DefaultPackage-expression-.*\$WhenMappings\.class
@@ -19,4 +19,3 @@ fun box() : String {
}
// 1 LOOKUPSWITCH
// 1 @_DefaultPackage-functionLiteralInTopLevel-[a-z0-9]+\$WhenMappings.class
@@ -33,4 +33,3 @@ class A {
}
// 2 TABLESWITCH
// 1 @abc/foo/A\$WhenMappings\.class
@@ -28,4 +28,3 @@ fun bar2(x : Season) : String {
}
// 2 TABLESWITCH
// 1 @_DefaultPackage-withoutElse-.*\$WhenMappings\.class
@@ -4,5 +4,5 @@ fun test2() {
1.test1()
}
// 2 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test1 \(I\)V
// 1 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test2 \(\)V
// 2 INVOKESTATIC _DefaultPackage.+\.test1 \(I\)V
// 1 INVOKESTATIC _DefaultPackage.+\.test2 \(\)V
@@ -2,5 +2,5 @@ package a
fun test1() {}
// 2 INVOKESTATIC a/APackage-1-[0-9a-f]+\.test1 \(\)V
// 1 INVOKESTATIC b/BPackage-2-[0-9a-f]+\.test2 \(\)V
// 2 INVOKESTATIC a/APackage.+\.test1 \(\)V
// 1 INVOKESTATIC b/BPackage.+\.test2 \(\)V
@@ -1,4 +1,4 @@
fun test1() {}
// 2 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test1 \(\)V
// 1 INVOKESTATIC _DefaultPackage-2-[0-9a-f]+\.test2 \(\)V
// 2 INVOKESTATIC _DefaultPackage.+\.test1 \(\)V
// 1 INVOKESTATIC _DefaultPackage.+\.test2 \(\)V
@@ -4,5 +4,5 @@ fun test2() {
test1()
}
// 2 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test1 \(\)V
// 1 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test2 \(\)V
// 2 INVOKESTATIC _DefaultPackage.+\.test1 \(\)V
// 1 INVOKESTATIC _DefaultPackage.+\.test2 \(\)V
@@ -2,5 +2,5 @@ package a
val prop = 1
// 2 INVOKESTATIC a/APackage-1-[0-9a-f]+\.getProp \(\)I
// 1 GETSTATIC a/APackage-1-[0-9a-f]+\.prop \: I
// 2 INVOKESTATIC a/APackage.+\.getProp \(\)I
// 1 GETSTATIC a/APackage.+\.prop \: I
@@ -5,5 +5,5 @@ val prop: Int = 0
return $prop + 1
}
// 2 INVOKESTATIC a/APackage-1-[0-9a-f]+\.getProp \(\)I
// 1 GETSTATIC a/APackage-1-[0-9a-f]+\.prop \: I
// 2 INVOKESTATIC a/APackage.+\.getProp \(\)I
// 1 GETSTATIC a/APackage.+\.prop \: I