diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/buildDecompiledText.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/buildDecompiledText.kt index dc585353333..70eed77bbb8 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/buildDecompiledText.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/buildDecompiledText.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.contracts.description.ContractProviderKey import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.idea.decompiler.navigation.ByDescriptorIndexer import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.renderer.DescriptorRendererModifier import org.jetbrains.kotlin.renderer.DescriptorRendererOptions @@ -62,7 +63,7 @@ fun buildDecompiledText( builder.append(descriptorRenderer.renderAnnotation(annotation)) builder.append(" ") } - builder.append(descriptor.name.asString()) + builder.append(descriptor.name.asString().quoteIfNeeded()) builder.append(if (lastEnumEntry!!) ";" else ",") } else { builder.append(descriptorRenderer.render(descriptor).replace("= ...", DECOMPILED_COMMENT_FOR_PARAMETER)) diff --git a/idea/testData/decompiler/decompiledTextJvm/EnumWithQuotes.expected.kt b/idea/testData/decompiler/decompiledTextJvm/EnumWithQuotes.expected.kt new file mode 100644 index 00000000000..d505b7d2939 --- /dev/null +++ b/idea/testData/decompiler/decompiledTextJvm/EnumWithQuotes.expected.kt @@ -0,0 +1,19 @@ +// IntelliJ API Decompiler stub source generated from a class file +// Implementation of methods is not available + +package test + +public final class EnumWithQuotes public constructor() { + internal final class B public constructor() { + private final enum class Zoo private constructor() : kotlin.Enum { + Bear, + + `Bear+`, + + `Polar Bear`, + + Panda; + } + } +} + diff --git a/idea/testData/decompiler/decompiledTextJvm/EnumWithQuotes/EnumWithQuotes.kt b/idea/testData/decompiler/decompiledTextJvm/EnumWithQuotes/EnumWithQuotes.kt new file mode 100644 index 00000000000..d2b83279679 --- /dev/null +++ b/idea/testData/decompiler/decompiledTextJvm/EnumWithQuotes/EnumWithQuotes.kt @@ -0,0 +1,9 @@ +package test + +class EnumWithQuotes { + internal class B { + private enum class Zoo { + Bear, `Bear+`, `Polar Bear`, Panda + } + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/JvmDecompiledTextTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/JvmDecompiledTextTestGenerated.java index 4a119b64b3c..c9d7bb7b635 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/JvmDecompiledTextTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/JvmDecompiledTextTestGenerated.java @@ -28,6 +28,11 @@ public class JvmDecompiledTextTestGenerated extends AbstractJvmDecompiledTextTes KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/decompiler/decompiledTextJvm"), Pattern.compile("^([^\\.]+)$"), null, true); } + @TestMetadata("EnumWithQuotes") + public void testEnumWithQuotes() throws Exception { + runTest("idea/testData/decompiler/decompiledTextJvm/EnumWithQuotes/"); + } + @TestMetadata("Modifiers") public void testModifiers() throws Exception { runTest("idea/testData/decompiler/decompiledTextJvm/Modifiers/");