aboutsummaryrefslogtreecommitdiff
path: root/src/eclipseAgent/lombok/eclipse
diff options
context:
space:
mode:
authorReinier Zwitserloot <r.zwitserloot@projectlombok.org>2020-10-03 23:51:33 +0200
committerReinier Zwitserloot <r.zwitserloot@projectlombok.org>2020-10-03 23:51:33 +0200
commit1b534d17d39f687d42ebab733327a59c3466a949 (patch)
treed24e04a9c95b0caa0df855fb5d20b63730fc7707 /src/eclipseAgent/lombok/eclipse
parenteadd3b8ccea16d46249e6b01c4ac4b295c691abd (diff)
downloadlombok-1b534d17d39f687d42ebab733327a59c3466a949.tar.gz
lombok-1b534d17d39f687d42ebab733327a59c3466a949.tar.bz2
lombok-1b534d17d39f687d42ebab733327a59c3466a949.zip
Untangling patches to classes that only exist in eclipse, not ecj
Specifically, Rawi01's patches to make javadoc behaviour in eclipse better, which cannot be applied to ecj as you get load errors (javadoc not a thing there). As part of this commit, tests can be limited to ecj or eclipse, and I made cut-down versions of a few tests (to run on ecj, as the main one cannot be, due to javadoc issues). The tests now marked as eclipse only don't fail on ecj, but they don't generate the same result. Alternatively, we could go with a separated out after-ecj and after-eclipse dir instead, but that's perhaps going overboard.
Diffstat (limited to 'src/eclipseAgent/lombok/eclipse')
-rw-r--r--src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java11
-rw-r--r--src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java6
-rw-r--r--src/eclipseAgent/lombok/eclipse/agent/PatchJavadoc.java7
3 files changed, 14 insertions, 10 deletions
diff --git a/src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java b/src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java
index 3412000e..75263bdd 100644
--- a/src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java
+++ b/src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java
@@ -50,8 +50,7 @@ import lombok.patcher.scripts.ScriptBuilder;
*/
public class EclipsePatcher implements AgentLauncher.AgentLaunchable {
// At some point I'd like the agent to be capable of auto-detecting if its on eclipse or on ecj. This class is a sure sign we're not in ecj but in eclipse. -ReinierZ
- @SuppressWarnings("unused")
- private static final String ECLIPSE_SIGNATURE_CLASS = "org/eclipse/core/runtime/adaptor/EclipseStarter";
+ private static final String ECLIPSE_SIGNATURE_CLASS = "org.eclipse.core.runtime.adaptor.EclipseStarter";
@Override public void runAgent(String agentArgs, Instrumentation instrumentation, boolean injected, Class<?> launchingContext) throws Exception {
String[] args = agentArgs == null ? new String[0] : agentArgs.split(":");
@@ -73,6 +72,12 @@ public class EclipsePatcher implements AgentLauncher.AgentLaunchable {
else if (forceEclipse) ecj = false;
else ecj = injected;
+ if (!ecj) try {
+ Class.forName(ECLIPSE_SIGNATURE_CLASS);
+ } catch (ClassNotFoundException e) {
+ ecj = true;
+ }
+
registerPatchScripts(instrumentation, injected, ecj, launchingContext);
}
@@ -117,6 +122,7 @@ public class EclipsePatcher implements AgentLauncher.AgentLaunchable {
patchExtractInterface(sm);
patchAboutDialog(sm);
patchEclipseDebugPatches(sm);
+ patchJavadoc(sm);
} else {
patchPostCompileHookEcj(sm);
}
@@ -127,7 +133,6 @@ public class EclipsePatcher implements AgentLauncher.AgentLaunchable {
patchExtensionMethod(sm, ecjOnly);
patchRenameField(sm);
patchNullCheck(sm);
- patchJavadoc(sm);
if (reloadExistingClasses) sm.reloadClasses(instrumentation);
}
diff --git a/src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java b/src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java
index e92ed674..b90d5762 100644
--- a/src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java
+++ b/src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java
@@ -22,7 +22,7 @@
package lombok.eclipse.agent;
import static lombok.eclipse.Eclipse.*;
-import static lombok.eclipse.EclipseAugments.*;
+import static lombok.eclipse.EcjAugments.*;
import static lombok.eclipse.handlers.EclipseHandlerUtil.*;
import java.lang.reflect.Method;
@@ -724,7 +724,7 @@ public class PatchDelegate {
private static void cleanupDelegateMethods(CompilationUnitDeclaration cud) {
CompilationUnit compilationUnit = getCompilationUnit(cud);
if (compilationUnit != null) {
- CompilationUnit_delegateMethods.clear(compilationUnit);
+ EclipseAugments.CompilationUnit_delegateMethods.clear(compilationUnit);
}
}
@@ -819,7 +819,7 @@ public class PatchDelegate {
if (sourceType != null) {
CompilationUnit compilationUnit = getCompilationUnit(sourceType.getCompilationUnit());
if (compilationUnit != null) {
- ConcurrentMap<String, List<SourceMethod>> map = CompilationUnit_delegateMethods.setIfAbsent(compilationUnit, new ConcurrentHashMap<String, List<SourceMethod>>());
+ ConcurrentMap<String, List<SourceMethod>> map = EclipseAugments.CompilationUnit_delegateMethods.setIfAbsent(compilationUnit, new ConcurrentHashMap<String, List<SourceMethod>>());
List<SourceMethod> newList = new ArrayList<SourceMethod>();
List<SourceMethod> oldList = map.putIfAbsent(sourceType.getTypeQualifiedName(), newList);
return oldList != null ? oldList : newList;
diff --git a/src/eclipseAgent/lombok/eclipse/agent/PatchJavadoc.java b/src/eclipseAgent/lombok/eclipse/agent/PatchJavadoc.java
index a91e4d8b..19a0383a 100644
--- a/src/eclipseAgent/lombok/eclipse/agent/PatchJavadoc.java
+++ b/src/eclipseAgent/lombok/eclipse/agent/PatchJavadoc.java
@@ -21,7 +21,7 @@
*/
package lombok.eclipse.agent;
-import static lombok.eclipse.EclipseAugments.CompilationUnit_javadoc;
+import static lombok.eclipse.EcjAugments.EclipseAugments.CompilationUnit_javadoc;
import java.lang.reflect.Method;
import java.util.Map;
@@ -36,7 +36,6 @@ import org.eclipse.jdt.internal.core.CompilationUnit;
import org.eclipse.jdt.internal.core.SourceMethod;
import org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2;
-import lombok.eclipse.EclipseAugments;
import lombok.eclipse.handlers.EclipseHandlerUtil;
import lombok.permit.Permit;
@@ -52,7 +51,7 @@ public class PatchJavadoc {
ICompilationUnit iCompilationUnit = sourceMethod.getCompilationUnit();
if (iCompilationUnit instanceof CompilationUnit) {
CompilationUnit compilationUnit = (CompilationUnit) iCompilationUnit;
- Map<String, String> docs = EclipseAugments.CompilationUnit_javadoc.get(compilationUnit);
+ Map<String, String> docs = CompilationUnit_javadoc.get(compilationUnit);
String signature = getSignature(sourceMethod);
String rawJavadoc = docs.get(signature);
@@ -80,7 +79,7 @@ public class PatchJavadoc {
}
return methodDeclaration.print(tab, output);
}
-
+
private static String getSignature(SourceMethod sourceMethod) {
StringBuilder sb = new StringBuilder();
sb.append(sourceMethod.getParent().getElementName());