Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Scan actual field modifiers and the field's declaring class
Browse files Browse the repository at this point in the history
and don't mark enum fields as abstract
SirYwell committed Sep 14, 2021
1 parent c3b3b6a commit 3136d56
Showing 1 changed file with 2 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -310,7 +310,7 @@ public void visitField(Field field) {
public void visitEnumValue(Field field) {
final CtEnumValue<Object> ctEnumValue = factory.Core().createEnumValue();
ctEnumValue.setSimpleName(field.getName());
setModifier(ctEnumValue, field.getDeclaringClass().getModifiers(), field.getDeclaringClass().getDeclaringClass());
setModifier(ctEnumValue, field.getModifiers(), field.getDeclaringClass());

enter(new VariableRuntimeBuilderContext(ctEnumValue));
super.visitEnumValue(field);
@@ -497,7 +497,7 @@ public <T> void visitTypeReference(CtRole role, Class<T> clazz) {
private void setModifier(CtModifiable ctModifiable, int modifiers, Class<?> declaringClass) {
// an interface is implicitly abstract
if (Modifier.isAbstract(modifiers) && !(ctModifiable instanceof CtInterface)) {
if (ctModifiable instanceof CtEnum) {
if (ctModifiable instanceof CtEnum || ctModifiable instanceof CtEnumValue) {
//enum must not be declared abstract (even if it can be made abstract see CtStatementImpl.InsertType)
//as stated in java lang spec https://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9
} else if (isInterface(declaringClass)) {

0 comments on commit 3136d56

Please sign in to comment.