diff --git a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt index eca65c13235..69d5c119ba3 100644 --- a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt +++ b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt @@ -23,6 +23,7 @@ import com.sun.tools.javac.tree.JCTree import com.sun.tools.javac.tree.Pretty import com.sun.tools.javac.tree.TreeMaker import com.sun.tools.javac.util.Context +import com.sun.tools.javac.util.Convert import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.backend.common.output.OutputFile import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.OUTPUT @@ -50,6 +51,7 @@ import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.jvm.extensions.PartialAnalysisHandlerExtension import java.io.File +import java.io.IOException import java.io.StringWriter import java.io.Writer import java.net.URLClassLoader @@ -367,9 +369,13 @@ internal fun JCTree.prettyPrint(context: Context): String { return StringWriter().apply { PrettyWithWorkarounds(context, this, false).printStat(this@prettyPrint) }.toString() } -private class PrettyWithWorkarounds(private val context: Context, out: Writer?, sourceOutput: Boolean) : Pretty(out, sourceOutput) { +private class PrettyWithWorkarounds(private val context: Context, val out: Writer, sourceOutput: Boolean) : Pretty(out, sourceOutput) { companion object { - private val ENUM = Flags.ENUM.toLong() + private const val ENUM = Flags.ENUM.toLong() + } + + override fun print(s: Any) { + out.write(s.toString()) } override fun visitVarDef(tree: JCTree.JCVariableDecl) { diff --git a/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/ClassFileToSourceStubConverterTestGenerated.java b/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/ClassFileToSourceStubConverterTestGenerated.java index 7577da3bafb..280161651cf 100644 --- a/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/ClassFileToSourceStubConverterTestGenerated.java +++ b/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/ClassFileToSourceStubConverterTestGenerated.java @@ -67,6 +67,12 @@ public class ClassFileToSourceStubConverterTestGenerated extends AbstractClassFi doTest(fileName); } + @TestMetadata("cyrillicClassName.kt") + public void testCyrillicClassName() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("plugins/kapt3/kapt3-compiler/testData/converter/cyrillicClassName.kt"); + doTest(fileName); + } + @TestMetadata("dataClass.kt") public void testDataClass() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("plugins/kapt3/kapt3-compiler/testData/converter/dataClass.kt"); diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/cyrillicClassName.kt b/plugins/kapt3/kapt3-compiler/testData/converter/cyrillicClassName.kt new file mode 100644 index 00000000000..4867cc4edde --- /dev/null +++ b/plugins/kapt3/kapt3-compiler/testData/converter/cyrillicClassName.kt @@ -0,0 +1,2 @@ +class Привет +class République \ No newline at end of file diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/cyrillicClassName.txt b/plugins/kapt3/kapt3-compiler/testData/converter/cyrillicClassName.txt new file mode 100644 index 00000000000..8fc8924d0d1 --- /dev/null +++ b/plugins/kapt3/kapt3-compiler/testData/converter/cyrillicClassName.txt @@ -0,0 +1,22 @@ +import java.lang.System; + +@kotlin.Metadata() +public final class République { + + public République() { + super(); + } +} + +//////////////////// + + +import java.lang.System; + +@kotlin.Metadata() +public final class Привет { + + public Привет() { + super(); + } +}