91 lines
2.3 KiB
C#
91 lines
2.3 KiB
C#
using Microsoft.CodeAnalysis.PooledObjects;
|
|
|
|
namespace Microsoft.CodeAnalysis.CSharp;
|
|
|
|
internal sealed class UnaryOperatorOverloadResolutionResult
|
|
{
|
|
public readonly ArrayBuilder<UnaryOperatorAnalysisResult> Results;
|
|
|
|
public static readonly ObjectPool<UnaryOperatorOverloadResolutionResult> Pool = CreatePool();
|
|
|
|
public UnaryOperatorAnalysisResult Best
|
|
{
|
|
get
|
|
{
|
|
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
|
|
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
|
|
UnaryOperatorAnalysisResult result = default(UnaryOperatorAnalysisResult);
|
|
Enumerator<UnaryOperatorAnalysisResult> enumerator = Results.GetEnumerator();
|
|
while (enumerator.MoveNext())
|
|
{
|
|
UnaryOperatorAnalysisResult current = enumerator.Current;
|
|
if (current.IsValid)
|
|
{
|
|
if (result.IsValid)
|
|
{
|
|
return default(UnaryOperatorAnalysisResult);
|
|
}
|
|
result = current;
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public UnaryOperatorOverloadResolutionResult()
|
|
{
|
|
Results = new ArrayBuilder<UnaryOperatorAnalysisResult>(10);
|
|
}
|
|
|
|
public bool AnyValid()
|
|
{
|
|
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
|
|
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
|
|
Enumerator<UnaryOperatorAnalysisResult> enumerator = Results.GetEnumerator();
|
|
while (enumerator.MoveNext())
|
|
{
|
|
if (enumerator.Current.IsValid)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public bool SingleValid()
|
|
{
|
|
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
|
|
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
|
|
bool flag = false;
|
|
Enumerator<UnaryOperatorAnalysisResult> enumerator = Results.GetEnumerator();
|
|
while (enumerator.MoveNext())
|
|
{
|
|
if (enumerator.Current.IsValid)
|
|
{
|
|
if (flag)
|
|
{
|
|
return false;
|
|
}
|
|
flag = true;
|
|
}
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
public static UnaryOperatorOverloadResolutionResult GetInstance()
|
|
{
|
|
return Pool.Allocate();
|
|
}
|
|
|
|
public void Free()
|
|
{
|
|
Results.Clear();
|
|
Pool.Free(this);
|
|
}
|
|
|
|
private static ObjectPool<UnaryOperatorOverloadResolutionResult> CreatePool()
|
|
{
|
|
return new ObjectPool<UnaryOperatorOverloadResolutionResult>((Factory<UnaryOperatorOverloadResolutionResult>)(() => new UnaryOperatorOverloadResolutionResult()), 10, true);
|
|
}
|
|
}
|