File: EditAndContinue\ProjectChanges.cs
Web Access
Project: src\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.Collections.Immutable;
using System.Diagnostics;
using Microsoft.CodeAnalysis.Emit;
using Microsoft.CodeAnalysis.Contracts.EditAndContinue;
 
namespace Microsoft.CodeAnalysis.EditAndContinue;
 
internal readonly struct ProjectChanges
{
    /// <summary>
    /// All semantic changes made in changed documents.
    /// </summary>
    public readonly ImmutableArray<SemanticEdit> SemanticEdits;
 
    /// <summary>
    /// All line changes made in changed documents.
    /// </summary>
    public readonly ImmutableArray<SequencePointUpdates> LineChanges;
 
    /// <summary>
    /// All symbols added in changed documents.
    /// </summary>
    public readonly ImmutableHashSet<ISymbol> AddedSymbols;
 
    /// <summary>
    /// All active statements and the corresponding exception regions in changed documents.
    /// </summary>
    public readonly ImmutableArray<DocumentActiveStatementChanges> ActiveStatementChanges;
 
    /// <summary>
    /// Runtime capabilities required to apply the changes.
    /// </summary>
    public readonly EditAndContinueCapabilities RequiredCapabilities;
 
    public ProjectChanges(
        ImmutableArray<SemanticEdit> semanticEdits,
        ImmutableArray<SequencePointUpdates> lineChanges,
        ImmutableHashSet<ISymbol> addedSymbols,
        ImmutableArray<DocumentActiveStatementChanges> activeStatementChanges,
        EditAndContinueCapabilities requiredCapabilities)
    {
        Debug.Assert(!semanticEdits.IsDefault);
        Debug.Assert(!lineChanges.IsDefault);
        Debug.Assert(!activeStatementChanges.IsDefault);
        Debug.Assert(requiredCapabilities != EditAndContinueCapabilities.None);
 
        SemanticEdits = semanticEdits;
        LineChanges = lineChanges;
        AddedSymbols = addedSymbols;
        ActiveStatementChanges = activeStatementChanges;
        RequiredCapabilities = requiredCapabilities;
    }
}