| import java.lang.Integer; |
| |
| interface I { |
| void m(int i); |
| } |
| |
| interface A<B> { |
| void foo(B b); |
| } |
| |
| class Foo { |
| I ii = (final <error descr="Cannot resolve symbol 'k'">k</error><error descr="Identifier expected">)</error>->{}; |
| I ii1 = (k)->{ |
| int i = k; |
| <error descr="Incompatible types. Found: 'int', required: 'java.lang.String'">String s = k;</error> |
| }; |
| |
| A<String> a = (ab) -> { |
| String s = ab; |
| <error descr="Incompatible types. Found: 'java.lang.String', required: 'int'">int i = ab;</error> |
| }; |
| |
| { |
| A<String> a1; |
| a1 = (ab)->{ |
| String s = ab; |
| <error descr="Incompatible types. Found: 'java.lang.String', required: 'int'">int i = ab;</error> |
| }; |
| } |
| |
| A<Integer> bazz() { |
| bar((o) -> { |
| String s = o; |
| <error descr="Incompatible types. Found: 'java.lang.String', required: 'int'">int i = o;</error> |
| }); |
| return (i) -> { |
| Integer k = i; |
| int n = i; |
| <error descr="Incompatible types. Found: 'java.lang.Integer', required: 'java.lang.String'">String s = i;</error> |
| }; |
| } |
| |
| void bar(A<String> a){} |
| } |
| |
| class CastInference { |
| public interface I1<X> { |
| X m(); |
| } |
| public interface I2<X> { |
| X m(); |
| } |
| public static <X> void foo(I1<X> s) {} |
| public static <X> void foo(I2<X> s) {} |
| |
| public static void main(String[] args) { |
| foo((I1<Integer>)() -> 42); |
| I1<Integer> i1 = (I1<Integer>)() -> 42; |
| } |
| } |
| |
| class WildcardBoundsUsage { |
| interface I<X> { |
| boolean foo(X x); |
| } |
| |
| public I<Character> bar(I<? super Character> predicate) { |
| return null; |
| } |
| |
| { |
| I<Character> i = bar(c -> c.compareTo('x') < 0); |
| } |
| } |