Skip to content

Type argument inference crashed #7701

Description

@cushon
public class CrashRepro {
  interface Iterator<E> {}

  interface CheckedIterator<T, X extends Exception> {}

  interface CheckedFunction<F, T, X extends Exception> {
    T apply(F input) throws X;
  }

  <F, T, X extends Exception> CheckedIterator<T, X> transform(
      Iterator<? extends F> fromIterator,
      CheckedFunction<? super F, ? extends T, ? extends X> function) {
    throw new UnsupportedOperationException();
  }

  interface Foo {
    Bar toBar();
  }

  interface Bar {}

  CheckedIterator<Bar, ?> run(Iterator<Foo> rows) {
    return transform(rows, row -> row.toBar());
  }
}
$ ~/checker-framework-4.0.0/checker/bin/javac -processor nullness CrashRepro.java
CrashRepro.java:23: error: [type.argument.inference.crashed] Type argument inference crashed for CrashRepro.transform
    return transform(rows, row -> row.toBar());
                    ^
  error: An exception occurred: class org.checkerframework.framework.util.typeinference8.types.InferenceType cannot be cast to class org.checkerframework.framework.util.typeinference8.types.UseOfVariable (org.checkerframework.framework.util.typeinference8.types.InferenceType and org.checkerframework.framework.util.typeinference8.types.UseOfVariable are in unnamed module of loader java.net.URLClassLoader @35fb3008)
CrashRepro.java:23: error: [type.argument.inference.crashed] Type argument inference crashed for CrashRepro.transform
    return transform(rows, row -> row.toBar());
                    ^
  error: An exception occurred: class org.checkerframework.framework.util.typeinference8.types.InferenceType cannot be cast to class org.checkerframework.framework.util.typeinference8.types.UseOfVariable (org.checkerframework.framework.util.typeinference8.types.InferenceType and org.checkerframework.framework.util.typeinference8.types.UseOfVariable are in unnamed module of loader java.net.URLClassLoader @35fb3008)
2 errors

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    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