diff options
Diffstat (limited to 'src_eclipseagent/lombok/eclipse/agent/PatchFixes.java')
-rw-r--r-- | src_eclipseagent/lombok/eclipse/agent/PatchFixes.java | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src_eclipseagent/lombok/eclipse/agent/PatchFixes.java b/src_eclipseagent/lombok/eclipse/agent/PatchFixes.java index e36823b2..3ec5af90 100644 --- a/src_eclipseagent/lombok/eclipse/agent/PatchFixes.java +++ b/src_eclipseagent/lombok/eclipse/agent/PatchFixes.java @@ -1,5 +1,9 @@ package lombok.eclipse.agent; +import java.lang.reflect.Field; + +import org.eclipse.jdt.core.dom.SimpleName; + public class PatchFixes { public static int fixRetrieveStartingCatchPosition(int in) { return in; @@ -11,4 +15,37 @@ public class PatchFixes { int bits = (Integer)(node.getClass().getField("bits").get(node)); return (bits & BIT24) != 0; } + + public static void setIsGeneratedFlag(org.eclipse.jdt.core.dom.ASTNode domNode, + org.eclipse.jdt.internal.compiler.ast.ASTNode internalNode) throws Exception { + boolean isGenerated = internalNode.getClass().getField("$generatedBy").get(internalNode) != null; + if (isGenerated) domNode.getClass().getField("$isGenerated").set(domNode, true); + } + + public static void setIsGeneratedFlagForSimpleName(SimpleName name, Object internalNode) throws Exception { + System.out.println("Setting isGenerated on SimpleName"); + if (internalNode instanceof org.eclipse.jdt.internal.compiler.ast.ASTNode) { + if (internalNode.getClass().getField("$generatedBy").get(internalNode) != null) { + name.getClass().getField("$isGenerated").set(name, true); + } + } + } + + public static SimpleName[] removeGeneratedSimpleNames(SimpleName[] in) throws Exception { + System.out.print("Removing is generated..."); + Field f = SimpleName.class.getField("$isGenerated"); + + int count = 0; + for (int i = 0; i < in.length; i++) { + if ( in[i] == null || !((Boolean)f.get(in[i])).booleanValue() ) count++; + } + System.out.println("" + (in.length - count)); + if (count == in.length) return in; + SimpleName[] newSimpleNames = new SimpleName[count]; + count = 0; + for (int i = 0; i < in.length; i++) { + if ( in[i] == null || !((Boolean)f.get(in[i])).booleanValue() ) newSimpleNames[count++] = in[i]; + } + return newSimpleNames; + } } |