37 lines
1.2 KiB
C#
37 lines
1.2 KiB
C#
namespace Microsoft.CodeAnalysis.CSharp;
|
|
|
|
internal readonly struct UnaryOperatorAnalysisResult
|
|
{
|
|
public readonly UnaryOperatorSignature Signature;
|
|
|
|
public readonly Conversion Conversion;
|
|
|
|
public readonly OperatorAnalysisResultKind Kind;
|
|
|
|
public bool IsValid => Kind == OperatorAnalysisResultKind.Applicable;
|
|
|
|
public bool HasValue => Kind != OperatorAnalysisResultKind.Undefined;
|
|
|
|
private UnaryOperatorAnalysisResult(OperatorAnalysisResultKind kind, UnaryOperatorSignature signature, Conversion conversion)
|
|
{
|
|
Kind = kind;
|
|
Signature = signature;
|
|
Conversion = conversion;
|
|
}
|
|
|
|
public static UnaryOperatorAnalysisResult Applicable(UnaryOperatorSignature signature, Conversion conversion)
|
|
{
|
|
return new UnaryOperatorAnalysisResult(OperatorAnalysisResultKind.Applicable, signature, conversion);
|
|
}
|
|
|
|
public static UnaryOperatorAnalysisResult Inapplicable(UnaryOperatorSignature signature, Conversion conversion)
|
|
{
|
|
return new UnaryOperatorAnalysisResult(OperatorAnalysisResultKind.Inapplicable, signature, conversion);
|
|
}
|
|
|
|
public UnaryOperatorAnalysisResult Worse()
|
|
{
|
|
return new UnaryOperatorAnalysisResult(OperatorAnalysisResultKind.Worse, Signature, Conversion);
|
|
}
|
|
}
|