Skip to content

Type argument inference crashed #7681

@cushon

Description

@cushon
public class CrashRepro {
  static <I, O> Generic<O> transform(Generic<I> input, Function<? super I, ? extends O> function) {
    throw new UnsupportedOperationException();
  }

  interface Function<F, T> {
    T apply(F f);
  }

  interface Generic<T> {}

  static class GenericConverter {
    static <T> Generic<T> passthru(Generic<T> optional) {
      throw new UnsupportedOperationException();
    }
  }

  interface Foo {
    Generic<Generic<Object>> doubleGeneric();
  }

  void test(Generic<Foo> foos, Generic<Generic<Object>> defaultVal, boolean b) {
    Generic<Generic<Generic<Object>>> calendarEventDataListFuture =
        transform(
            foos,
            foo -> b ? transform(foo.doubleGeneric(), GenericConverter::passthru) : defaultVal);
  }
}
./checker-framework-4.0.0/checker/bin/javac -processor nullness CrashRepro.java |& head -n 30
CrashRepro.java:24: error: [type.argument.inference.crashed] Type argument inference crashed for CrashRepro.transform
        transform(
                 ^
  error: An exception occurred: Cannot invoke "org.checkerframework.framework.util.typeinference8.types.AbstractType.capture(org.checkerframework.framework.util.typeinference8.util.Java8InferenceContext)" because the return value of "org.checkerframework.framework.util.typeinference8.types.AbstractType.asSuper(javax.lang.model.type.TypeMirror)" is null
CrashRepro.java:24: error: [type.argument.inference.crashed] Type argument inference crashed for CrashRepro.transform
        transform(
                 ^
  error: An exception occurred: Cannot invoke "org.checkerframework.framework.util.typeinference8.types.AbstractType.capture(org.checkerframework.framework.util.typeinference8.util.Java8InferenceContext)" because the return value of "org.checkerframework.framework.util.typeinference8.types.AbstractType.asSuper(javax.lang.model.type.TypeMirror)" is null
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