summaryrefslogtreecommitdiff
path: root/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/SuperWildcardWithBoundPromotion.java
blob: f1a533020e345af7fcc7000de67590dce9cfaf08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import java.io.Serializable;

interface Parametrized<T extends Number> {}

class Bug1<T extends Serializable>{
  <I extends Number> Parametrized<I> foo(Parametrized<I> param) {
    return null;
  }

  void bug1(Parametrized<? super T> param) {
    foo(param);
  }


}

class Bug2<T extends Integer>{
  <I extends Number> Parametrized<I> foo(Parametrized<I> param) {
    return null;
  }

  void bug1(Parametrized<? super T> param) {
    <error descr="Inferred type 'capture<? super T>' for type parameter 'I' is not within its bound; should extend 'java.lang.Number'">foo(param)</error>;
  }


}

class Test {
  interface Parametrized<T extends Serializable> {}

  class Bug1<T extends Serializable>{
    <I extends Number> Parametrized<I> foo(Parametrized<I> param) {
      return null;
    }

    void bug1(Parametrized<? super T> param) {
      <error descr="Inferred type 'java.io.Serializable' for type parameter 'I' is not within its bound; should extend 'java.lang.Number'">foo(param)</error>;
    }


  }

  class Bug2<T extends Integer>{
    <I extends Number> Parametrized<I> foo(Parametrized<I> param) {
      return null;
    }

    void bug1(Parametrized<? super T> param) {
      <error descr="Inferred type 'capture<? super T>' for type parameter 'I' is not within its bound; should extend 'java.lang.Number'">foo(param)</error>;
    }


  }
}