From 81341e3fd3a97de54e3c48fd22a7212f1ed3d57e Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Wed, 2 Oct 2019 13:51:03 +0300 Subject: [PATCH] New J2K: add hack for incorrect comment parsing in J2K (KT-16845) #KT-33825 fixed --- .../org/jetbrains/kotlin/nj2k/printing/JKCommentPrinter.kt | 6 +++++- .../newJ2k/comments/shashBeforeEndOfMultilineComment.java | 6 ++++++ .../newJ2k/comments/shashBeforeEndOfMultilineComment.kt | 5 +++++ .../NewJavaToKotlinConverterSingleFileTestGenerated.java | 5 +++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 nj2k/testData/newJ2k/comments/shashBeforeEndOfMultilineComment.java create mode 100644 nj2k/testData/newJ2k/comments/shashBeforeEndOfMultilineComment.kt diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/printing/JKCommentPrinter.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/printing/JKCommentPrinter.kt index e513415e305..fa034e9a399 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/printing/JKCommentPrinter.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/printing/JKCommentPrinter.kt @@ -19,7 +19,11 @@ internal class JKCommentPrinter(val printer: JKPrinter) { private fun JKComment.createText() = if (this !in printedTokens) { printedTokens += this - text + + // hack till #KT-16845 is fixed + if (!isSingleline && text.endsWith("/*/")) { + text.replaceRange(text.length - "/*/".length, text.length, "/ */") + } else text } else null diff --git a/nj2k/testData/newJ2k/comments/shashBeforeEndOfMultilineComment.java b/nj2k/testData/newJ2k/comments/shashBeforeEndOfMultilineComment.java new file mode 100644 index 00000000000..ee061f4218e --- /dev/null +++ b/nj2k/testData/newJ2k/comments/shashBeforeEndOfMultilineComment.java @@ -0,0 +1,6 @@ +public class Foo { + /*/ + /*/ + public void foo(){ + } +} diff --git a/nj2k/testData/newJ2k/comments/shashBeforeEndOfMultilineComment.kt b/nj2k/testData/newJ2k/comments/shashBeforeEndOfMultilineComment.kt new file mode 100644 index 00000000000..b40c5be2ef1 --- /dev/null +++ b/nj2k/testData/newJ2k/comments/shashBeforeEndOfMultilineComment.kt @@ -0,0 +1,5 @@ +class Foo { + /*/ + / */ + fun foo() {} +} diff --git a/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java b/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java index b659a604fef..730e46185ba 100644 --- a/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java +++ b/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java @@ -1045,6 +1045,11 @@ public class NewJavaToKotlinConverterSingleFileTestGenerated extends AbstractNew public void testRemoveNoInspectionComment() throws Exception { runTest("nj2k/testData/newJ2k/comments/removeNoInspectionComment.java"); } + + @TestMetadata("shashBeforeEndOfMultilineComment.java") + public void testShashBeforeEndOfMultilineComment() throws Exception { + runTest("nj2k/testData/newJ2k/comments/shashBeforeEndOfMultilineComment.java"); + } } @TestMetadata("nj2k/testData/newJ2k/conditionalExpression")