Skip to content

Commit

Permalink
projectlombok#1976. override error handling policy for problemReporte…
Browse files Browse the repository at this point in the history
…r to guarantee AbortCompilation is throwing.
  • Loading branch information
Bulgakov Alexander committed May 24, 2019
1 parent cd49188 commit 089f2ec
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions src/eclipseAgent/lombok/eclipse/agent/PatchVal.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,13 @@
*/
package lombok.eclipse.agent;

import lombok.permit.Permit;
import org.eclipse.jdt.core.compiler.CategorizedProblem;
import org.eclipse.jdt.internal.compiler.CompilationResult;
import org.eclipse.jdt.internal.compiler.DefaultErrorHandlingPolicies;
import org.eclipse.jdt.internal.compiler.ast.ASTNode;
import org.eclipse.jdt.internal.compiler.ast.Annotation;
import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
import org.eclipse.jdt.internal.compiler.ast.ConditionalExpression;
import org.eclipse.jdt.internal.compiler.ast.Expression;
import org.eclipse.jdt.internal.compiler.ast.ForeachStatement;
Expand All @@ -45,9 +48,8 @@
import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
import org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
import org.eclipse.jdt.internal.compiler.lookup.TypeIds;

import lombok.permit.Permit;
import org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
import org.eclipse.jdt.internal.compiler.problem.ProblemReporter;

import java.lang.reflect.Field;

Expand Down Expand Up @@ -358,6 +360,10 @@ private static TypeBinding getForEachComponentType(Expression collection, BlockS
}

private static TypeBinding resolveForExpression(Expression collection, BlockScope scope) {
CompilationUnitDeclaration referenceContext = scope.compilationUnitScope().referenceContext;
ProblemReporter oldProblemReporter = referenceContext.problemReporter;
referenceContext.problemReporter = new ProblemReporter(DefaultErrorHandlingPolicies.exitOnFirstError(),
oldProblemReporter.options, oldProblemReporter.problemFactory);
try {
return collection.resolveType(scope);
} catch (ArrayIndexOutOfBoundsException e) {
Expand Down Expand Up @@ -389,6 +395,8 @@ private static TypeBinding resolveForExpression(Expression collection, BlockScop
}
}
throw e;
} finally {
referenceContext.problemReporter = oldProblemReporter;
}
}
}

0 comments on commit 089f2ec

Please sign in to comment.