From 626c33255bbac12ddab72dda7de2447132f29ae4 Mon Sep 17 00:00:00 2001 From: Rawi01 Date: Sat, 19 Dec 2020 11:44:31 +0100 Subject: [tests] Support javadoc in ecj tests --- src/utils/lombok/core/FieldAugment.java | 53 +++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'src/utils') diff --git a/src/utils/lombok/core/FieldAugment.java b/src/utils/lombok/core/FieldAugment.java index 4a32ad04..0982bcb5 100644 --- a/src/utils/lombok/core/FieldAugment.java +++ b/src/utils/lombok/core/FieldAugment.java @@ -24,6 +24,7 @@ package lombok.core; import java.lang.ref.WeakReference; import java.lang.reflect.Field; import java.lang.reflect.Modifier; +import java.util.HashMap; import java.util.Map; import java.util.WeakHashMap; @@ -69,6 +70,10 @@ public abstract class FieldAugment { checkNotNull(fieldType, "fieldType"); checkNotNull(name, "name"); + if (type.isInterface()) { + return new InterfaceFieldAugment(name, fieldType); + } + @SuppressWarnings("unchecked") F defaultValue = (F) getDefaultValue(fieldType); FieldAugment ret = tryCreateReflectionAugment(type, fieldType, name, defaultValue); @@ -175,6 +180,54 @@ public abstract class FieldAugment { */ public abstract F compareAndSet(T object, F expected, F value); + private static final class InterfaceFieldAugment extends FieldAugment { + private final String name; + private final Class fieldType; + + private Map, FieldAugment> map = new HashMap, FieldAugment>(); + + private InterfaceFieldAugment(String name, Class fieldType) { + this.name = name; + this.fieldType = fieldType; + } + + private synchronized FieldAugment getDelegate(T object) { + @SuppressWarnings("unchecked") + Class c = (Class) object.getClass(); + + FieldAugment fieldAugment = map.get(c); + if (fieldAugment == null) { + fieldAugment = augment(c, fieldType, name); + map.put(c, fieldAugment); + } + return fieldAugment; + } + + @Override public F get(T object) { + return getDelegate(object).get(object); + } + + @Override public F getAndSet(T object, F value) { + return getDelegate(object).getAndSet(object, value); + } + + @Override public F clear(T object) { + return getDelegate(object).clear(object); + } + + @Override public F compareAndClear(T object, F expected) { + return getDelegate(object).compareAndClear(object, expected); + } + + @Override public F setIfAbsent(T object, F value) { + return getDelegate(object).setIfAbsent(object, value); + } + + @Override public F compareAndSet(T object, F expected, F value) { + return getDelegate(object).compareAndSet(object, expected, value); + } + } + private static class ReflectionFieldAugment extends FieldAugment { private final Object lock = new Object(); private final Field field; -- cgit From 624c8a5a52d14ba1a6b690809f9ada15f71e15f5 Mon Sep 17 00:00:00 2001 From: Rawi01 Date: Mon, 21 Dec 2020 17:07:22 +0100 Subject: [fixes #2682] Fix NPE, always add Javadoc return statement --- src/utils/lombok/javac/Javac.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src/utils') diff --git a/src/utils/lombok/javac/Javac.java b/src/utils/lombok/javac/Javac.java index cec43705..33bd7265 100644 --- a/src/utils/lombok/javac/Javac.java +++ b/src/utils/lombok/javac/Javac.java @@ -281,6 +281,7 @@ public class Javac { @SuppressWarnings("unchecked") public static void setDocComment(JCCompilationUnit cu, JCTree node, String javadoc) { + if (javadoc == null) return; Object dc = getDocComments(cu); if (dc instanceof Map) { ((Map) dc).put(node, javadoc); -- cgit