Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Glassmyer2015-02-23 20:36:44 +0000
committerMarkus Keller2015-03-05 19:22:52 +0000
commit1490ec2d61fb8e59c378e50775f4749531490d5f (patch)
tree3b3758f05aae115517b46db16992e0165da96272
parent245e2f8d15197f114d023f090474032f3cfd3cac (diff)
downloadeclipse.jdt.core-1490ec2d61fb8e59c378e50775f4749531490d5f.tar.gz
eclipse.jdt.core-1490ec2d61fb8e59c378e50775f4749531490d5f.tar.xz
eclipse.jdt.core-1490ec2d61fb8e59c378e50775f4749531490d5f.zip
Bug 460484: ImportRewrite throws SIOOBE when trying to add import
(Adds a minimal test that addresses the cause of the SIOOBE.) Change-Id: Ib1c40b3629a2042ecc6ccf73335002c9e3adcd57 Signed-off-by: John Glassmyer <jogl@google.com>
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ImportRewriteTest.java31
1 files changed, 31 insertions, 0 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 c3883db3fa..e1d22922d3 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
@@ -1411,6 +1411,37 @@ public class ImportRewriteTest extends AbstractJavaModelTests {
assertEqualString(cuWithoutFiltering.getSource(), expectedWithoutFiltering.toString());
}
+ /**
+ * Addresses https://bugs.eclipse.org/460484 ("ImportRewrite throws SIOOBE when trying to add
+ * import").
+ */
+ public void testAddAdjacentImportWithCommonPrefixButLongerInitialSegment() throws Exception {
+ StringBuffer contents = new StringBuffer();
+ contents.append("package pack1;\n");
+ contents.append("\n");
+ contents.append("import a.FromA;\n");
+ contents.append("import b.FromB;\n");
+ contents.append("\n");
+ contents.append("public class Clazz {}\n");
+ ICompilationUnit cu = createCompilationUnit("pack1", "Clazz", contents.toString());
+
+ ImportRewrite rewrite = newImportsRewrite(cu, new String[] {}, 999, 999, true);
+ rewrite.setUseContextToFilterImplicitImports(true);
+ // Expect that no exception is thrown when "ab" is compared with "a".
+ rewrite.addImport("ab.FromAb");
+ apply(rewrite);
+
+ StringBuffer expected = new StringBuffer();
+ expected.append("package pack1;\n");
+ expected.append("\n");
+ expected.append("import a.FromA;\n");
+ expected.append("import ab.FromAb;\n");
+ expected.append("import b.FromB;\n");
+ expected.append("\n");
+ expected.append("public class Clazz {}\n");
+ assertEqualString(cu.getSource(), expected.toString());
+ }
+
public void testAddImports1() throws Exception {
IPackageFragment pack1= this.sourceFolder.createPackageFragment("pack1", false, null);

Back to the top