java: prohibit caching when using thread-local types imposed on expressions and decla...
[idea/community.git] / java / java-tests / testData / codeInsight / daemonCodeAnalyzer / lambda / overloadResolution / VoidValueCompatibilityOfImplicitlyTypedLambda.java
1 interface A {
2   int m(int x);
3 }
4
5 interface B {
6   void m(boolean x);
7 }
8
9 abstract class Test {
10   abstract void foo(A j);
11   abstract void foo(B i);
12
13   void bar(Object o) {
14     foo(x -> {
15       return x += 1;
16     });
17     <error descr="Ambiguous method call: both 'Test.foo(A)' and 'Test.foo(B)' match">foo</error>(x -> <error descr="Incompatible types. Found: 'int', required: '<lambda parameter>'">x += 1</error>);
18     foo(x -> 1);
19     foo(x -> <error descr="Operator '!' cannot be applied to 'int'">!x</error>);
20     <error descr="Ambiguous method call: both 'Test.foo(A)' and 'Test.foo(B)' match">foo</error>(x -> <error descr="Operator '++' cannot be applied to '<lambda parameter>'">++x</error>);
21     foo(x -> o instanceof String ? 1 : 0);
22   }
23 }