Bug 513869 - M6: NPE creating a method override
Change-Id: I30f819640f3083e6dea73d5a28638debdbf83e48
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ImportRewrite18Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ImportRewrite18Test.java
index ec3300a..34c9db1 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ImportRewrite18Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ImportRewrite18Test.java
@@ -37,6 +37,7 @@
import org.eclipse.jdt.core.dom.TypeDeclaration;
import org.eclipse.jdt.core.dom.VariableDeclaration;
import org.eclipse.jdt.core.dom.rewrite.ImportRewrite;
+import org.eclipse.jdt.core.dom.rewrite.ImportRewrite.TypeLocation;
import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
import org.eclipse.jdt.core.tests.model.AbstractJavaModelTests;
import org.eclipse.jface.text.BadLocationException;
@@ -544,7 +545,7 @@
assertTrue(actualType.isParameterizedType());
}
- private Type runTest426094andGetType(int i) throws Exception {
+ private Type runTest426094andGetType(int i, boolean testNullImportRewriteContext) throws Exception {
String contents = "package pack1;\n" +
"public class X{\n" +
this.bug426094TestInput[i][0] + "\n" +
@@ -594,7 +595,12 @@
ITypeBinding typeBinding = variableBinding.getType();
cu = getCompilationUnit("/" + PROJECT + "/src/pack1/A.java");
ImportRewrite rewrite = newImportsRewrite(cu, new String[0], 99, 99, true);
- Type actualType = rewrite.addImport(typeBinding, astRoot.getAST());
+ Type actualType;
+ if(testNullImportRewriteContext) {
+ actualType = rewrite.addImport(typeBinding, astRoot.getAST(), null, TypeLocation.UNKNOWN);
+ } else {
+ actualType = rewrite.addImport(typeBinding, astRoot.getAST());
+ }
return actualType;
}
@@ -613,7 +619,7 @@
};
private Type bug426094_runi_since_8(int i) throws Exception {
- Type actualType = runTest426094andGetType(i);
+ Type actualType = runTest426094andGetType(i, false);
assertEquals(this.bug426094TestInput[i][1], actualType.toString());
return actualType;
}
@@ -826,4 +832,9 @@
edit.apply(document);
compilationUnit.getBuffer().setContents(document.get());
}
+
+ public void testBug513869() throws Exception {
+ Type actualType = runTest426094andGetType(0, true);
+ assertEquals(this.bug426094TestInput[0][1], actualType.toString());
+ }
}
diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.java
index d4535d7..503283c 100644
--- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.java
+++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.java
@@ -1460,6 +1460,8 @@
private void annotateList(List annotations, IAnnotationBinding [] annotationBindings, AST ast,
ImportRewriteContext context, TypeLocation location, ITypeBinding type) {
+ if (context == null)
+ context= this.defaultContext;
annotationBindings = context.removeRedundantTypeAnnotations(annotationBindings, location, type);
for (int i = 0; i< annotationBindings.length; i++) {
Annotation annotation = addAnnotation(annotationBindings[i], ast, context);