aboutsummaryrefslogtreecommitdiff
path: root/src/core/lombok/eclipse
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/eclipse
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/eclipse')
-rw-r--r--src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java11
-rw-r--r--src/core/lombok/eclipse/handlers/HandleSetter.java4
2 files changed, 13 insertions, 2 deletions
diff --git a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java
index 010dc9d8..ddb2f198 100644
--- a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java
+++ b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java
@@ -725,6 +725,17 @@ public class EclipseHandlerUtil {
return false;
}
+ public static boolean hasNonNullAnnotations(EclipseNode node, List<Annotation> anns) {
+ if (anns == null) return false;
+ for (Annotation annotation : anns) {
+ TypeReference typeRef = annotation.type;
+ if (typeRef != null && typeRef.getTypeName() != null) {
+ for (String bn : NONNULL_ANNOTATIONS) if (typeMatches(bn, node, typeRef)) return true;
+ }
+ }
+ return false;
+ }
+
private static final Annotation[] EMPTY_ANNOTATIONS_ARRAY = new Annotation[0];
/**
diff --git a/src/core/lombok/eclipse/handlers/HandleSetter.java b/src/core/lombok/eclipse/handlers/HandleSetter.java
index 529a7d19..d70d4acd 100644
--- a/src/core/lombok/eclipse/handlers/HandleSetter.java
+++ b/src/core/lombok/eclipse/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
@@ -238,7 +238,7 @@ public class HandleSetter extends EclipseAnnotationHandler<Setter> {
Annotation[] copyableAnnotations = findCopyableAnnotations(fieldNode);
List<Statement> statements = new ArrayList<Statement>(5);
- if (!hasNonNullAnnotations(fieldNode)) {
+ if (!hasNonNullAnnotations(fieldNode) && !hasNonNullAnnotations(fieldNode, onParam)) {
statements.add(assignment);
} else {
Statement nullCheck = generateNullCheck(field, sourceNode);