aboutsummaryrefslogtreecommitdiff
path: root/src/core/lombok/javac
diff options
context:
space:
mode:
authorReinier Zwitserloot <r.zwitserloot@projectlombok.org>2019-05-06 22:48:11 +0200
committerReinier Zwitserloot <r.zwitserloot@projectlombok.org>2019-05-06 22:48:11 +0200
commite69a991fcb141fb24de8afb433c753d35821b1c3 (patch)
treee396b9e38e86fa7a08568d8c59d75b29803dbd0e /src/core/lombok/javac
parentd41e804fe73faed5f8b90f4b472728bc3a0c85b7 (diff)
downloadlombok-e69a991fcb141fb24de8afb433c753d35821b1c3.tar.gz
lombok-e69a991fcb141fb24de8afb433c753d35821b1c3.tar.bz2
lombok-e69a991fcb141fb24de8afb433c753d35821b1c3.zip
[fixes #2120] ecj was not generating explicit nullchecks for builder-setters.
Diffstat (limited to 'src/core/lombok/javac')
-rw-r--r--src/core/lombok/javac/handlers/HandleSetter.java4
-rw-r--r--src/core/lombok/javac/handlers/JavacHandlerUtil.java9
2 files changed, 11 insertions, 2 deletions
diff --git a/src/core/lombok/javac/handlers/HandleSetter.java b/src/core/lombok/javac/handlers/HandleSetter.java
index 28f5318d..c661ab89 100644
--- a/src/core/lombok/javac/handlers/HandleSetter.java
+++ b/src/core/lombok/javac/handlers/HandleSetter.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009-2017 The Project Lombok Authors.
+ * Copyright (C) 2009-2019 The Project Lombok Authors.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -234,7 +234,7 @@ public class HandleSetter extends JavacAnnotationHandler<Setter> {
long flags = JavacHandlerUtil.addFinalIfNeeded(Flags.PARAMETER, field.getContext());
JCVariableDecl param = treeMaker.VarDef(treeMaker.Modifiers(flags, annsOnParam), fieldDecl.name, fieldDecl.vartype, null);
- if (!hasNonNullAnnotations(field)) {
+ if (!hasNonNullAnnotations(field) && !hasNonNullAnnotations(field, onParam)) {
statements.append(treeMaker.Exec(assign));
} else {
JCStatement nullCheck = generateNullCheck(treeMaker, field, source);
diff --git a/src/core/lombok/javac/handlers/JavacHandlerUtil.java b/src/core/lombok/javac/handlers/JavacHandlerUtil.java
index 509a7397..e923c5c0 100644
--- a/src/core/lombok/javac/handlers/JavacHandlerUtil.java
+++ b/src/core/lombok/javac/handlers/JavacHandlerUtil.java
@@ -1418,6 +1418,15 @@ public class JavacHandlerUtil {
return false;
}
+ public static boolean hasNonNullAnnotations(JavacNode node, List<JCAnnotation> anns) {
+ if (anns == null) return false;
+ for (JCAnnotation ann : anns) {
+ for (String nn : NONNULL_ANNOTATIONS) if (typeMatches(nn, node, ann)) return true;
+ }
+
+ return false;
+ }
+
/**
* Searches the given field node for annotations and returns each one that is 'copyable' (either via configuration or from the base list).
*/