Skip to content

Commit

Permalink
[fixes projectlombok#3134] Search patched method also by parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
Rawi01 committed Mar 13, 2022
1 parent 8c3ff7e commit 017df4c
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java
Expand Up @@ -332,12 +332,18 @@ private static void patchPostCompileHookEcj(ScriptManager sm) {

private static void patchHideGeneratedNodes(ScriptManager sm) {
sm.addScriptIfWitness(OSGI_TYPES, ScriptBuilder.wrapReturnValue()
.target(new MethodTarget("org.eclipse.jdt.internal.corext.dom.LinkedNodeFinder", "findByNode"))
.target(new MethodTarget("org.eclipse.jdt.internal.corext.dom.LinkedNodeFinder", "findByNode", "org.eclipse.jdt.core.dom.SimpleName[]", "org.eclipse.jdt.core.dom.ASTNode", "org.eclipse.jdt.core.dom.SimpleName"))
.target(new MethodTarget("org.eclipse.jdt.internal.corext.dom.LinkedNodeFinder", "findByBinding"))
.wrapMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "removeGeneratedSimpleNames", "org.eclipse.jdt.core.dom.SimpleName[]",
"org.eclipse.jdt.core.dom.SimpleName[]"))
.request(StackRequest.RETURN_VALUE).build());

sm.addScriptIfWitness(OSGI_TYPES, ScriptBuilder.wrapReturnValue()
.target(new MethodTarget("org.eclipse.jdt.internal.corext.dom.LinkedNodeFinder", "findByNode", "org.eclipse.jdt.core.dom.Name[]", "org.eclipse.jdt.core.dom.ASTNode", "org.eclipse.jdt.core.dom.Name"))
.wrapMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "removeGeneratedNames", "org.eclipse.jdt.core.dom.Name[]",
"org.eclipse.jdt.core.dom.Name[]"))
.request(StackRequest.RETURN_VALUE).build());

sm.addScriptIfWitness(OSGI_TYPES, ScriptBuilder.exitEarly()
.target(new MethodTarget("org.eclipse.jdt.core.dom.ASTNode", "accept", "void", "org.eclipse.jdt.core.dom.ASTVisitor"))
.decisionMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "isBlockedVisitorAndGenerated", "boolean", "org.eclipse.jdt.core.dom.ASTNode", "org.eclipse.jdt.core.dom.ASTVisitor"))
Expand Down
17 changes: 17 additions & 0 deletions src/eclipseAgent/lombok/launch/PatchFixesHider.java
Expand Up @@ -39,6 +39,7 @@
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.dom.Name;
import org.eclipse.jdt.core.dom.SimpleName;
import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
import org.eclipse.jdt.core.dom.Type;
Expand Down Expand Up @@ -780,6 +781,22 @@ public static SimpleName[] removeGeneratedSimpleNames(SimpleName[] in) throws Ex
return newSimpleNames;
}

public static Name[] removeGeneratedNames(Name[] in) throws Exception {
Field f = Name.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++;
}
if (count == in.length) return in;
Name[] newNames = new Name[count];
count = 0;
for (int i = 0; i < in.length; i++) {
if (in[i] == null || !((Boolean)f.get(in[i])).booleanValue()) newNames[count++] = in[i];
}
return newNames;
}

public static Annotation[] convertAnnotations(Annotation[] out, IAnnotatable annotatable) {
IAnnotation[] in;

Expand Down

0 comments on commit 017df4c

Please sign in to comment.