diff --git a/java/java-impl/src/com/intellij/psi/impl/source/parsing/ParseUtil.java b/java/java-impl/src/com/intellij/psi/impl/source/parsing/ParseUtil.java index c0d9cece2e5e..3809e11a8245 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/parsing/ParseUtil.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/parsing/ParseUtil.java @@ -96,10 +96,17 @@ public class ParseUtil extends ParseUtilBase { if (anImport == null || !isEmptyImportList(anImport)) return; final TreeElement next = (TreeElement)TreeUtil.skipElements(anImport.getTreeNext(), ElementType.JAVA_COMMENT_OR_WHITESPACE_BIT_SET); - if (next != null && next != anImport) { + if (next != null) { anImport.rawRemove(); next.rawInsertBeforeMe(anImport); } + else { + final TreeElement last = (TreeElement)root.getLastChildNode(); + if (last != null && last != anImport) { + anImport.rawRemove(); + last.rawInsertAfterMe(anImport); + } + } } private static void bindComments(ASTNode root) { diff --git a/java/java-tests/testData/psi/parser-full/commonParsing/UnclosedComment.java b/java/java-tests/testData/psi/parser-full/commonParsing/UnclosedComment.java new file mode 100644 index 000000000000..43141b908716 --- /dev/null +++ b/java/java-tests/testData/psi/parser-full/commonParsing/UnclosedComment.java @@ -0,0 +1,7 @@ +// unclosed comment +/* + +import java.io.*; + +class a { +} \ No newline at end of file diff --git a/java/java-tests/testData/psi/parser-full/commonParsing/UnclosedComment.txt b/java/java-tests/testData/psi/parser-full/commonParsing/UnclosedComment.txt new file mode 100644 index 000000000000..2296d8eb9d45 --- /dev/null +++ b/java/java-tests/testData/psi/parser-full/commonParsing/UnclosedComment.txt @@ -0,0 +1,6 @@ +PsiJavaFile:UnclosedComment.java + PsiComment(END_OF_LINE_COMMENT)('// unclosed comment') + PsiWhiteSpace('\n') + PsiComment(C_STYLE_COMMENT)('/*\n\nimport java.io.*;\n\nclass a {\n}') + PsiImportList + \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/lang/java/parser/CommonJavaParsingTest.java b/java/java-tests/testSrc/com/intellij/lang/java/parser/CommonJavaParsingTest.java index e316ceffa277..df2c23887983 100644 --- a/java/java-tests/testSrc/com/intellij/lang/java/parser/CommonJavaParsingTest.java +++ b/java/java-tests/testSrc/com/intellij/lang/java/parser/CommonJavaParsingTest.java @@ -24,4 +24,5 @@ public class CommonJavaParsingTest extends JavaParsingTestCase{ public void testIncompleteCodeBlock() { doTest(true); } public void testImportListBug() { doTest(true); } public void testRefParamsAfterError() { doTest(true); } + public void testUnclosedComment() { doTest(true); } // todo: fix } \ No newline at end of file