diff --git a/plugins/jvm-abi-gen/src/org/jetbrains/kotlin/jvm/abi/JvmAbiAnalysisHandlerExtension.kt b/plugins/jvm-abi-gen/src/org/jetbrains/kotlin/jvm/abi/JvmAbiAnalysisHandlerExtension.kt index d0afcdc0d23..5c1f60fbe22 100644 --- a/plugins/jvm-abi-gen/src/org/jetbrains/kotlin/jvm/abi/JvmAbiAnalysisHandlerExtension.kt +++ b/plugins/jvm-abi-gen/src/org/jetbrains/kotlin/jvm/abi/JvmAbiAnalysisHandlerExtension.kt @@ -78,7 +78,11 @@ class JvmAbiAnalysisHandlerExtension( outputs.add(AbiOutput(file, outputFile.sourceFiles, outputFile.asByteArray())) } - removeUnneededClasses(outputs) + // private/local/synthetic class removal is temporarily turned off, because the implementation + // was not correct: it was not taking into account that private/local classes could be used + // from inline functions + // todo: implement correct removal + //removeUnneededClasses(outputs) val messageCollector = compilerConfiguration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY) ?: PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false) @@ -94,6 +98,8 @@ class JvmAbiAnalysisHandlerExtension( /** * Removes private or local classes from outputs */ + // todo: fix usage (see analysisCompleted) + @Suppress("unused") private fun removeUnneededClasses(outputs: Iterable) { // maps internal names of classes: class -> inner classes val innerClasses = HashMap>() diff --git a/plugins/jvm-abi-gen/test/org/jetbrains/kotlin/jvm/abi/CompareJvmAbiTestGenerated.java b/plugins/jvm-abi-gen/test/org/jetbrains/kotlin/jvm/abi/CompareJvmAbiTestGenerated.java index 2b9a235040d..9da72ed9357 100644 --- a/plugins/jvm-abi-gen/test/org/jetbrains/kotlin/jvm/abi/CompareJvmAbiTestGenerated.java +++ b/plugins/jvm-abi-gen/test/org/jetbrains/kotlin/jvm/abi/CompareJvmAbiTestGenerated.java @@ -29,11 +29,6 @@ public class CompareJvmAbiTestGenerated extends AbstractCompareJvmAbiTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("plugins/jvm-abi-gen/testData/compare"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, false); } - @TestMetadata("anonymousClass") - public void testAnonymousClass() throws Exception { - runTest("plugins/jvm-abi-gen/testData/compare/anonymousClass/"); - } - @TestMetadata("classFlags") public void testClassFlags() throws Exception { runTest("plugins/jvm-abi-gen/testData/compare/classFlags/"); @@ -64,41 +59,16 @@ public class CompareJvmAbiTestGenerated extends AbstractCompareJvmAbiTest { runTest("plugins/jvm-abi-gen/testData/compare/inlineFunctionBody/"); } - @TestMetadata("innerClasses") - public void testInnerClasses() throws Exception { - runTest("plugins/jvm-abi-gen/testData/compare/innerClasses/"); - } - - @TestMetadata("lambda") - public void testLambda() throws Exception { - runTest("plugins/jvm-abi-gen/testData/compare/lambda/"); - } - - @TestMetadata("localClass") - public void testLocalClass() throws Exception { - runTest("plugins/jvm-abi-gen/testData/compare/localClass/"); - } - @TestMetadata("parameterName") public void testParameterName() throws Exception { runTest("plugins/jvm-abi-gen/testData/compare/parameterName/"); } - @TestMetadata("privateClass") - public void testPrivateClass() throws Exception { - runTest("plugins/jvm-abi-gen/testData/compare/privateClass/"); - } - @TestMetadata("privateTypealias") public void testPrivateTypealias() throws Exception { runTest("plugins/jvm-abi-gen/testData/compare/privateTypealias/"); } - @TestMetadata("propertyReference") - public void testPropertyReference() throws Exception { - runTest("plugins/jvm-abi-gen/testData/compare/propertyReference/"); - } - @TestMetadata("returnType") public void testReturnType() throws Exception { runTest("plugins/jvm-abi-gen/testData/compare/returnType/"); diff --git a/plugins/jvm-abi-gen/testData/compare/anonymousClass/base/Class.kt b/plugins/jvm-abi-gen/testData/compare/anonymousClass/base/Class.kt deleted file mode 100644 index 44ba3f4f697..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/anonymousClass/base/Class.kt +++ /dev/null @@ -1,14 +0,0 @@ -package test - -interface Interface { - fun foo(): Int -} - -class InterfaceImpl : Interface { - override fun foo(): Int = 0 -} - -fun getInterface(): Interface = - object : Interface { - override fun foo(): Int = 0 - } \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/anonymousClass/sameAbi/Class.kt b/plugins/jvm-abi-gen/testData/compare/anonymousClass/sameAbi/Class.kt deleted file mode 100644 index 98757ef7a77..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/anonymousClass/sameAbi/Class.kt +++ /dev/null @@ -1,12 +0,0 @@ -package test - -interface Interface { - fun foo(): Int -} - -class InterfaceImpl : Interface { - override fun foo(): Int = 0 -} - -fun getInterface(): Interface = - InterfaceImpl() \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/innerClasses/base/classes.kt b/plugins/jvm-abi-gen/testData/compare/innerClasses/base/classes.kt deleted file mode 100644 index 68d258399a5..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/innerClasses/base/classes.kt +++ /dev/null @@ -1,31 +0,0 @@ -package test - -class A { - private inner class AInner { - inner class AInnerInner {} - - fun aInnerMethod() { - class AInnerMethodLocal - - val aInnerMethodLambda: (Int) -> Int = { it * it } - } - } - - private class ANested { - inner class ANestedInner {} - class ANestedNested - object ANestedObject - - fun aNestedMethod() { - class ANestedMethodLocal - - val aNestedMethodLambda: (Int) -> Int = { it * it } - } - } -} - -private class B { - inner class BInnerClass - class BNestedClass - object BObject {} -} \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/innerClasses/sameAbi/classes.kt b/plugins/jvm-abi-gen/testData/compare/innerClasses/sameAbi/classes.kt deleted file mode 100644 index 926842376c9..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/innerClasses/sameAbi/classes.kt +++ /dev/null @@ -1,3 +0,0 @@ -package test - -class A \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/lambda/base/Class.kt b/plugins/jvm-abi-gen/testData/compare/lambda/base/Class.kt deleted file mode 100644 index 74cf8ed4f4a..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/lambda/base/Class.kt +++ /dev/null @@ -1,8 +0,0 @@ -package test - -class Class { - fun method(): Int { - val square: (Int) -> Int = { it * it } - return square(2) - } -} \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/lambda/base/function.kt b/plugins/jvm-abi-gen/testData/compare/lambda/base/function.kt deleted file mode 100644 index 89da367eb4e..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/lambda/base/function.kt +++ /dev/null @@ -1,6 +0,0 @@ -package test - -fun function(): Int { - val square: (Int) -> Int = { it * it } - return square(2) -} \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/lambda/sameAbi/Class.kt b/plugins/jvm-abi-gen/testData/compare/lambda/sameAbi/Class.kt deleted file mode 100644 index 57c3bfa465c..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/lambda/sameAbi/Class.kt +++ /dev/null @@ -1,7 +0,0 @@ -package test - -class Class { - fun method(): Int { - return 0 - } -} \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/lambda/sameAbi/function.kt b/plugins/jvm-abi-gen/testData/compare/lambda/sameAbi/function.kt deleted file mode 100644 index c386b363a57..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/lambda/sameAbi/function.kt +++ /dev/null @@ -1,5 +0,0 @@ -package test - -fun function(): Int { - return 0 -} \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/localClass/base/Class.kt b/plugins/jvm-abi-gen/testData/compare/localClass/base/Class.kt deleted file mode 100644 index 57d7d8b89e7..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/localClass/base/Class.kt +++ /dev/null @@ -1,7 +0,0 @@ -package test - -class Class { - fun method() { - class MethodLocalClass - } -} \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/localClass/base/function.kt b/plugins/jvm-abi-gen/testData/compare/localClass/base/function.kt deleted file mode 100644 index 91e4a2c7fec..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/localClass/base/function.kt +++ /dev/null @@ -1,5 +0,0 @@ -package test - -fun function() { - class FunctionLocalClass -} \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/localClass/sameAbi/Class.kt b/plugins/jvm-abi-gen/testData/compare/localClass/sameAbi/Class.kt deleted file mode 100644 index 192676f9a79..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/localClass/sameAbi/Class.kt +++ /dev/null @@ -1,6 +0,0 @@ -package test - -class Class { - fun method() { - } -} \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/localClass/sameAbi/function.kt b/plugins/jvm-abi-gen/testData/compare/localClass/sameAbi/function.kt deleted file mode 100644 index 92f421c23ff..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/localClass/sameAbi/function.kt +++ /dev/null @@ -1,4 +0,0 @@ -package test - -fun function() { -} \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/privateClass/base/classes.kt b/plugins/jvm-abi-gen/testData/compare/privateClass/base/classes.kt deleted file mode 100644 index c5b914f5538..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/privateClass/base/classes.kt +++ /dev/null @@ -1,5 +0,0 @@ -package test - -class PublicClass -internal class InternalClass -private class PrivateClass \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/privateClass/sameAbi/classes.kt b/plugins/jvm-abi-gen/testData/compare/privateClass/sameAbi/classes.kt deleted file mode 100644 index ef3fc325d30..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/privateClass/sameAbi/classes.kt +++ /dev/null @@ -1,4 +0,0 @@ -package test - -class PublicClass -internal class InternalClass \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/propertyReference/base/Class.kt b/plugins/jvm-abi-gen/testData/compare/propertyReference/base/Class.kt deleted file mode 100644 index 907581bd486..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/propertyReference/base/Class.kt +++ /dev/null @@ -1,7 +0,0 @@ -package test - -class Class { - val property: Int = 0 -} - -fun getProp(c: Class) = Class::property.get(c) \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/compare/propertyReference/sameAbi/Class.kt b/plugins/jvm-abi-gen/testData/compare/propertyReference/sameAbi/Class.kt deleted file mode 100644 index 475280eaee2..00000000000 --- a/plugins/jvm-abi-gen/testData/compare/propertyReference/sameAbi/Class.kt +++ /dev/null @@ -1,7 +0,0 @@ -package test - -class Class { - val property: Int = 0 -} - -fun getProp(c: Class) = c.property \ No newline at end of file diff --git a/plugins/jvm-abi-gen/testData/content/class/signatures.txt b/plugins/jvm-abi-gen/testData/content/class/signatures.txt index 6125a38e8f2..d116004d13c 100644 --- a/plugins/jvm-abi-gen/testData/content/class/signatures.txt +++ b/plugins/jvm-abi-gen/testData/content/class/signatures.txt @@ -17,9 +17,42 @@ public class test/BaseClass { public method getBaseClassPublicVal(): int } @kotlin.Metadata +public final class test/Class$NestedInnerClass$NestedNestedInnerClass { + inner class test/Class$NestedInnerClass + inner class test/Class$NestedInnerClass$NestedNestedInnerClass + public method (): void +} +@kotlin.Metadata +final class test/Class$NestedInnerClass { + inner class test/Class$NestedInnerClass + inner class test/Class$NestedInnerClass$NestedNestedInnerClass + public method (): void +} +@kotlin.Metadata +final class test/Class$classPublicMethod$publicMethodLambda$1 { + public final static field INSTANCE: test.Class$classPublicMethod$publicMethodLambda$1 + inner class test/Class$classPublicMethod$publicMethodLambda$1 + method (): void + public final method invoke(p0: int): int + public synthetic method invoke(p0: java.lang.Object): java.lang.Object +} +@kotlin.Metadata +public final class test/Class$classPublicMethod$publicMethodLocalClass { + inner class test/Class$classPublicMethod$publicMethodLocalClass + public method (): void + public final method getX(): int +} +@kotlin.Metadata public final class test/Class { + inner class test/Class$NestedInnerClass + inner class test/Class$classPublicMethod$publicMethodLambda$1 + inner class test/Class$classPublicMethod$publicMethodLocalClass public method (): void public final method classPublicMethod(): void } @kotlin.Metadata -public interface test/Interface \ No newline at end of file +public interface test/Interface +@kotlin.Metadata +final class test/PrivateClass { + public method (): void +} \ No newline at end of file