RFR: 8261006: 'super' qualified method references cannot occur in a static context
Vicente Romero
vromero at openjdk.java.net
Sun Jun 6 02:37:46 UTC 2021
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
-------------
Commit messages:
- 8261006: fail to parse broken interface::method in lambda
Changes: https://git.openjdk.java.net/jdk/pull/4376/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=4376&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8261006
Stats: 78 lines in 5 files changed: 78 ins; 0 del; 0 mod
Patch: https://git.openjdk.java.net/jdk/pull/4376.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/4376/head:pull/4376
PR: https://git.openjdk.java.net/jdk/pull/4376
More information about the compiler-dev
mailing list