java-topology/test/langtools/tools/javac/lambda/MethodReference28.java
russell@unturf.com 0a580b313d undefect. CWE-407 — 63 sites patched across 27 ecosystems
Authors: russell@unturf.com · brackishbert@gmail.com · foxhop.net · TimeHexOn.com

Patches, unit tests, benchmarks, whitepaper, and outreach briefs.
Public domain — no copyright claimed. Use freely.
2026-03-26 17:11:57 -04:00

56 lines
1.6 KiB
Java

/*
* @test /nodynamiccopyright/
* @bug 8003280
* @summary Add lambda tests
* check that non-compatible method references are rejected
* @compile/fail/ref=MethodReference28.out -XDrawDiagnostics MethodReference28.java
*/
class MethodReference28 {
interface SAM1 {
void m(int i);
}
interface SAM2 {
void m(MethodReference28 rec, int i);
}
static void static_m1(Integer i) { } //ok - boxing
static void static_m2(Integer i1, Integer i2) { } //wrong arity
static void static_m3(String s) { } //type mismatch
static void static_m4(String... ss) { } //type mismatch - varargs
void m1(Integer i) { } //ok - boxing
void m2(Integer i1, Integer i2) { } //wrong arity
void m3(String s) { } //type mismatch
void m4(String... ss) { } //type mismatch - varargs
static void testStatic() {
SAM1 s1 = MethodReference28::static_m1;
SAM1 s2 = MethodReference28::static_m2;
SAM1 s3 = MethodReference28::static_m3;
SAM1 s4 = MethodReference28::static_m4;
}
void testBadMember() {
SAM1 s1 = MethodReference28::m1;
SAM1 s2 = MethodReference28::m2;
SAM1 s3 = MethodReference28::m3;
SAM1 s4 = MethodReference28::m4;
}
void testMember() {
SAM1 s1 = this::m1;
SAM1 s2 = this::m2;
SAM1 s3 = this::m3;
SAM1 s4 = this::m4;
}
static void testUnbound() {
SAM2 s1 = MethodReference28::m1;
SAM2 s2 = MethodReference28::m2;
SAM2 s3 = MethodReference28::m3;
SAM2 s4 = MethodReference28::m4;
}
}