From 1b797701212c4830ac9ab7498ee1186a0bb05221 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 21 Apr 2016 18:09:09 +0300 Subject: [PATCH] Do not produce trailing space when rendering root package header --- .../state/SignatureDumpingBuilderFactory.kt | 4 ++-- .../testData/cli/jvm/sanitized-name.clash.out | 4 ++-- .../codegen/dumpDeclarations/localClasses.json | 2 +- .../dumpDeclarations/multifileFacadeMembers.json | 8 ++++---- .../dumpDeclarations/topLevelMembers.json | 4 ++-- .../kotlin/renderer/DescriptorRendererImpl.kt | 16 ++++++++++++---- 6 files changed, 23 insertions(+), 15 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/SignatureDumpingBuilderFactory.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/SignatureDumpingBuilderFactory.kt index c29b49ac4e1..37b7a785adc 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/SignatureDumpingBuilderFactory.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/SignatureDumpingBuilderFactory.kt @@ -58,7 +58,7 @@ class SignatureDumpingBuilderFactory( private var firstClassWritten: Boolean = false override fun close() { - outputStream.append("\n]") + outputStream.append("\n]\n") outputStream.close() super.close() } @@ -99,7 +99,7 @@ class SignatureDumpingBuilderFactory( outputStream.append("\t\t").appendNameValue("visibility", it.displayName).append(",\n") } } - outputStream.append("\t\t").appendNameValue("class", javaClassName).append(", \n") + outputStream.append("\t\t").appendNameValue("class", javaClassName).append(",\n") outputStream.append("\t\t").appendQuoted("members").append(": [\n") signatures.joinTo(outputStream, ",\n") { buildString { diff --git a/compiler/testData/cli/jvm/sanitized-name.clash.out b/compiler/testData/cli/jvm/sanitized-name.clash.out index e8eb1cb54f1..b1693fb0fa8 100644 --- a/compiler/testData/cli/jvm/sanitized-name.clash.out +++ b/compiler/testData/cli/jvm/sanitized-name.clash.out @@ -1,7 +1,7 @@ -compiler/testData/cli/jvm/sanitized-name.clash.kt:1:1: error: duplicate JVM class name 'Sanitized_name_clashKt' generated from: package-fragment , Sanitized_name_clashKt +compiler/testData/cli/jvm/sanitized-name.clash.kt:1:1: error: duplicate JVM class name 'Sanitized_name_clashKt' generated from: package-fragment, Sanitized_name_clashKt class SanitizedNameClash ^ -compiler/testData/cli/jvm/sanitized-name.clash.kt:3:1: error: duplicate JVM class name 'Sanitized_name_clashKt' generated from: package-fragment , Sanitized_name_clashKt +compiler/testData/cli/jvm/sanitized-name.clash.kt:3:1: error: duplicate JVM class name 'Sanitized_name_clashKt' generated from: package-fragment, Sanitized_name_clashKt class Sanitized_name_clashKt ^ COMPILATION_ERROR \ No newline at end of file diff --git a/compiler/testData/codegen/dumpDeclarations/localClasses.json b/compiler/testData/codegen/dumpDeclarations/localClasses.json index 6b31a0c10dd..c7b847433af 100644 --- a/compiler/testData/codegen/dumpDeclarations/localClasses.json +++ b/compiler/testData/codegen/dumpDeclarations/localClasses.json @@ -80,7 +80,7 @@ ] }, { - "declaration": "package-fragment ", + "declaration": "package-fragment", "class": "Part2Kt", "members": [ {"visibility": "public", "declaration": "fun box(): kotlin.Unit", "name": "box", "desc": "()V"} diff --git a/compiler/testData/codegen/dumpDeclarations/multifileFacadeMembers.json b/compiler/testData/codegen/dumpDeclarations/multifileFacadeMembers.json index 25f5440d53b..fc2d6730e68 100644 --- a/compiler/testData/codegen/dumpDeclarations/multifileFacadeMembers.json +++ b/compiler/testData/codegen/dumpDeclarations/multifileFacadeMembers.json @@ -1,6 +1,6 @@ [ { - "declaration": "package-fragment ", + "declaration": "package-fragment", "class": "MultifileFacade__Part1Kt", "members": [ {"visibility": "public", "declaration": "val publicVal: kotlin.Int", "name": "publicVal", "desc": "I"}, @@ -18,7 +18,7 @@ {"visibility": "private", "declaration": "var privateVar: kotlin.Any?", "name": "privateVar", "desc": "Ljava/lang/Object;"}, {"visibility": "private", "declaration": "fun (): kotlin.Any?", "name": "getPrivateVar$MultifileFacade__Part1Kt", "desc": "()Ljava/lang/Object;"}, {"visibility": "private", "declaration": "fun (: kotlin.Any?): kotlin.Unit", "name": "setPrivateVar$MultifileFacade__Part1Kt", "desc": "(Ljava/lang/Object;)V"}, - {"declaration": "package-fragment ", "name": "", "desc": "()V"} + {"declaration": "package-fragment", "name": "", "desc": "()V"} ] }, { @@ -31,7 +31,7 @@ ] }, { - "declaration": "package-fragment ", + "declaration": "package-fragment", "class": "MultifileFacade__Part2Kt", "members": [ {"visibility": "private", "declaration": "const val privateConst: kotlin.Int", "name": "privateConst", "desc": "I"}, @@ -43,7 +43,7 @@ ] }, { - "declaration": "package-fragment ", + "declaration": "package-fragment", "class": "MultifileFacade", "members": [ {"visibility": "internal", "declaration": "const val internalConst: kotlin.Int", "name": "internalConst", "desc": "I"}, diff --git a/compiler/testData/codegen/dumpDeclarations/topLevelMembers.json b/compiler/testData/codegen/dumpDeclarations/topLevelMembers.json index 990b91358a0..0978655f45b 100644 --- a/compiler/testData/codegen/dumpDeclarations/topLevelMembers.json +++ b/compiler/testData/codegen/dumpDeclarations/topLevelMembers.json @@ -9,7 +9,7 @@ ] }, { - "declaration": "package-fragment ", + "declaration": "package-fragment", "class": "TopLevelMembersKt", "members": [ {"visibility": "public", "declaration": "val publicVal: kotlin.Int", "name": "publicVal", "desc": "I"}, @@ -38,7 +38,7 @@ {"visibility": "internal", "declaration": "fun internalOverloads(a: kotlin.String = ..., b: kotlin.Long? = ...): kotlin.Unit", "name": "internalOverloads$default", "desc": "(Ljava/lang/String;Ljava/lang/Long;ILjava/lang/Object;)V"}, {"visibility": "internal", "declaration": "fun internalOverloads(a: kotlin.String = ..., b: kotlin.Long? = ...): kotlin.Unit", "name": "internalOverloads", "desc": "(Ljava/lang/String;)V"}, {"visibility": "internal", "declaration": "fun internalOverloads(a: kotlin.String = ..., b: kotlin.Long? = ...): kotlin.Unit", "name": "internalOverloads", "desc": "()V"}, - {"declaration": "package-fragment ", "name": "", "desc": "()V"}, + {"declaration": "package-fragment", "name": "", "desc": "()V"}, {"visibility": "private", "declaration": "fun privateFun(x: kotlin.Any?): kotlin.Unit", "name": "access$privateFun", "desc": "(Ljava/lang/Object;)V"}, {"visibility": "private", "declaration": "fun (): kotlin.Any?", "name": "access$getPrivateVal$p", "desc": "()Ljava/lang/Object;"}, {"visibility": "private", "declaration": "fun (): kotlin.Any?", "name": "access$getPrivateVar$p", "desc": "()Ljava/lang/Object;"}, diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt index 754246a2607..5d82ec6630e 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.Annotated import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget +import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqNameUnsafe import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.SpecialNames @@ -888,8 +889,7 @@ internal class DescriptorRendererImpl( /* OTHER */ private fun renderPackageView(packageView: PackageViewDescriptor, builder: StringBuilder) { - builder.append(renderKeyword("package")).append(" ") - builder.append(renderFqName(packageView.fqName.toUnsafe())) + renderPackageHeader(packageView.fqName, "package", builder) if (debugMode) { builder.append(" in context of ") renderName(packageView.module, builder) @@ -897,14 +897,22 @@ internal class DescriptorRendererImpl( } private fun renderPackageFragment(fragment: PackageFragmentDescriptor, builder: StringBuilder) { - builder.append(renderKeyword("package-fragment")).append(" ") - builder.append(renderFqName(fragment.fqName.toUnsafe())) + renderPackageHeader(fragment.fqName, "package-fragment", builder) if (debugMode) { builder.append(" in ") renderName(fragment.containingDeclaration, builder) } } + private fun renderPackageHeader(fqName: FqName, fragmentOrView: String, builder: StringBuilder) { + builder.append(renderKeyword(fragmentOrView)) + val fqNameString = renderFqName(fqName.toUnsafe()) + if (fqNameString.isNotEmpty()) { + builder.append(" ") + builder.append(fqNameString) + } + } + private fun renderAccessorModifiers(descriptor: PropertyAccessorDescriptor, builder: StringBuilder) { if (descriptor.isExternal) { builder.append("external ")