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:
Alexander Udalov
2013-09-20 16:49:17 +04:00
parent fc4e13f573
commit 8a5336aca2
19 changed files with 27 additions and 27 deletions
@@ -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
@@ -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 -1
View File
@@ -1,3 +1,3 @@
fun foo() { fun foo() {
"" // _DefaultPackage$src$_DefaultPackage$ "" // _DefaultPackage-_DefaultPackage-
} }
+1 -1
View File
@@ -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 -1
View File
@@ -1,5 +1,5 @@
package test package test
fun foo() { fun foo() {
"" // test/TestPackage$src$namespaceOfPackage "" // test/TestPackage-namespaceOfPackage
} }