| File: Contracts\EditAndContinue\ActiveStatementFlags.cs | Web Access |
| Project: src\roslyn\src\Features\Core\Portable\Microsoft.CodeAnalysis.Features.csproj (Microsoft.CodeAnalysis.Features) |
// 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; namespace Microsoft.CodeAnalysis.Contracts.EditAndContinue; /// <summary> /// Flags regarding active statements information. /// </summary> [Flags] internal enum ActiveStatementFlags { None = 0, /// <summary> /// At least one of the threads whom this active statement belongs to is in a leaf frame. /// </summary> LeafFrame = 1, /// <summary> /// The statement is partially executed. /// </summary> /// <remarks> /// An active statement is partially executed if the thread is stopped in between two sequence points. /// This may happen when the users steps through the code in disassembly window (stepping over machine instructions), /// when the compiler emits a call to Debugger.Break (VB Stop statement), etc. /// /// Partially executed active statement can't be edited. /// </remarks> PartiallyExecuted = 2, /// <summary> /// The statement IL is not in user code. /// </summary> NonUserCode = 4, /// <summary> /// Indicates that the active statement instruction belongs to the latest version of the containing method. /// If not set, the containing method was updated but the active statement was not remapped yet because the thread /// has not returned to that instruction yet and was not remapped to the new version. /// </summary> /// <remarks> /// When the debugger asks the CLR for the active statement information it compares ICorDebugFunction.GetVersionNumber() /// and ICorDebugFunction.GetCurrentVersionNumber() to determine the value of this flag. /// </remarks> MethodUpToDate = 8, /// <summary> /// At least one of the threads whom this active statement belongs to is in a non-leaf frame. /// </summary> NonLeafFrame = 16, /// <summary> /// When applying updates while the code is executing, we will not attempt any remap for methods which are on the /// executing stack. This is done so we can avoid blocking an edit due an executing active statement. /// Language services needs to acknowledge such active statements when emitting further remap information. /// </summary> Stale = 32 }