aboutsummaryrefslogtreecommitdiff
path: root/src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java
diff options
context:
space:
mode:
authorRawi01 <Rawi01@users.noreply.github.com>2021-10-28 10:14:20 +0200
committerRoel Spilker <r.spilker@gmail.com>2021-12-12 02:30:37 +0100
commitff7b1fbb438dbb378f9e0f725ed5f80fa7b82f55 (patch)
treeba2c4338f4a812acedc2be63937f8986dfc96c1b /src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java
parent025a76aa66517c45a033407838750fdb43b3a870 (diff)
downloadlombok-ff7b1fbb438dbb378f9e0f725ed5f80fa7b82f55.tar.gz
lombok-ff7b1fbb438dbb378f9e0f725ed5f80fa7b82f55.tar.bz2
lombok-ff7b1fbb438dbb378f9e0f725ed5f80fa7b82f55.zip
Patch getMethodDeclarationNode method instead of individual calls
Diffstat (limited to 'src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java')
-rw-r--r--src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java b/src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java
index 06e10960..76a65e16 100644
--- a/src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java
+++ b/src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java
@@ -95,6 +95,7 @@ public class EclipsePatcher implements AgentLauncher.AgentLaunchable {
patchEclipseDebugPatches(sm);
patchJavadoc(sm);
patchASTConverterLiterals(sm);
+ patchASTNodeSearchUtil(sm);
patchPostCompileHookEcj(sm);
@@ -174,17 +175,6 @@ public class EclipsePatcher implements AgentLauncher.AgentLaunchable {
.transplant()
.build());
- /* Get real generated node instead of a random one generated by the annotation */
- sm.addScriptIfWitness(OSGI_TYPES, ScriptBuilder.replaceMethodCall()
- .target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.structure.ExtractInterfaceProcessor", "createMemberDeclarations"))
- .target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.structure.ExtractInterfaceProcessor", "createMethodComments"))
- .target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.structure.PullUpRefactoringProcessor", "createAbstractMethod"))
- .target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.structure.PullUpRefactoringProcessor", "addMethodStubForAbstractMethod"))
- .target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.structure.PullUpRefactoringProcessor", "createChangeManager"))
- .methodToReplace(new Hook("org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil", "getMethodDeclarationNode", "org.eclipse.jdt.core.dom.MethodDeclaration", "org.eclipse.jdt.core.IMethod", "org.eclipse.jdt.core.dom.CompilationUnit"))
- .replacementMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "getRealMethodDeclarationNode", "org.eclipse.jdt.core.dom.MethodDeclaration", "org.eclipse.jdt.core.IMethod", "org.eclipse.jdt.core.dom.CompilationUnit"))
- .transplant().build());
-
/* Do not add @Override's for generated methods */
sm.addScriptIfWitness(OSGI_TYPES, ScriptBuilder.exitEarly()
.target(new MethodTarget("org.eclipse.jdt.core.dom.rewrite.ListRewrite", "insertFirst"))
@@ -995,5 +985,18 @@ public class EclipsePatcher implements AgentLauncher.AgentLaunchable {
.transplant()
.build());
}
+
+ private static void patchASTNodeSearchUtil(ScriptManager sm) {
+ /*
+ * If an annotation generates more than one method the normal node search returns one of them instead of the right one.
+ * This patch method also compares method name and method parameter types to identify the right method.
+ */
+ sm.addScriptIfWitness(OSGI_TYPES, ScriptBuilder.wrapReturnValue()
+ .target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil", "getMethodDeclarationNode", "org.eclipse.jdt.core.dom.MethodDeclaration", "org.eclipse.jdt.core.IMethod", "org.eclipse.jdt.core.dom.CompilationUnit"))
+ .wrapMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "getRealMethodDeclarationNode", "org.eclipse.jdt.core.dom.MethodDeclaration", "org.eclipse.jdt.core.dom.MethodDeclaration", "org.eclipse.jdt.core.IMethod", "org.eclipse.jdt.core.dom.CompilationUnit"))
+ .request(StackRequest.RETURN_VALUE, StackRequest.PARAM1, StackRequest.PARAM2)
+ .transplant()
+ .build());
+ }
}