summaryrefslogtreecommitdiff
path: root/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/SuperCaptureSubstitutionWhenTypeParameterHasUpperBounds.java
blob: 4eaf810dad4fd01431d9849ae4f0844e09cf9db2 (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
class Test<T > {
  interface Event{}

  interface EventListener<V extends Event> {
    void handleEvent(V event);
  }

  public void addListener(EventListener<? super T> listener) {
    EventListener<? extends Event> localListener = listener;
    <error descr="Incompatible types. Found: 'Test.EventListener<capture<? super T>>', required: 'Test.EventListener<? super Test.Event>'">EventListener<? super Event>   localListener1 = listener;</error>
  }
}

class Test1 {

  public static class Entity<E extends Entity<E>> {

    public final <T, V extends EntityVisitor<? super E, T>> T handle(final V visitor) {
      return visitor.handle(this);
    }

  }

  public interface EntityVisitor<E extends Entity<E>, T> {

    T handle(Entity<? extends E> e);

  }

}