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()));
// 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));
FqName srcFqName = facadeFqName.parent().child(Name.identifier(srcName));
@@ -1,4 +1,4 @@
fun foo(a: Int = 1) {}
//0 _DefaultPackage.foo
//3 INVOKESTATIC _DefaultPackage\$src\$
//3 INVOKESTATIC _DefaultPackage-
@@ -4,5 +4,5 @@ fun test2() {
1.test1()
}
// 2 INVOKESTATIC _DefaultPackage\$src\$1\$[0-9a-f]+\.test1 \(I\)V
// 1 INVOKESTATIC _DefaultPackage\$src\$1\$[0-9a-f]+\.test2 \(\)V
// 2 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test1 \(I\)V
// 1 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test2 \(\)V
@@ -2,5 +2,5 @@ package a
fun test1() {}
// 2 INVOKESTATIC a/APackage\$src\$1\$[0-9a-f]+\.test1 \(\)V
// 1 INVOKESTATIC b/BPackage\$src\$2\$[0-9a-f]+\.test2 \(\)V
// 2 INVOKESTATIC a/APackage-1-[0-9a-f]+\.test1 \(\)V
// 1 INVOKESTATIC b/BPackage-2-[0-9a-f]+\.test2 \(\)V
@@ -1,4 +1,4 @@
fun test1() {}
// 2 INVOKESTATIC _DefaultPackage\$src\$1\$[0-9a-f]+\.test1 \(\)V
// 1 INVOKESTATIC _DefaultPackage\$src\$2\$[0-9a-f]+\.test2 \(\)V
// 2 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test1 \(\)V
// 1 INVOKESTATIC _DefaultPackage-2-[0-9a-f]+\.test2 \(\)V
@@ -4,5 +4,5 @@ fun test2() {
test1()
}
// 2 INVOKESTATIC _DefaultPackage\$src\$1\$[0-9a-f]+\.test1 \(\)V
// 1 INVOKESTATIC _DefaultPackage\$src\$1\$[0-9a-f]+\.test2 \(\)V
// 2 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test1 \(\)V
// 1 INVOKESTATIC _DefaultPackage-1-[0-9a-f]+\.test2 \(\)V
@@ -2,5 +2,5 @@ package a
val prop = 1
// 2 INVOKESTATIC a/APackage\$src\$1\$[0-9a-f]+\.getProp \(\)I
// 1 GETSTATIC a/APackage\$src\$1\$[0-9a-f]+\.prop \: I
// 2 INVOKESTATIC a/APackage-1-[0-9a-f]+\.getProp \(\)I
// 1 GETSTATIC a/APackage-1-[0-9a-f]+\.prop \: I
@@ -5,5 +5,5 @@ val prop: Int = 0
return $prop + 1
}
// 2 INVOKESTATIC a/APackage\$src\$1\$[0-9a-f]+\.getProp \(\)I
// 1 GETSTATIC a/APackage\$src\$1\$[0-9a-f]+\.prop \: I
// 2 INVOKESTATIC a/APackage-1-[0-9a-f]+\.getProp \(\)I
// 1 GETSTATIC a/APackage-1-[0-9a-f]+\.prop \: I
@@ -1,6 +1,6 @@
deprecated("") val test: Int = 0
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: _DefaultPackage$src$topLevelProperty$, test
// TESTED_OBJECTS: _DefaultPackage-topLevelProperty-, test
// IS_FULL_CONTAINING_CLASS_NAME: false
// FLAGS: ACC_DEPRECATED, ACC_FINAL, ACC_STATIC
@@ -64,17 +64,17 @@ public class OuterClassGenTest extends CodegenTestCase {
}
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);
}
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);
}
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);
}
+1 -1
View File
@@ -1,3 +1,3 @@
fun foo() {
"" // _DefaultPackage$src$_DefaultPackage$
"" // _DefaultPackage-_DefaultPackage-
}
+1 -1
View File
@@ -4,5 +4,5 @@ class A {
}
fun A.foo() {
"" // a/APackage$src$extensionFunction$
"" // a/APackage-extensionFunction-
}
@@ -1,5 +1,5 @@
package test
fun foo() {
"" // test/TestPackage$src$a$
"" // test/TestPackage-a-
}
@@ -1,5 +1,5 @@
package test
fun bar() {
foo(); // test/TestPackage$src$b$
foo(); // test/TestPackage-b-
}
@@ -1,5 +1,5 @@
package test
fun foo() {
"" // test/TestPackage$src$a$
"" // test/TestPackage-a-
}
@@ -1,5 +1,5 @@
package test
fun bar() {
"" // test/TestPackage$src$a$
"" // test/TestPackage-a-
}
@@ -1,5 +1,5 @@
package test
fun baz() {
"" // test/TestPackage$src$a$
"" // test/TestPackage-a-
}
@@ -1,5 +1,5 @@
package test
fun quux() {
"" // test/TestPackage$src$a$
"" // test/TestPackage-a-
}
+1 -1
View File
@@ -1,5 +1,5 @@
package test
fun foo() {
"" // test/TestPackage$src$namespaceOfPackage
"" // test/TestPackage-namespaceOfPackage
}