mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-14 22:17:41 +00:00
more work on JDK8 support: val on generified lub types now works a little better.
This commit is contained in:
1 parent
5c3adb7737
commit
d330649b15
2 files changed
+26
-3
No files matched your search
@@ -21,11 +21,28 @@
|
||||
*/
|
||||
package lombok.javac;
|
||||
|
||||
import com.sun.tools.javac.main.OptionName;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import lombok.Lombok;
|
||||
|
||||
import com.sun.tools.javac.util.Context;
|
||||
import com.sun.tools.javac.util.Options;
|
||||
|
||||
public class Javac6BasedLombokOptions extends LombokOptions {
|
||||
private static final Method optionName_valueOf;
|
||||
private static final Method options_put;
|
||||
|
||||
static {
|
||||
try {
|
||||
Class<?> optionNameClass = Class.forName("com.sun.tools.javac.main.OptionName");
|
||||
optionName_valueOf = optionNameClass.getMethod("valueOf", String.class);
|
||||
options_put = Class.forName("com.sun.tools.javac.util.Options").getMethod("put", optionNameClass, String.class);
|
||||
} catch (Exception e) {
|
||||
throw new IllegalArgumentException("Can't initialize Javac6-based lombok options due to reflection issue.", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static Javac6BasedLombokOptions replaceWithDelombokOptions(Context context) {
|
||||
Options options = Options.instance(context);
|
||||
context.put(optionsKey, (Options)null);
|
||||
@@ -39,6 +56,12 @@ public class Javac6BasedLombokOptions extends LombokOptions {
|
||||
}
|
||||
|
||||
@Override public void putJavacOption(String optionName, String value) {
|
||||
put(OptionName.valueOf(optionName), value);
|
||||
try {
|
||||
options_put.invoke(this, optionName_valueOf.invoke(null, optionName), value);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new IllegalArgumentException("Can't initialize Javac6-based lombok options due to reflection issue.", e);
|
||||
} catch (InvocationTargetException e) {
|
||||
throw Lombok.sneakyThrow(e.getCause());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -91,7 +91,7 @@ public class HandleVal extends JavacASTAdapter {
|
||||
local.mods.annotations = local.mods.annotations == null ? List.of(valAnnotation) : local.mods.annotations.append(valAnnotation);
|
||||
}
|
||||
|
||||
local.vartype = JavacResolution.createJavaLangObject(localNode.getAst());
|
||||
local.vartype = localNode.getAst().getTreeMaker().Ident(localNode.getAst().toName("___Lombok_VAL_Attrib__"));
|
||||
|
||||
Type type;
|
||||
try {
|
||||
|
||||
Reference in new issue
Block a user