Skip to content

Type argument inference crashed #7696

@cushon

Description

@cushon
public class CrashRepro {
  interface Box<T> {}

  interface Matcher<T> {}

  static class MyMatcher<T> implements Matcher<Box<T>> {}

  static <T> T argThat(Matcher<? super T> matcher) {
    throw new UnsupportedOperationException();
  }

  static <E> Box<E> matches() {
    return argThat(new MyMatcher<>());
  }
}
$ ~/checker-framework-4.0.0/checker/bin/javac -processor nullness CrashRepro.java 
CrashRepro.java:13: error: [type.argument.inference.crashed] Type argument inference crashed for CrashRepro.argThat
    return argThat(new MyMatcher<>());
                  ^
  error: An exception occurred: StructuralEqualityComparer: unexpected combination:  type1: [DECLARED class org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedDeclaredType] Object  type2: [TYPEVAR class org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedTypeVariable] E extends Object
    visitHistory = org.checkerframework.framework.type.StructuralEqualityVisitHistory@5d3f583d
CrashRepro.java:13: error: [type.argument.inference.crashed] Type argument inference crashed for CrashRepro.argThat
    return argThat(new MyMatcher<>());
                  ^
  error: An exception occurred: StructuralEqualityComparer: unexpected combination:  type1: [DECLARED class org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedDeclaredType] @Initialized @Nullable Object  type2: [TYPEVAR class org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedTypeVariable] E extends @Initialized @Nullable Object
    visitHistory = org.checkerframework.framework.type.StructuralEqualityVisitHistory@456beb8b
2 errors

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions