lambda: highlight containing method ambiguity on method name: this avoids lots of...
[idea/community.git] / java / java-tests / testData / codeInsight / daemonCodeAnalyzer / lambda / highlighting / AmbiguityReturnValueResolution1.java
1 class Test {
2
3         interface II {
4             int _();
5         }
6
7         interface IL {
8             long _();
9         }
10
11         void m0(II im) { }
12         void m0(IL lm) { }
13
14         {
15             m0(() -> 1);
16             m0<error descr="Ambiguous method call: both 'Test.m0(II)' and 'Test.m0(IL)' match">(null)</error>;
17         }
18
19         void m(II im, IL s) { }
20         void m(IL lm, II s) { }
21
22         {
23             <error descr="Ambiguous method call: both 'Test.m(II, IL)' and 'Test.m(IL, II)' match">m</error>(() -> 1,  () ->1);
24         }
25
26
27         void m1(II im, Object s) { }
28         void m1(IL lm, Object s) { }
29
30         {
31             m1(() -> 1, null);
32             m1(() -> 1, "");
33         }
34
35         void m2(II im1, II... im) { }
36         void m2(IL... lm) { }
37
38
39         void mi(int im1, int... im) { }
40         void mi(long... lm) { }
41
42          {
43             mi (1);
44             m2();
45             <error descr="Ambiguous method call: both 'Test.m2(II, II...)' and 'Test.m2(IL...)' match">m2</error>(()->1);
46             m2(()->1, ()->1);
47             m2(()->1, ()->1, ()->1);
48
49             m2<error descr="Ambiguous method call: both 'Test.m2(II, II...)' and 'Test.m2(IL...)' match">(null, null, null)</error>;
50             <error descr="Ambiguous method call: both 'Test.m2(II, II...)' and 'Test.m2(IL...)' match">m2</error>(()->1, null, null);
51             <error descr="Ambiguous method call: both 'Test.m2(II, II...)' and 'Test.m2(IL...)' match">m2</error>(null, ()->1, null);
52             <error descr="Ambiguous method call: both 'Test.m2(II, II...)' and 'Test.m2(IL...)' match">m2</error>(null, null, ()->1);
53             <error descr="Ambiguous method call: both 'Test.m2(II, II...)' and 'Test.m2(IL...)' match">m2</error>(()->1, ()->1, null);
54             <error descr="Ambiguous method call: both 'Test.m2(II, II...)' and 'Test.m2(IL...)' match">m2</error>(null, ()->1, ()->1);
55             <error descr="Ambiguous method call: both 'Test.m2(II, II...)' and 'Test.m2(IL...)' match">m2</error>(()->1, null, ()->1);
56
57             m2(()->1L, null, null);
58             m2(null, ()->1L, null);
59             m2(null, null, ()->1L);
60             m2(()->1L, ()->1L, null);
61             m2(null, ()->1L, ()->1L);
62             m2(()->1L, null, ()->1L);
63             m2(()->1L, ()->1L, ()->1L);
64          }
65
66         void m3(II... im) {}
67         void m3(IL... lm) {}
68
69         {
70             m3<error descr="Ambiguous method call: both 'Test.m3(II...)' and 'Test.m3(IL...)' match">()</error>;
71             m3(() -> 1);
72             m3(() -> 1, () -> 1);
73             m3(() -> 1, () -> 1, () -> 1);
74
75             m3<error descr="Ambiguous method call: both 'Test.m3(II...)' and 'Test.m3(IL...)' match">(null, null)</error>;
76             <error descr="Ambiguous method call: both 'Test.m3(II...)' and 'Test.m3(IL...)' match">m3</error>(() -> 1,  null);
77             <error descr="Ambiguous method call: both 'Test.m3(II...)' and 'Test.m3(IL...)' match">m3</error>(null, () -> 1);
78             m3(() -> 1L, null);
79             m3(null, () -> 1L);
80         }
81
82 }