mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-14 00:16:47 +00:00
Generate Pure annotation for cached hashCode
This commit is contained in:
1 parent
c91a7dc8ca
commit
32db0ef710
2 files changed
+9
-4
No files matched your search
@@ -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 };
|
||||
|
||||
@@ -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>();
|
||||
|
||||
Reference in new issue
Block a user