RFR: 8261006: 'super' qualified method references cannot occur in a static context [v5]
Srikanth Adayapalam
sadayapalam at openjdk.java.net
Tue Jun 29 03:46:02 UTC 2021
On Mon, 28 Jun 2021 18:11:08 GMT, Vicente Romero <vromero at openjdk.org> wrote:
>> Please review this PR, currently javac is accepting code like:
>>
>>
>> import java.util.function.Supplier;
>>
>> public class MethodReferenceInConstructorInvocation {
>> interface Bar {
>> default String getString() { return ""; }
>> }
>>
>> static class Foo implements Bar {
>> public Foo() { this(Bar.super::getString); }
>> public Foo(Supplier<String> sString) {}
>> }
>> }
>>
>>
>> but the spec states in `15.13 Method Reference Expressions`:
>>
>> If a method reference expression has the form super :: [TypeArguments] Identifier
>> or TypeName . super :: [TypeArguments] Identifier, it is a compile-time error if
>> the expression occurs in a static context (§8.1.3).
>>
>> and a constructor invocation is a static context. So method references of this form, qualified by `super`, should be rejected by the compiler if they appear in a static context.
>>
>> TIA
>
> Vicente Romero has updated the pull request incrementally with one additional commit since the last revision:
>
> addressing review comments
I glanced through the latest changes and they look good and incorporate all review comments.
+1
-------------
PR: https://git.openjdk.java.net/jdk/pull/4376
More information about the compiler-dev
mailing list