From 0b30a5695022649c0e9288b167fe15893e06887b Mon Sep 17 00:00:00 2001 From: Reinier Zwitserloot Date: Thu, 3 Sep 2009 02:25:51 +0200 Subject: Fixed a problem in AnnotationValues where 'isExplicit' always returned true. --- src/lombok/javac/Javac.java | 4 +++- src/lombok/javac/handlers/HandleEqualsAndHashCode.java | 5 +++++ src/lombok/javac/handlers/HandleToString.java | 5 +++++ 3 files changed, 13 insertions(+), 1 deletion(-) (limited to 'src/lombok/javac') diff --git a/src/lombok/javac/Javac.java b/src/lombok/javac/Javac.java index 0987d31a..60c86099 100644 --- a/src/lombok/javac/Javac.java +++ b/src/lombok/javac/Javac.java @@ -92,6 +92,7 @@ public class Javac { List raws = new ArrayList(); List guesses = new ArrayList(); final List positions = new ArrayList(); + boolean isExplicit = false; for ( JCExpression arg : arguments ) { String mName; @@ -107,6 +108,7 @@ public class Javac { } if ( !mName.equals(name) ) continue; + isExplicit = true; if ( rhs instanceof JCNewArray ) { List elems = ((JCNewArray)rhs).elems; for ( JCExpression inner : elems ) { @@ -121,7 +123,7 @@ public class Javac { } } - values.put(name, new AnnotationValue(node, raws, guesses) { + values.put(name, new AnnotationValue(node, raws, guesses, isExplicit) { @Override public void setError(String message, int valueIdx) { node.addError(message, positions.get(valueIdx)); } diff --git a/src/lombok/javac/handlers/HandleEqualsAndHashCode.java b/src/lombok/javac/handlers/HandleEqualsAndHashCode.java index 16a04da7..21966be2 100644 --- a/src/lombok/javac/handlers/HandleEqualsAndHashCode.java +++ b/src/lombok/javac/handlers/HandleEqualsAndHashCode.java @@ -84,6 +84,11 @@ public class HandleEqualsAndHashCode implements JavacAnnotationHandler { if ( !annotation.isExplicit("exclude") ) excludes = null; if ( !annotation.isExplicit("of") ) includes = null; + if ( excludes != null && includes != null ) { + excludes = null; + annotation.setWarning("exclude", "exclude and of are mutually exclusive; the 'exclude' parameter will be ignored."); + } + return generateToString(typeNode, annotationNode, excludes, includes, ann.includeFieldNames(), callSuper, true); } -- cgit