Skip to content

Problem with dataflow inside a lambda during type argument inference #6629

@roded

Description

@roded

Trying to bump our Checkerframework version to from 3.42.0 to 3.43.0 and am seeing the following issue which is not clear to me:

NotNull is applied in the package-info.java:

@DefaultQualifier(value = NotNull.class,
    locations = {TypeUseLocation.FIELD, TypeUseLocation.PARAMETER, TypeUseLocation.RETURN})

The following code has started producing the following error:

    public List<DatasetModel> convert(List<VolumeDataset> volumeDatasets) {
        return volumeDatasets.stream().map(dcollectDatasetEntry -> {
            List<DatasetVolserModel> datasetVolserModels = convertVolumeDataset(dcollectDatasetEntry);
            DatasetTypeModel entryTypeModel = convertDcollectEntryType(dcollectDatasetEntry.getType());
            return new DatasetModel(
                dcollectDatasetEntry.getName(),
                entryTypeModel,
                datasetVolserModels,
                dcollectDatasetEntry.getCreationDate(),
                dcollectDatasetEntry.getLastReferenceDate());
        }).collect(Collectors.toList());
    }
error: [type.arguments.not.inferred] Could not infer type arguments for Stream.collect
        }).collect(Collectors.toList());
                  ^
  unsatisfiable constraint: @UnknownInitialization(io.xxx.cdp.api.models.dataset.DatasetModel.class) @NonNull DatasetModel <: @Initialized @Nullable Object @UnknownInitialization(io.xxx.cdp.api.models.dataset.DatasetModel.class) @NonNull DatasetModel <: @Initialized @Nullable Object

Is this expected?
What has changed since 3.42.0 which is causing this issue?

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions