Skip to content

Commit 4ae2db7

Browse files
authored
Merge pull request #3889 from Rawi01/extensionmethod-name-check
Check extension method name before resolving types
2 parents 7eee00a + 3392bb9 commit 4ae2db7

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

src/core/lombok/javac/handlers/HandleExtensionMethod.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2012-2021 The Project Lombok Authors.
2+
* Copyright (C) 2012-2025 The Project Lombok Authors.
33
*
44
* Permission is hereby granted, free of charge, to any person obtaining a copy
55
* of this software and associated documentation files (the "Software"), to deal
@@ -27,8 +27,10 @@
2727
import static lombok.javac.handlers.JavacResolver.*;
2828

2929
import java.util.ArrayList;
30+
import java.util.HashSet;
3031
import java.util.List;
3132
import java.util.Map;
33+
import java.util.Set;
3234

3335
import javax.lang.model.element.ElementKind;
3436

@@ -139,11 +141,18 @@ private static class ExtensionMethodReplaceVisitor extends TreeScanner<Void, Voi
139141
final JavacNode annotationNode;
140142
final List<Extension> extensions;
141143
final boolean suppressBaseMethods;
144+
final Set<String> names = new HashSet<String>();
142145

143146
public ExtensionMethodReplaceVisitor(JavacNode annotationNode, List<Extension> extensions, boolean suppressBaseMethods) {
144147
this.annotationNode = annotationNode;
145148
this.extensions = extensions;
146149
this.suppressBaseMethods = suppressBaseMethods;
150+
151+
for (Extension extension : extensions) {
152+
for (MethodSymbol methodSymbol : extension.extensionMethods) {
153+
names.add(methodSymbol.name.toString());
154+
}
155+
}
147156
}
148157

149158
public void replace() {
@@ -173,6 +182,7 @@ private void handleMethodCall(final JCMethodInvocation methodCall) {
173182
JCExpression receiver = receiverOf(methodCall);
174183
String methodName = methodNameOf(methodCall);
175184

185+
if (!names.contains(methodName)) return;
176186
if ("this".equals(receiver.toString()) || "this".equals(methodName) || "super".equals(methodName)) return;
177187
Map<JCTree, JCTree> resolution = new JavacResolution(methodCallNode.getContext()).resolveMethodMember(methodCallNode);
178188

0 commit comments

Comments
 (0)