inference: restore probably partial raw inference as this way expected raw types are preserved and Objects won't be inferred in place where raw types were expected

This commit is contained in:
Anna.Kozlova
2016-03-30 12:10:00 +02:00
parent 40a35baa42
commit cc72bd0319
6 changed files with 37 additions and 14 deletions

View File

@@ -7,8 +7,8 @@ public class Sample {
<B> B bar(G<B> gb) {return null;}
void f(G1 g1) {
G<String> l11 = bar<error descr="'bar(Sample.G<B>)' in 'Sample' cannot be applied to '(Sample.G1)'">(g1)</error>;
String l1 = bar<error descr="'bar(Sample.G<B>)' in 'Sample' cannot be applied to '(Sample.G1)'">(g1)</error>;
<error descr="Incompatible types. Found: 'java.lang.Object', required: 'Sample.G<java.lang.String>'">G<String> l11 = bar(g1);</error>
<error descr="Incompatible types. Found: 'java.lang.Object', required: 'java.lang.String'">String l1 = bar(g1);</error>
Object o = bar(g1);
}
}

View File

@@ -0,0 +1,12 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
class Main {
public static void main(String[] args) {
Collection children = new ArrayList<>();
List<String> actualNodes = <warning descr="Unchecked assignment: 'java.util.ArrayList' to 'java.util.List<java.lang.String>'"><warning descr="Unchecked call to 'ArrayList(Collection<? extends E>)' as a member of raw type 'java.util.ArrayList'">new ArrayList<>(children)</warning></warning>;
System.out.println(actualNodes);
}
}

View File

@@ -4,7 +4,7 @@ import java.util.Set;
abstract class Test {
public void foo(List list) {
set<error descr="Ambiguous method call: both 'Test.set(Set<List>, List)' and 'Test.set(Set<Object>, List<?>)' match">(get(), list)</error>;
set<error descr="Ambiguous method call: both 'Test.set(Set<List>, List)' and 'Test.set(Set, List)' match">(get(), list)</error>;
}
abstract <Y> Set<Y> get();