calc types by applicability constraints if inference fails

include all inference variables for resolve and ignore additional constraints checks if the inference is going to failure; this way if (expr()) would get type of the 'standalone' expression instead of expression with boolean as expected type
This commit is contained in:
Anna.Kozlova
2017-12-07 13:06:24 +01:00
parent c9a3fba58c
commit 1fc76eb779
17 changed files with 69 additions and 66 deletions

View File

@@ -7,10 +7,7 @@ class Test {
final Class<? extends ClassB> bClass = null;
ClassB b = factory.create(bClass);
String str = <error descr="Incompatible types. Required String but 'create' was inferred to T:
no instance(s) of type variable(s) exist so that capture of ? extends ClassB conforms to String
inference variable T has incompatible bounds:
equality constraints: capture of ? extends ClassB
upper bounds: ClassA<I>, Object, String">factory.create(bClass);</error>
no instance(s) of type variable(s) exist so that capture of ? extends ClassB conforms to String">factory.create(bClass);</error>
}
public static class Factory {