fix: Remove super calls from implicit enum constructors #4769
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The context
This aims to fix #4758 by removing the super call from implicit enum constructors.
The problem
For some reason JDT inserts a
super()
call in implicit enum constructors. This is likely because the model spoon transforms is not low-level enough and traversed before JDT converts it into aString, int
constructor. Explicit super calls are forbidden as java.lang.Enum subclasses are permitted to delegate to the Enum constructor in whatever way they like.The constructor is implicit so this isn't technically illegal, but it doesn't really make much sense as explicit constructors can never contain such a call. Additionally, the Enum class from the standard library has a "String, int" constructor, rendering the parameterless supercall semantically invalid.
The proposed fix
We just remove the call to make it a bit more consistent.