JvmName annotation support, single-file facade case (just rename file facade class)

- initial implementation of JvmFileClassesProvider
- migrate some of PackagePartClassUtil usages to JvmFileClassesProvider (mostly in Codegen)
- placeholder ("no resolve") implementation for migration period and unclear cases
- tests
This commit is contained in:
Dmitry Petrov
2015-09-02 22:08:13 +03:00
parent 43e91d4d31
commit 2519641b2b
58 changed files with 615 additions and 79 deletions
+1 -1
View File
@@ -1,3 +1,3 @@
$TESTDATA_DIR$/classAndFacadeClash.kt
-d
$TEMP_DIR$
$TEMP_DIR$
+3
View File
@@ -0,0 +1,3 @@
$TESTDATA_DIR$/classAndFileClassClash.kt
-d
$TEMP_DIR$
+6
View File
@@ -0,0 +1,6 @@
@file:jvmName("Foo")
package test
public fun foo() {}
class Foo {}
+7
View File
@@ -0,0 +1,7 @@
compiler/testData/cli/jvm/classAndFileClassClash.kt:1:1: error: duplicate JVM class name 'test/Foo' generated from: package-fragment test, Foo
@file:jvmName("Foo")
^
compiler/testData/cli/jvm/classAndFileClassClash.kt:6:1: error: duplicate JVM class name 'test/Foo' generated from: package-fragment test, Foo
class Foo {}
^
COMPILATION_ERROR
@@ -0,0 +1,4 @@
$TESTDATA_DIR$/classAndOtherFileClassClash1.kt
$TESTDATA_DIR$/classAndOtherFileClassClash2.kt
-d
$TEMP_DIR$
@@ -0,0 +1,7 @@
compiler/testData/cli/jvm/classAndOtherFileClassClash1.kt:1:1: error: duplicate JVM class name 'test/Foo' generated from: Foo, package-fragment test
@file:jvmName("Foo")
^
compiler/testData/cli/jvm/classAndOtherFileClassClash2.kt:3:1: error: duplicate JVM class name 'test/Foo' generated from: Foo, package-fragment test
class Foo
^
COMPILATION_ERROR
@@ -0,0 +1,4 @@
@file:jvmName("Foo")
package test
public fun foo() {}
@@ -0,0 +1,3 @@
package test
class Foo
@@ -0,0 +1,3 @@
$TESTDATA_DIR$/fileClassAndFacadeClash.kt
-d
$TEMP_DIR$
+4
View File
@@ -0,0 +1,4 @@
@file:jvmName("TestPackage")
package test
fun foo() {}
+4
View File
@@ -0,0 +1,4 @@
compiler/testData/cli/jvm/fileClassAndFacadeClash.kt:1:1: error: duplicate JVM class name 'test/TestPackage' generated from: package-fragment test, package-fragment test
@file:jvmName("TestPackage")
^
COMPILATION_ERROR
+3
View File
@@ -0,0 +1,3 @@
$TESTDATA_DIR$/fileClassAndTImplClash.kt
-d
$TEMP_DIR$
+4
View File
@@ -0,0 +1,4 @@
@file:jvmName("XXX\$\$TImpl")
package test
interface XXX
+1
View File
@@ -0,0 +1 @@
OK
@@ -0,0 +1,4 @@
$TESTDATA_DIR$/fileClassClashMultipleFiles1.kt
$TESTDATA_DIR$/fileClassClashMultipleFiles2.kt
-d
$TEMP_DIR$
@@ -0,0 +1,7 @@
compiler/testData/cli/jvm/fileClassClashMultipleFiles1.kt:1:1: error: duplicate JVM class name 'test/Util' generated from: package-fragment test, package-fragment test
@file:jvmName("Util")
^
compiler/testData/cli/jvm/fileClassClashMultipleFiles2.kt:1:1: error: duplicate JVM class name 'test/Util' generated from: package-fragment test, package-fragment test
@file:jvmName("Util")
^
COMPILATION_ERROR
@@ -0,0 +1,4 @@
@file:jvmName("Util")
package test
public fun foo() {}
@@ -0,0 +1,4 @@
@file:jvmName("Util")
package test
public fun bar() {}