| File: BoundTree\BoundAwaitableInfo.cs | Web Access |
| Project: src\roslyn\src\Compilers\CSharp\Portable\Microsoft.CodeAnalysis.CSharp.csproj (Microsoft.CodeAnalysis.CSharp) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Diagnostics; namespace Microsoft.CodeAnalysis.CSharp; partial class BoundAwaitableInfo { private partial void Validate() { if (RuntimeAsyncAwaitCall is not null) { Debug.Assert(RuntimeAsyncAwaitCall.Method.ContainingType.ExtendedSpecialType == InternalSpecialType.System_Runtime_CompilerServices_AsyncHelpers); Debug.Assert(RuntimeAsyncAwaitCallPlaceholder is not null); switch (RuntimeAsyncAwaitCall.Method.Name) { case "Await": Debug.Assert(GetAwaiter is null); Debug.Assert(IsCompleted is null); Debug.Assert(GetResult is null); break; case "AwaitAwaiter": case "UnsafeAwaitAwaiter": Debug.Assert(GetAwaiter is not null); Debug.Assert(IsCompleted is not null); Debug.Assert(GetResult is not null); break; default: Debug.Fail($"Unexpected RuntimeAsyncAwaitCall: {RuntimeAsyncAwaitCall.Method.Name}"); break; } } Debug.Assert(GetAwaiter is not null || RuntimeAsyncAwaitCall is not null || IsDynamic || HasErrors); } }