| File: Contracts\EditAndContinue\ManagedActiveStatementDebugInfo.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.Runtime.Serialization; namespace Microsoft.CodeAnalysis.Contracts.EditAndContinue; /// <summary> /// Active statement debug information retrieved from the runtime and the PDB. /// </summary> /// <remarks> /// Creates a ManagedActiveStatementDebugInfo. /// </remarks> /// <param name="activeInstruction">Instruction of the active statement that is being executed.</param> /// <param name="documentName">Document name as found in the PDB, if the active statement location was determined.</param> /// <param name="sourceSpan">Location of the closest non-hidden sequence point from the active statement.</param> /// <param name="flags">Active statement flags shared across all threads that own the active statement.</param> [DataContract] internal readonly struct ManagedActiveStatementDebugInfo( ManagedInstructionId activeInstruction, string? documentName, SourceSpan sourceSpan, ActiveStatementFlags flags) { /// <summary> /// The instruction of the active statement that is being executed. /// </summary> [DataMember(Name = "activeInstruction")] public ManagedInstructionId ActiveInstruction { get; } = activeInstruction; /// <summary> /// Document name as found in the PDB, or null if the debugger can't determine the location of the active statement. /// </summary> [DataMember(Name = "documentName")] public string? DocumentName { get; } = documentName; /// <summary> /// Location of the closest non-hidden sequence point retrieved from the PDB, /// or default(<see cref="SourceSpan"/>) if the debugger can't determine the location of the active statement. /// </summary> [DataMember(Name = "sourceSpan")] public SourceSpan SourceSpan { get; } = sourceSpan; /// <summary> /// Aggregated across any threads that own the active instruction. /// </summary> [DataMember(Name = "flags")] public ActiveStatementFlags Flags { get; } = flags; public bool HasSourceLocation => DocumentName != null; }