Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Keller2017-02-09 19:11:00 +0000
committerManoj Palat2017-02-13 09:11:19 +0000
commit90ccad423c857f1832cbed409cc6c5881df7f284 (patch)
tree13a891ff05b0024b955422dede91ba5f1eadaab3
parent0377d21a8c7bb1802c891ea7b57f0b010b66afba (diff)
downloadeclipse.jdt.core-90ccad423c857f1832cbed409cc6c5881df7f284.tar.gz
eclipse.jdt.core-90ccad423c857f1832cbed409cc6c5881df7f284.tar.xz
eclipse.jdt.core-90ccad423c857f1832cbed409cc6c5881df7f284.zip
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ImportRewriteTest.java29
-rw-r--r--org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer.java13
2 files changed, 37 insertions, 5 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ImportRewriteTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ImportRewriteTest.java
index 1afdbda126..1aae1d6c6a 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ImportRewriteTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ImportRewriteTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -2085,6 +2085,33 @@ public class ImportRewriteTest extends AbstractJavaModelTests {
assertEqualString(cuT.getSource(), buf.toString());
}
+ public void testRemoveImportWithSyntaxError_bug494691() throws Exception {
+
+ IPackageFragment pack1= this.sourceFolder.createPackageFragment("pack1", false, null);
+ StringBuffer buf= new StringBuffer();
+ buf.append("package pack1;\n");
+ buf.append("\n");
+ buf.append("import java.util.*;\n");
+ buf.append("\n");
+ buf.append("syntaxError\n");
+ buf.append("public class C {\n");
+ buf.append("}\n");
+ ICompilationUnit cu= pack1.createCompilationUnit("C.java", buf.toString(), false, null);
+
+ ImportRewrite imports= newImportsRewrite(cu, new String[0], 2, 2, true);
+ imports.removeImport("java.util.*");
+
+ apply(imports);
+
+ buf= new StringBuffer();
+ buf.append("package pack1;\n");
+ buf.append("\n");
+ buf.append("syntaxError\n");
+ buf.append("public class C {\n");
+ buf.append("}\n");
+ assertEqualString(cu.getSource(), buf.toString());
+ }
+
public void testAddImports_bug23078() throws Exception {
IPackageFragment pack1= this.sourceFolder.createPackageFragment("pack1", false, null);
StringBuffer buf= new StringBuffer();
diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer.java
index 86f3c252a4..82679ade1d 100644
--- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer.java
+++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer.java
@@ -28,6 +28,7 @@ import java.util.TreeMap;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IBuffer;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
@@ -257,7 +258,7 @@ public final class ImportRewriteAnalyzer {
}
private static RewriteSite determineRewriteSite(
- CompilationUnit compilationUnit, List<OriginalImportEntry> originalImports) {
+ CompilationUnit compilationUnit, List<OriginalImportEntry> originalImports) throws JavaModelException {
IRegion importsRegion = determineImportsRegion(originalImports);
IRegion surroundingRegion = determineSurroundingRegion(compilationUnit, importsRegion);
@@ -298,7 +299,7 @@ public final class ImportRewriteAnalyzer {
* Determines the region to be occupied by imports, their associated comments, and surrounding
* whitespace.
*/
- private static IRegion determineSurroundingRegion(CompilationUnit compilationUnit, IRegion importsRegion) {
+ private static IRegion determineSurroundingRegion(CompilationUnit compilationUnit, IRegion importsRegion) throws JavaModelException {
NavigableMap<Integer, ASTNode> nodesTreeMap = mapTopLevelNodes(compilationUnit);
int surroundingStart;
@@ -326,8 +327,12 @@ public final class ImportRewriteAnalyzer {
positionAfterImports = importsRegion.getOffset() + importsRegion.getLength();
}
- Integer ceilingKey = nodesTreeMap.ceilingKey(positionAfterImports);
- int surroundingEnd = ceilingKey != null ? ceilingKey : compilationUnit.getLength();
+ int surroundingEnd = positionAfterImports;
+ IBuffer buffer = compilationUnit.getTypeRoot().getBuffer();
+ int length = buffer.getLength();
+ while (surroundingEnd < length && Character.isWhitespace(buffer.getChar(surroundingEnd))) {
+ surroundingEnd++;
+ }
return new Region(surroundingStart, surroundingEnd - surroundingStart);
}

Back to the top