Don't use $ in package fragment class names
Package fragment classes now are named "*Package-<filename>-<hash>" instead of "*Package$src$<filename>$<hash>". This will help to avoid erroneous code in intellij FileManager, which assumes that classes with dollars are always inner classes of some other class (see AnnotationDescriptorDeserializer)
This commit is contained in:
@@ -321,7 +321,7 @@ public class NamespaceCodegen extends MemberCodegen {
|
|||||||
String fileName = FileUtil.getNameWithoutExtension(PathUtil.getFileName(file.getName()));
|
String fileName = FileUtil.getNameWithoutExtension(PathUtil.getFileName(file.getName()));
|
||||||
|
|
||||||
// path hashCode to prevent same name / different path collision
|
// path hashCode to prevent same name / different path collision
|
||||||
String srcName = facadeFqName.shortName().asString() + "$src$" + replaceSpecialSymbols(fileName) + "$" + Integer.toHexString(
|
String srcName = facadeFqName.shortName().asString() + "-" + replaceSpecialSymbols(fileName) + "-" + Integer.toHexString(
|
||||||
CodegenUtil.getPathHashCode(file));
|
CodegenUtil.getPathHashCode(file));
|
||||||
|
|
||||||
FqName srcFqName = facadeFqName.parent().child(Name.identifier(srcName));
|
FqName srcFqName = facadeFqName.parent().child(Name.identifier(srcName));
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
fun foo(a: Int = 1) {}
|
fun foo(a: Int = 1) {}
|
||||||
|
|
||||||
//0 _DefaultPackage.foo
|
//0 _DefaultPackage.foo
|
||||||
//3 INVOKESTATIC _DefaultPackage\$src\$
|
//3 INVOKESTATIC _DefaultPackage-
|
||||||
|
|||||||
@@ -4,5 +4,5 @@ fun test2() {
|
|||||||
1.test1()
|
1.test1()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2 INVOKESTATIC _DefaultPackage\$src\$1\$[0-9a-f]+\.test1 \(I\)V
|
// 2 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test1 \(I\)V
|
||||||
// 1 INVOKESTATIC _DefaultPackage\$src\$1\$[0-9a-f]+\.test2 \(\)V
|
// 1 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test2 \(\)V
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ package a
|
|||||||
|
|
||||||
fun test1() {}
|
fun test1() {}
|
||||||
|
|
||||||
// 2 INVOKESTATIC a/APackage\$src\$1\$[0-9a-f]+\.test1 \(\)V
|
// 2 INVOKESTATIC a/APackage-1-[0-9a-f]+\.test1 \(\)V
|
||||||
// 1 INVOKESTATIC b/BPackage\$src\$2\$[0-9a-f]+\.test2 \(\)V
|
// 1 INVOKESTATIC b/BPackage-2-[0-9a-f]+\.test2 \(\)V
|
||||||
|
|||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
fun test1() {}
|
fun test1() {}
|
||||||
|
|
||||||
// 2 INVOKESTATIC _DefaultPackage\$src\$1\$[0-9a-f]+\.test1 \(\)V
|
// 2 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test1 \(\)V
|
||||||
// 1 INVOKESTATIC _DefaultPackage\$src\$2\$[0-9a-f]+\.test2 \(\)V
|
// 1 INVOKESTATIC _DefaultPackage-2-[0-9a-f]+\.test2 \(\)V
|
||||||
|
|||||||
@@ -4,5 +4,5 @@ fun test2() {
|
|||||||
test1()
|
test1()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2 INVOKESTATIC _DefaultPackage\$src\$1\$[0-9a-f]+\.test1 \(\)V
|
// 2 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test1 \(\)V
|
||||||
// 1 INVOKESTATIC _DefaultPackage\$src\$1\$[0-9a-f]+\.test2 \(\)V
|
// 1 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test2 \(\)V
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ package a
|
|||||||
|
|
||||||
val prop = 1
|
val prop = 1
|
||||||
|
|
||||||
// 2 INVOKESTATIC a/APackage\$src\$1\$[0-9a-f]+\.getProp \(\)I
|
// 2 INVOKESTATIC a/APackage-1-[0-9a-f]+\.getProp \(\)I
|
||||||
// 1 GETSTATIC a/APackage\$src\$1\$[0-9a-f]+\.prop \: I
|
// 1 GETSTATIC a/APackage-1-[0-9a-f]+\.prop \: I
|
||||||
|
|||||||
@@ -5,5 +5,5 @@ val prop: Int = 0
|
|||||||
return $prop + 1
|
return $prop + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2 INVOKESTATIC a/APackage\$src\$1\$[0-9a-f]+\.getProp \(\)I
|
// 2 INVOKESTATIC a/APackage-1-[0-9a-f]+\.getProp \(\)I
|
||||||
// 1 GETSTATIC a/APackage\$src\$1\$[0-9a-f]+\.prop \: I
|
// 1 GETSTATIC a/APackage-1-[0-9a-f]+\.prop \: I
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
deprecated("") val test: Int = 0
|
deprecated("") val test: Int = 0
|
||||||
|
|
||||||
// TESTED_OBJECT_KIND: property
|
// TESTED_OBJECT_KIND: property
|
||||||
// TESTED_OBJECTS: _DefaultPackage$src$topLevelProperty$, test
|
// TESTED_OBJECTS: _DefaultPackage-topLevelProperty-, test
|
||||||
// IS_FULL_CONTAINING_CLASS_NAME: false
|
// IS_FULL_CONTAINING_CLASS_NAME: false
|
||||||
// FLAGS: ACC_DEPRECATED, ACC_FINAL, ACC_STATIC
|
// FLAGS: ACC_DEPRECATED, ACC_FINAL, ACC_STATIC
|
||||||
|
|||||||
@@ -64,17 +64,17 @@ public class OuterClassGenTest extends CodegenTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testObjectLiteralInPackageClass() throws Exception {
|
public void testObjectLiteralInPackageClass() throws Exception {
|
||||||
OuterClassInfo expectedInfo = new OuterClassInfo("foo/FooPackage$src$outerClassInfo$", null, null);
|
OuterClassInfo expectedInfo = new OuterClassInfo("foo/FooPackage-outerClassInfo-", null, null);
|
||||||
doCustomTest("foo.FooPackage$packageObjectLiteral$1", expectedInfo);
|
doCustomTest("foo.FooPackage$packageObjectLiteral$1", expectedInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testLocalClassInTopLevelFunction() throws Exception {
|
public void testLocalClassInTopLevelFunction() throws Exception {
|
||||||
OuterClassInfo expectedInfo = new OuterClassInfo("foo/FooPackage$src$outerClassInfo$", "packageMethod", "(Lfoo/Foo;)V");
|
OuterClassInfo expectedInfo = new OuterClassInfo("foo/FooPackage-outerClassInfo-", "packageMethod", "(Lfoo/Foo;)V");
|
||||||
doCustomTest("foo.FooPackage$packageMethod$PackageLocalClass", expectedInfo);
|
doCustomTest("foo.FooPackage$packageMethod$PackageLocalClass", expectedInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testLocalObjectInTopLevelFunction() throws Exception {
|
public void testLocalObjectInTopLevelFunction() throws Exception {
|
||||||
OuterClassInfo expectedInfo = new OuterClassInfo("foo/FooPackage$src$outerClassInfo$", "packageMethod", "(Lfoo/Foo;)V");
|
OuterClassInfo expectedInfo = new OuterClassInfo("foo/FooPackage-outerClassInfo-", "packageMethod", "(Lfoo/Foo;)V");
|
||||||
doCustomTest("foo.FooPackage$packageMethod$PackageLocalObject", expectedInfo);
|
doCustomTest("foo.FooPackage$packageMethod$PackageLocalObject", expectedInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
fun foo() {
|
fun foo() {
|
||||||
"" // _DefaultPackage$src$_DefaultPackage$
|
"" // _DefaultPackage-_DefaultPackage-
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,5 +4,5 @@ class A {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun A.foo() {
|
fun A.foo() {
|
||||||
"" // a/APackage$src$extensionFunction$
|
"" // a/APackage-extensionFunction-
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
fun foo() {
|
fun foo() {
|
||||||
"" // test/TestPackage$src$a$
|
"" // test/TestPackage-a-
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
fun bar() {
|
fun bar() {
|
||||||
foo(); // test/TestPackage$src$b$
|
foo(); // test/TestPackage-b-
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
fun foo() {
|
fun foo() {
|
||||||
"" // test/TestPackage$src$a$
|
"" // test/TestPackage-a-
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
fun bar() {
|
fun bar() {
|
||||||
"" // test/TestPackage$src$a$
|
"" // test/TestPackage-a-
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
fun baz() {
|
fun baz() {
|
||||||
"" // test/TestPackage$src$a$
|
"" // test/TestPackage-a-
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
fun quux() {
|
fun quux() {
|
||||||
"" // test/TestPackage$src$a$
|
"" // test/TestPackage-a-
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
fun foo() {
|
fun foo() {
|
||||||
"" // test/TestPackage$src$namespaceOfPackage
|
"" // test/TestPackage-namespaceOfPackage
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user