aboutsummaryrefslogtreecommitdiff
path: root/src/core/lombok/eclipse/handlers/HandleWith.java
diff options
context:
space:
mode:
authorReinier Zwitserloot <r.zwitserloot@projectlombok.org>2022-02-08 06:02:05 +0100
committerReinier Zwitserloot <r.zwitserloot@projectlombok.org>2022-02-08 06:02:05 +0100
commit261758b4448b3d48ff2f48926ffcb8ea66121603 (patch)
tree1996f090ab62b3626fe875406a294e724ad94a12 /src/core/lombok/eclipse/handlers/HandleWith.java
parent8a914b1bf0eaa13178e719431add47b78d4e7277 (diff)
downloadlombok-261758b4448b3d48ff2f48926ffcb8ea66121603.tar.gz
lombok-261758b4448b3d48ff2f48926ffcb8ea66121603.tar.bz2
lombok-261758b4448b3d48ff2f48926ffcb8ea66121603.zip
[implements #1456] accessors can now be made final via `@Accessors`.
Diffstat (limited to 'src/core/lombok/eclipse/handlers/HandleWith.java')
-rw-r--r--src/core/lombok/eclipse/handlers/HandleWith.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/core/lombok/eclipse/handlers/HandleWith.java b/src/core/lombok/eclipse/handlers/HandleWith.java
index bfad682b..153f0c4a 100644
--- a/src/core/lombok/eclipse/handlers/HandleWith.java
+++ b/src/core/lombok/eclipse/handlers/HandleWith.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012-2021 The Project Lombok Authors.
+ * Copyright (C) 2012-2022 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
@@ -38,6 +38,7 @@ import lombok.core.configuration.CheckerFrameworkVersion;
import lombok.core.AnnotationValues;
import lombok.eclipse.EclipseAnnotationHandler;
import lombok.eclipse.EclipseNode;
+import lombok.experimental.Accessors;
import lombok.spi.Provides;
import org.eclipse.jdt.internal.compiler.ast.ASTNode;
@@ -169,7 +170,8 @@ public class HandleWith extends EclipseAnnotationHandler<With> {
FieldDeclaration field = (FieldDeclaration) fieldNode.get();
TypeReference fieldType = copyType(field.type, source);
boolean isBoolean = isBoolean(fieldType);
- String withName = toWithName(fieldNode, isBoolean);
+ AnnotationValues<Accessors> accessors = getAccessorsForField(fieldNode);
+ String withName = toWithName(fieldNode, isBoolean, accessors);
if (withName == null) {
fieldNode.addWarning("Not generating a with method for this field: It does not fit your @Accessors prefix list.");
@@ -191,7 +193,7 @@ public class HandleWith extends EclipseAnnotationHandler<With> {
return;
}
- for (String altName : toAllWithNames(fieldNode, isBoolean)) {
+ for (String altName : toAllWithNames(fieldNode, isBoolean, accessors)) {
switch (methodExists(altName, fieldNode, false, 1)) {
case EXISTS_BY_LOMBOK:
return;
@@ -222,7 +224,9 @@ public class HandleWith extends EclipseAnnotationHandler<With> {
int pS = source.sourceStart, pE = source.sourceEnd;
long p = (long) pS << 32 | pE;
MethodDeclaration method = new MethodDeclaration(parent.compilationResult);
- if (makeAbstract) modifier = modifier | ClassFileConstants.AccAbstract | ExtraCompilerModifiers.AccSemicolonBody;
+ AnnotationValues<Accessors> accessors = getAccessorsForField(fieldNode);
+ if (makeAbstract) modifier |= ClassFileConstants.AccAbstract | ExtraCompilerModifiers.AccSemicolonBody;
+ if (shouldMakeFinal(fieldNode, accessors)) modifier |= ClassFileConstants.AccFinal;
method.modifiers = modifier;
method.returnType = cloneSelfType(fieldNode, source);
if (method.returnType == null) return null;