Never mark enums as abstract

Using enum constant members as a heuristic for abstract enums was
broken, because of cases like:

public enum E {
  ONE {
    public void f() {}
  }
}

javac drops the inaccessible member f() and doesn't generate an instance
class for ONE, so E doesn't need to be abstract.

Assuming all enums are final is safe, because nothing outside the
compilation unit can extend abstract enums anyways, and refactoring an
existing enum to implement methods in the container class instead of the
constants is not a breaking change.

MOE_MIGRATED_REVID=138207374
10 files changed
tree: 99948371c8612ef0b5e423e17c46b5aaf5b8fa5d
  1. java/
  2. javatests/
  3. proto/
  4. .gitignore
  5. LICENSE
  6. pom.xml
  7. README.md
  8. turbine.iml
README.md

Turbine

Turbine is a header compiler for Java.