From 2f80f9eff4c3b553a6b3ccea31a18c48629d49fc Mon Sep 17 00:00:00 2001 From: Roel Spilker Date: Sat, 10 Oct 2009 02:29:40 +0200 Subject: Renaming an inner type, or a type in a linked file, still failed. Now it works. --- src_eclipseagent/lombok/eclipse/agent/EclipsePatcher.java | 7 +++++++ src_eclipseagent/lombok/eclipse/agent/PatchFixes.java | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/src_eclipseagent/lombok/eclipse/agent/EclipsePatcher.java b/src_eclipseagent/lombok/eclipse/agent/EclipsePatcher.java index 79e388f9..6efddf61 100644 --- a/src_eclipseagent/lombok/eclipse/agent/EclipsePatcher.java +++ b/src_eclipseagent/lombok/eclipse/agent/EclipsePatcher.java @@ -81,6 +81,13 @@ public class EclipsePatcher { .decisionMethod(new Hook("lombok/eclipse/agent/PatchFixes", "skipRewritingGeneratedNodes", "(Lorg/eclipse/jdt/core/dom/ASTNode;)Z")) .transplant().request(StackRequest.PARAM1).build()); + + sm.addScript(ScriptBuilder.wrapMethodCall() + .target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.rename.RenameTypeProcessor", "addConstructorRenames")) + .methodToWrap(new Hook("org/eclipse/jdt/core/IType", "getMethods", "()[Lorg/eclipse/jdt/core/IMethod;")) + .wrapMethod(new Hook("lombok/eclipse/agent/PatchFixes", "removeGeneratedMethods", + "([Lorg/eclipse/jdt/core/IMethod;)[Lorg/eclipse/jdt/core/IMethod;")) + .transplant().build()); } private static void patchCatchReparse(ScriptManager sm) { diff --git a/src_eclipseagent/lombok/eclipse/agent/PatchFixes.java b/src_eclipseagent/lombok/eclipse/agent/PatchFixes.java index c8459a5f..e0d21f90 100644 --- a/src_eclipseagent/lombok/eclipse/agent/PatchFixes.java +++ b/src_eclipseagent/lombok/eclipse/agent/PatchFixes.java @@ -1,7 +1,10 @@ package lombok.eclipse.agent; import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; +import org.eclipse.jdt.core.IMethod; import org.eclipse.jdt.core.dom.SimpleName; public class PatchFixes { @@ -34,6 +37,14 @@ public class PatchFixes { } } + public static IMethod[] removeGeneratedMethods(IMethod[] methods) throws Exception { + List result = new ArrayList(); + for (IMethod m : methods) { + if (m.getNameRange().getLength() > 0) result.add(m); + } + return result.size() == methods.length ? methods : result.toArray(new IMethod[0]); + } + public static SimpleName[] removeGeneratedSimpleNames(SimpleName[] in) throws Exception { Field f = SimpleName.class.getField("$isGenerated"); -- cgit