RFR: 8278078: cannot reference super before supertype constructor has been called

Adam Sotona asotona at openjdk.java.net
Wed Dec 1 16:42:42 UTC 2021


Pull request #4376 (with fix of 8261006: 'super' qualified method references cannot occur in a static context) regressed compilation of all inner classes using <enclosing class>.super pattern in their constructor argument to fail with: 
 error: cannot reference super before supertype constructor has been called 

For example following source fragment cannot be compiled since that: 

    class EnclClass { 
        class InnerClass extends Exception { 
            InnerClass() { 
                super(EnclClass.super.toString()); 
            } 
        } 
    } 


This patch keeps throwing "cannot reference super" error for calls of <interface>.super and permits calls of <enclosing class>.super

Plus it adds a new test.

Thanks,
Adam

-------------

Commit messages:
 - 8278078: cannot reference super before supertype constructor has been called

Changes: https://git.openjdk.java.net/jdk/pull/6642/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=6642&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8278078
  Stats: 14 lines in 2 files changed: 13 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/6642.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/6642/head:pull/6642

PR: https://git.openjdk.java.net/jdk/pull/6642


More information about the compiler-dev mailing list