| Summary: | [Xbase] Make type inference control flow aware | ||
|---|---|---|---|
| Product: | [Modeling] TMF | Reporter: | consiliens <consiliens> |
| Component: | Xtext | Assignee: | Project Inbox <tmf.xtext-inbox> |
| Status: | CLOSED FIXED | QA Contact: | |
| Severity: | enhancement | ||
| Priority: | P3 | CC: | sebastian.zarnekow, sven.efftinge |
| Version: | 2.2.1 | Flags: | sebastian.zarnekow:
kepler+
|
| Target Milestone: | M6 | ||
| Hardware: | PC | ||
| OS: | Linux | ||
| Whiteboard: | |||
|
Description
consiliens @gmail.com
You need to provide type information during construction E.g. val builder = ImmutableBiMap::<Integer, String>builder() or ImmutableBiMapval<Integer, String> builder = ImmutableBiMap::builder() If you don't do that "? extends Object" is inferred, which isn't compatible to your method definition. I turn this into a feature enhancement about improving type inference along the control flow. > val builder = ImmutableBiMap::<Integer, String>builder() This works. > ImmutableBiMapval<Integer, String> builder = ImmutableBiMap::builder() This doesn't work, even after removing val. What's the proper syntax for specifying type parameters on the left hand side? Sorry, it's : val ImmutableBiMapval<Integer, String> builder = ImmutableBiMap::builder() (In reply to comment #3) > Sorry, it's : > > val ImmutableBiMapval<Integer, String> builder = ImmutableBiMap::builder() Still doesn't work. // Incompatible types. Expected com.google.common.collect.ImmutableBiMap<java.lang.Integer,java.lang.String> // but was com.google.common.collect.ImmutableBiMap.Builder<K,V> val ImmutableBiMap<Integer, String> builder = ImmutableBiMap::builder() I also tried: import com.google.common.collect.ImmutableBiMap$Builder // type cannot be derived val ImmutableBiMap::Builder<Integer, String> builder = ImmutableBiMap::builder() Fixed in 2.4 Requested via bug 522520. -M. |