diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/Util.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/Util.java index 8b41712..a934b2f 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/Util.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/Util.java @@ -141,7 +141,10 @@ public class Util { public static void appendProblem(StringBuffer problems, IProblem problem, char[] source, int problemCount) { problems.append(problemCount + (problem.isError() ? ". ERROR" : ". WARNING")); - problems.append(" in " + new String(problem.getOriginatingFileName())); + char[] originatingFileName = problem.getOriginatingFileName(); + if (originatingFileName != null) { + problems.append(" in " + new String(originatingFileName)); + } if (source != null) { problems.append(((DefaultProblem)problem).errorReportSource(source)); } diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/CompilationUnitResolver.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/CompilationUnitResolver.java index 0fdbd0a..0bd8162 100644 --- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/CompilationUnitResolver.java +++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/CompilationUnitResolver.java @@ -99,6 +99,7 @@ class CompilationUnitResolver extends Compiler { DefaultBindingResolver.BindingTables bindingTables; boolean hasCompilationAborted; + CategorizedProblem abortProblem; private IProgressMonitor monitor; @@ -364,6 +365,7 @@ class CompilationUnitResolver extends Compiler { removeUnresolvedBindings(unit); } this.hasCompilationAborted = true; + this.abortProblem = abortException.problem; } public static void parse(ICompilationUnit[] compilationUnits, ASTRequestor astRequestor, int apiLevel, Map options, int flags, IProgressMonitor monitor) { @@ -689,11 +691,16 @@ class CompilationUnitResolver extends Compiler { // the bindings could not be resolved due to missing types in name environment // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=86541 CompilationUnitDeclaration unitDeclaration = parse(sourceUnit, nodeSearcher, options, flags); - final int problemCount = unit.compilationResult.problemCount; - if (problemCount != 0) { - unitDeclaration.compilationResult.problems = new CategorizedProblem[problemCount]; - System.arraycopy(unit.compilationResult.problems, 0, unitDeclaration.compilationResult.problems, 0, problemCount); - unitDeclaration.compilationResult.problemCount = problemCount; + if (unit != null) { + final int problemCount = unit.compilationResult.problemCount; + if (problemCount != 0) { + unitDeclaration.compilationResult.problems = new CategorizedProblem[problemCount]; + System.arraycopy(unit.compilationResult.problems, 0, unitDeclaration.compilationResult.problems, 0, problemCount); + unitDeclaration.compilationResult.problemCount = problemCount; + } + } else if (resolver.abortProblem != null) { + unitDeclaration.compilationResult.problemCount = 1; + unitDeclaration.compilationResult.problems = new CategorizedProblem[] { resolver.abortProblem }; } return unitDeclaration; }