diff options
Diffstat (limited to 'src/core')
| -rwxr-xr-x | src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java | 6 | ||||
| -rw-r--r-- | src/core/lombok/javac/handlers/HandleEqualsAndHashCode.java | 7 | 
2 files changed, 9 insertions, 4 deletions
| diff --git a/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java b/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java index cf735dee..37379bb9 100755 --- a/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java +++ b/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java @@ -272,8 +272,10 @@ public class HandleEqualsAndHashCode extends EclipseAnnotationHandler<EqualsAndH  		method.returnType = TypeReference.baseTypeReference(TypeIds.T_int, 0);  		setGeneratedBy(method.returnType, source);  		Annotation overrideAnnotation = makeMarkerAnnotation(TypeConstants.JAVA_LANG_OVERRIDE, source); -		// TODO: maybe not add this annotation if cacheHashCode is true because we *do* modify a field -		if (getCheckerFrameworkVersion(type).generateSideEffectFree()) { +		CheckerFrameworkVersion checkerFramework = getCheckerFrameworkVersion(type); +		if (cacheHashCode && checkerFramework.generatePure()) { +			method.annotations = new Annotation[] { overrideAnnotation, generateNamedAnnotation(source, CheckerFrameworkVersion.NAME__PURE) }; +		} else if (checkerFramework.generateSideEffectFree()) {  			method.annotations = new Annotation[] { overrideAnnotation, generateNamedAnnotation(source, CheckerFrameworkVersion.NAME__SIDE_EFFECT_FREE) };  		} else {  			method.annotations = new Annotation[] { overrideAnnotation }; diff --git a/src/core/lombok/javac/handlers/HandleEqualsAndHashCode.java b/src/core/lombok/javac/handlers/HandleEqualsAndHashCode.java index 5b5595b5..c2da0274 100644 --- a/src/core/lombok/javac/handlers/HandleEqualsAndHashCode.java +++ b/src/core/lombok/javac/handlers/HandleEqualsAndHashCode.java @@ -234,8 +234,11 @@ public class HandleEqualsAndHashCode extends JavacAnnotationHandler<EqualsAndHas  		JCAnnotation overrideAnnotation = maker.Annotation(genJavaLangTypeRef(typeNode, "Override"), List.<JCExpression>nil());  		List<JCAnnotation> annsOnMethod = List.of(overrideAnnotation);  		CheckerFrameworkVersion checkerFramework = getCheckerFrameworkVersion(typeNode); -		// TODO: maybe not add this annotation if cacheHashCode is true because we *do* modify a field -		if (checkerFramework.generateSideEffectFree()) annsOnMethod = annsOnMethod.prepend(maker.Annotation(genTypeRef(typeNode, CheckerFrameworkVersion.NAME__SIDE_EFFECT_FREE), List.<JCExpression>nil())); +		if (cacheHashCode && checkerFramework.generatePure()) { +			annsOnMethod = annsOnMethod.prepend(maker.Annotation(genTypeRef(typeNode, CheckerFrameworkVersion.NAME__PURE), List.<JCExpression>nil())); +		} else if (checkerFramework.generateSideEffectFree()) {  +			annsOnMethod = annsOnMethod.prepend(maker.Annotation(genTypeRef(typeNode, CheckerFrameworkVersion.NAME__SIDE_EFFECT_FREE), List.<JCExpression>nil())); +		}  		JCModifiers mods = maker.Modifiers(Flags.PUBLIC, annsOnMethod);  		JCExpression returnType = maker.TypeIdent(CTC_INT);  		ListBuffer<JCStatement> statements = new ListBuffer<JCStatement>(); | 
