Add jep513 module: flexible constructor bodies on JDK 25 and 27

Runnable sources, broken examples and captured transcripts for the ankurm.com JEP 513 article, including the JDK 25 vs 27 compiler wording differences.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TF9JWFvJSNm6HVzswzZU5a
This commit is contained in:
Claude
2026-09-24 10:42:36 +00:00
parent e0cb6e83e2
commit 2ebea58d39
30 changed files with 510 additions and 0 deletions
@@ -0,0 +1,79 @@
$ javac broken/ReadFieldBeforeSuper.java (25.0.4.1+1)
ReadFieldBeforeSuper.java:5: error: cannot reference size before supertype constructor has been called
1 error
$ javac broken/ReadFieldBeforeSuper.java (27+35)
ReadFieldBeforeSuper.java:5: error: reference to size may only appear after an explicit constructor invocation
1 error
$ javac broken/CallMethodBeforeSuper.java (25.0.4.1+1)
CallMethodBeforeSuper.java:5: error: cannot reference compute() before supertype constructor has been called
1 error
$ javac broken/CallMethodBeforeSuper.java (27+35)
CallMethodBeforeSuper.java:5: error: reference to compute() may only appear after an explicit constructor invocation
1 error
$ javac broken/PassThisBeforeSuper.java (25.0.4.1+1)
PassThisBeforeSuper.java:4: error: cannot reference this before supertype constructor has been called
1 error
$ javac broken/PassThisBeforeSuper.java (27+35)
PassThisBeforeSuper.java:4: error: reference to this may only appear after an explicit constructor invocation
1 error
$ javac broken/ReadFinalBeforeAssign.java (25.0.4.1+1)
ReadFinalBeforeAssign.java:5: error: cannot reference this before supertype constructor has been called
1 error
$ javac broken/ReadFinalBeforeAssign.java (27+35)
ReadFinalBeforeAssign.java:5: error: reference to this may only appear after an explicit constructor invocation
1 error
$ javac broken/InnerOuterThis.java (25.0.4.1+1)
InnerOuterThis.java:5: error: cannot reference x before supertype constructor has been called
1 error
$ javac broken/InnerOuterThis.java (27+35)
InnerOuterThis.java:5: error: reference to x may only appear after an explicit constructor invocation
1 error
$ javac broken/NewInnerBeforeSuper.java (25.0.4.1+1)
NewInnerBeforeSuper.java:5: error: cannot reference this before supertype constructor has been called
1 error
$ javac broken/NewInnerBeforeSuper.java (27+35)
NewInnerBeforeSuper.java:5: error: reference to this may only appear after an explicit constructor invocation
1 error
$ javac broken/AssignFieldWithInitializer.java (25.0.4.1+1)
AssignFieldWithInitializer.java:5: error: cannot assign initialized field 'size' before supertype constructor has been called
1 error
$ javac broken/AssignFieldWithInitializer.java (27+35)
AssignFieldWithInitializer.java:5: error: assignment to initialized field 'size' may only appear after an explicit constructor invocation
1 error
$ javac broken/AssignInheritedField.java (25.0.4.1+1)
AssignInheritedField.java:4: error: cannot reference shared before supertype constructor has been called
1 error
$ javac broken/AssignInheritedField.java (27+35)
AssignInheritedField.java:4: error: reference to shared may only appear after an explicit constructor invocation
1 error
$ javac broken/ReturnBeforeSuper.java (25.0.4.1+1)
ReturnBeforeSuper.java:4: error: 'return' not allowed before explicit constructor invocation
1 error
$ javac broken/ReturnBeforeSuper.java (27+35)
ReturnBeforeSuper.java:4: error: 'return' not allowed before explicit constructor invocation
1 error
$ javac broken/SuperInBranch.java (25.0.4.1+1)
SuperInBranch.java:4: error: explicit constructor invocation not allowed here
SuperInBranch.java:4: error: explicit constructor invocation not allowed here
2 errors
$ javac broken/SuperInBranch.java (27+35)
SuperInBranch.java:4: error: explicit constructor invocation not allowed here
SuperInBranch.java:4: error: explicit constructor invocation not allowed here
2 errors
$ javac broken/TwoSuperCalls.java (25.0.4.1+1)
TwoSuperCalls.java:5: error: redundant explicit constructor invocation
1 error
$ javac broken/TwoSuperCalls.java (27+35)
TwoSuperCalls.java:5: error: redundant explicit constructor invocation
1 error