-
Type:
Bug
-
Resolution: Fixed
-
Priority:
P4
-
Affects Version/s: 25, 26
-
Component/s: tools
-
b24
Given the following test case:
```
import java.util.function.Supplier;
interface Main {
interface X<T> {
X<T> self();
}
static X<?> makeX() {return null;}
static <R> X<R> create(Supplier<? extends R> supplier) {return null;}
static X<X<?>> methodRef() {
return create(Main::makeX).self();
}
static X<X<?>> lambda() {
return create(() -> makeX()).self();
}
}
```
javac reports an error for the lambda, but not for the method reference. There should be no difference here (error in both cases)
reported by Tagir at: https://mail.openjdk.org/pipermail/compiler-dev/2025-October/031680.html
```
import java.util.function.Supplier;
interface Main {
interface X<T> {
X<T> self();
}
static X<?> makeX() {return null;}
static <R> X<R> create(Supplier<? extends R> supplier) {return null;}
static X<X<?>> methodRef() {
return create(Main::makeX).self();
}
static X<X<?>> lambda() {
return create(() -> makeX()).self();
}
}
```
javac reports an error for the lambda, but not for the method reference. There should be no difference here (error in both cases)
reported by Tagir at: https://mail.openjdk.org/pipermail/compiler-dev/2025-October/031680.html
- causes
-
JDK-8372023 Javac JMH failures
-
- Resolved
-
- csr for
-
JDK-8369518 Compilation mismatch for equivalent lambda and method reference
-
- Closed
-
- duplicates
-
JDK-8369565 Missing capture conversion for method reference return type
-
- Closed
-
- relates to
-
JDK-8372277 Fix for JDK-8369517 is applied starting from source 24 instead of 26
-
- Resolved
-
- links to
-
Commit(master)
openjdk/jdk/e5a272a5
-
Review(master)
openjdk/jdk/27737
(1 links to)