RFR: 8029633: Raw inner class constructor ref should not perform diamond inference [v3]
Vicente Romero
vromero at openjdk.org
Tue Oct 18 19:17:18 UTC 2022
> This PR is synchronizing the compiler with the spec, in particular with this portion of section `15.13.1 Compile-Time Declaration of a Method Reference`:
>
>
> – If the method reference expression has the form ClassType ::
> [TypeArguments] new , then the potentially applicable methods are a set of
> notional methods corresponding to the constructors of ClassType.
> If ClassType is a raw type, but is not a non- static member type of a raw type,
> the candidate notional member methods are those specified in §15.9.3 for a
> class instance creation expression that uses <> to elide the type arguments to a
> class. Otherwise, the candidate notional member methods are the constructors
> of ClassType, treated as if they were methods with return type ClassType.
>
> so javac should treat the code below as a raw constructor invocation:
>
>
> class Outer<T> {
> class Inner<U> {}
>
> Supplier<Outer<T>.Inner<String>> s = Outer.Inner::new;
> }
>
> currently javac is rejecting this code
>
> TIA
>
> PS. Please review the related CSR too
Vicente Romero has updated the pull request incrementally with one additional commit since the last revision:
addressing review comments
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/9784/files
- new: https://git.openjdk.org/jdk/pull/9784/files/d8867430..80b90ac6
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=9784&range=02
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=9784&range=01-02
Stats: 8 lines in 2 files changed: 7 ins; 0 del; 1 mod
Patch: https://git.openjdk.org/jdk/pull/9784.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/9784/head:pull/9784
PR: https://git.openjdk.org/jdk/pull/9784
More information about the compiler-dev
mailing list