From fb1d6c0f0dfafcd889cac8906246803349c353f2 Mon Sep 17 00:00:00 2001 From: Reinier Zwitserloot Date: Fri, 31 Dec 2010 10:41:53 +0100 Subject: Resolve-phase transformers in eclipse need to force a rebuild of the EclipseAST object. Fixes issue #171 --- src/core/lombok/eclipse/EclipseAST.java | 6 +++--- src/core/lombok/eclipse/TransformEclipseAST.java | 6 +++--- src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/core/lombok/eclipse/EclipseAST.java b/src/core/lombok/eclipse/EclipseAST.java index 1af9bc73..6915fcb4 100644 --- a/src/core/lombok/eclipse/EclipseAST.java +++ b/src/core/lombok/eclipse/EclipseAST.java @@ -196,12 +196,12 @@ public class EclipseAST extends AST { * with filled in method bodies and such. Also propagates problems and errors, which in diet parse * mode can't be reliably added to the problems/warnings view. */ - public void reparse() { + public void reparse(boolean forceRebuild) { propagateProblems(); - if (completeParse) return; + if (completeParse && !forceRebuild) return; boolean changed = isChanged(); boolean newCompleteParse = isComplete(compilationUnitDeclaration); - if (!newCompleteParse) return; + if (!newCompleteParse && !forceRebuild) return; top().rebuild(); diff --git a/src/core/lombok/eclipse/TransformEclipseAST.java b/src/core/lombok/eclipse/TransformEclipseAST.java index 1f31bd59..443969f8 100644 --- a/src/core/lombok/eclipse/TransformEclipseAST.java +++ b/src/core/lombok/eclipse/TransformEclipseAST.java @@ -84,7 +84,7 @@ public class TransformEclipseAST { transform(parser, ast); } - public static EclipseAST getAST(CompilationUnitDeclaration ast) { + public static EclipseAST getAST(CompilationUnitDeclaration ast, boolean forceRebuild) { EclipseAST existing = null; if (astCacheField != null) { try { @@ -101,7 +101,7 @@ public class TransformEclipseAST { } catch (Exception ignore) { } } else { - existing.reparse(); + existing.reparse(forceRebuild); } return existing; @@ -126,7 +126,7 @@ public class TransformEclipseAST { // Do NOT abort if (ast.bits & ASTNode.HasAllMethodBodies) != 0 - that doesn't work. try { - EclipseAST existing = getAST(ast); + EclipseAST existing = getAST(ast, false); new TransformEclipseAST(existing).go(); } catch (Throwable t) { try { diff --git a/src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java b/src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java index 8c1a8db7..69edae6e 100644 --- a/src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java +++ b/src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java @@ -113,7 +113,7 @@ public class PatchDelegate { if (cud == null) { cud = scope.compilationUnitScope().referenceContext; - eclipseAst = TransformEclipseAST.getAST(cud); + eclipseAst = TransformEclipseAST.getAST(cud, true); } List rawTypes = new ArrayList(); -- cgit