Skip to content

Types With [MemberNotNullWhen] Causes Issue With Make Build Type #297

@JasonBock

Description

@JasonBock

To Reproduce

var code =
	"""
	using Rocks;
	using System.Diagnostics.CodeAnalysis;

	[assembly: RockMake<INotNull>]

	public interface INotNull
	{
		[MemberNotNullWhen(false, nameof(Error))]
		bool IsSuccess { get; }

		string Error { get; }
	}
	""";

Expected behavior
The mock is made.

Actual behavior
An error occurs:

error CS8775: Member 'Error' must have a non-null value when exiting with 'false'.

Additional context
This occurs because the attribute says that another member should not return null when the marked member returns false. However, because of the way a make is made, default! is always returned, and this messes with the expectation of the attribute.

This is just a diagnostic warning, so the easiest thing to do would be to wrap every make with a #pragma disable/restore pair with CS8775, so it'll never show up.

This was found on Refit.IApiResponse

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions