mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-15 10:15:19 +00:00
fix javac modifiers in src/core/lombok/javac/handlers/HandleFieldConstants.java
This commit is contained in:
1 parent
acc2464d66
commit
deac7023f7
1 file changed
+19
-3
@@ -86,7 +86,7 @@ import com.sun.tools.javac.util.List;
|
||||
break;
|
||||
case TYPE:
|
||||
if (!onMethod.isEmpty()) {
|
||||
annotationNode.addError("'onMethod' is not supported for @FieldConstants on a type.");
|
||||
annotationNode.addError("'onMethod' is not supported for @FieldNameConstants on a type.");
|
||||
}
|
||||
generateFieldDefaultsForType(node, annotationNode, level, false);
|
||||
break;
|
||||
@@ -105,18 +105,34 @@ import com.sun.tools.javac.util.List;
|
||||
return;
|
||||
}
|
||||
JCVariableDecl field = (JCVariableDecl) fieldNode.get();
|
||||
String constantName = lombok.eclipse.handlers.HandleFieldNameConstants.camelCaseToConstant(field.name.toString());
|
||||
String constantName = camelCaseToConstant(field.name.toString());
|
||||
if (constantName == null) {
|
||||
source.addWarning("Not generating constant for this field: It does not fit in your @Accessors prefix list");
|
||||
return;
|
||||
}
|
||||
|
||||
JavacTreeMaker treeMaker = fieldNode.getTreeMaker();
|
||||
JCModifiers modifiers = treeMaker.Modifiers(toJavacModifier(level) & Modifier.STATIC & Modifier.FINAL);
|
||||
JCModifiers modifiers = treeMaker.Modifiers(toJavacModifier(level) | Modifier.STATIC | Modifier.FINAL);
|
||||
JCExpression returnType = chainDots(fieldNode, "java", "lang", "String");
|
||||
JCExpression init = treeMaker.Literal(fieldNode.getName());
|
||||
JCVariableDecl fieldConstant = treeMaker.VarDef(modifiers, fieldNode.toName(constantName), returnType, init);
|
||||
injectField(fieldNode.up(), fieldConstant);
|
||||
}
|
||||
|
||||
public static String camelCaseToConstant(final String fieldName) {
|
||||
if (fieldName == null || fieldName.isEmpty()) return "";
|
||||
char[] chars = fieldName.toCharArray();
|
||||
StringBuilder b = new StringBuilder();
|
||||
b.append(Character.toUpperCase(chars[0]));
|
||||
for (int i = 1, iend = chars.length; i < iend; i++) {
|
||||
char c = chars[i];
|
||||
if (Character.isUpperCase(c)) {
|
||||
b.append('_');
|
||||
} else {
|
||||
c = Character.toUpperCase(c);
|
||||
}
|
||||
b.append(c);
|
||||
}
|
||||
return b.toString();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user