blob: cbb8d708d73259e32e1a786ba42d1cad82f4ee24 [file] [log] [blame]
// The test cases GenericNull, FieldAccessTest, and InferTypeArgs often fail together.
// See the comments at GenericNull for some tips about what might be wrong.
/**
* This test came from running the compilermsgs checker in the checker-framework/checker directory
* It's to test the result of type argument inference. We used to have the following return found:
* FlowAnalysis[ extends @UnknownPropertyKey CFAbstractAnalysis<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value[ extends @UnknownPropertyKey CFAbstractValue<Value>
* super @UnknownPropertyKey Void]> super @UnknownPropertyKey Void], Store[
* extends @UnknownPropertyKey CFAbstractStore<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value[ extends @UnknownPropertyKey CFAbstractValue<Value>
* super @UnknownPropertyKey Void]> super @UnknownPropertyKey Void], Store[
* extends @UnknownPropertyKey CFAbstractStore<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value[ extends @UnknownPropertyKey CFAbstractValue<Value>
* super @UnknownPropertyKey Void]> super @UnknownPropertyKey Void], Store>
* super @UnknownPropertyKey Void]> super @UnknownPropertyKey Void], TransferFunction[
* extends @UnknownPropertyKey CFAbstractTransfer<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value[ extends @UnknownPropertyKey CFAbstractValue<Value>
* super @UnknownPropertyKey Void]> super @UnknownPropertyKey Void], Store[
* extends @UnknownPropertyKey CFAbstractStore<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value[ extends @UnknownPropertyKey CFAbstractValue<Value>
* super @UnknownPropertyKey Void]> super @UnknownPropertyKey Void], Store[
* extends @UnknownPropertyKey CFAbstractStore<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value[ extends @UnknownPropertyKey CFAbstractValue<Value>
* super @UnknownPropertyKey Void]> super @UnknownPropertyKey Void], Store>
* super @UnknownPropertyKey Void]> super @UnknownPropertyKey Void], TransferFunction[
* extends @UnknownPropertyKey CFAbstractTransfer<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value[ extends @UnknownPropertyKey CFAbstractValue<Value>
* super @UnknownPropertyKey Void]> super @UnknownPropertyKey Void], Store[
* extends @UnknownPropertyKey CFAbstractStore<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value[ extends @UnknownPropertyKey CFAbstractValue<Value>
* super @UnknownPropertyKey Void]> super @UnknownPropertyKey Void], Store[
* extends @UnknownPropertyKey CFAbstractStore<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value[ extends @UnknownPropertyKey CFAbstractValue<Value>
* super @UnknownPropertyKey Void]> super @UnknownPropertyKey Void], Store>
* super @UnknownPropertyKey Void]> super @UnknownPropertyKey Void], TransferFunction>
* super @UnknownPropertyKey Void]> super @UnknownPropertyKey Void]> super @UnknownPropertyKey Void]
* required: FlowAnalysis[ extends @UnknownPropertyKey CFAbstractAnalysis<Value[
* extends @UnknownPropertyKey CFAbstractValue<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value> super @Bottom Void]> super @Bottom Void], Store[
* extends @UnknownPropertyKey CFAbstractStore<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value[ extends @UnknownPropertyKey CFAbstractValue<Value> super @Bottom Void]>
* super @Bottom Void], Store[ extends @UnknownPropertyKey CFAbstractStore<Value[
* extends @UnknownPropertyKey CFAbstractValue<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value> super @Bottom Void]> super @Bottom Void], Store> super @Bottom Void]>
* super @Bottom Void], TransferFunction[ extends @UnknownPropertyKey CFAbstractTransfer<Value[
* extends @UnknownPropertyKey CFAbstractValue<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value> super @Bottom Void]> super @Bottom Void], Store[
* extends @UnknownPropertyKey CFAbstractStore<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value[ extends @UnknownPropertyKey CFAbstractValue<Value> super @Bottom Void]>
* super @Bottom Void], Store[ extends @UnknownPropertyKey CFAbstractStore<Value[
* extends @UnknownPropertyKey CFAbstractValue<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value> super @Bottom Void]> super @Bottom Void], Store> super @Bottom Void]>
* super @Bottom Void], TransferFunction[ extends @UnknownPropertyKey CFAbstractTransfer<Value[
* extends @UnknownPropertyKey CFAbstractValue<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value> super @Bottom Void]> super @Bottom Void], Store[
* extends @UnknownPropertyKey CFAbstractStore<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value[ extends @UnknownPropertyKey CFAbstractValue<Value> super @Bottom Void]>
* super @Bottom Void], Store[ extends @UnknownPropertyKey CFAbstractStore<Value[
* extends @UnknownPropertyKey CFAbstractValue<Value[ extends @UnknownPropertyKey
* CFAbstractValue<Value> super @Bottom Void]> super @Bottom Void], Store> super @Bottom Void]>
* super @Bottom Void], TransferFunction> super @Bottom Void]> super @Bottom Void]> super @Bottom
* Void]
*/
class CFAbstractValue<V extends CFAbstractValue<V>> {}
class CFAbstractAnalysis<V extends CFAbstractValue<V>> {}
class GenericAnnotatedTypeFactory<
Value extends CFAbstractValue<Value>, FlowAnalysis extends CFAbstractAnalysis<Value>> {
@SuppressWarnings("immutability:type.argument")
protected FlowAnalysis createFlowAnalysis() {
FlowAnalysis result = invokeConstructorFor();
return result;
}
@SuppressWarnings({"nullness:return", "lock:return", "immutabilitysub:type.argument"})
public static <T> T invokeConstructorFor() {
return null;
}
}