eclipse-jdt / eclipse-jdt/eclipse.jdt.core

[Switch Expressions] ECJ vs javac difference compiling method invocation involving switch expressions with poly type result expressions

Open
#3,205 4 comments 0 reactions 1 assignee Claimed by @srikanth-sankaran View on GitHub
javac
Dominant language
Java
Stars
237
Forks
195
Avg merge
1d 10h
Merged PRs (30d)
49

Description

This program is by javac (`X.java:18: error: reference to foo is ambiguous`) while ECJ happily compiles it:

```
interface I {
void foo();
}
interface J {
void foo();
}

public class X {

public static void foo(Object o, J j) {
System.out.println("Object");
}
public static void foo(String s, I i) {
System.out.println("String");
}

public static void main(String[] args) {
foo("Hello", switch (args.length) {
case 0 -> () -> System.out.println("empty arguments vector");
default -> () -> System.out.println("non-empty arguments vector");
});
}
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.