File: CodeModel\CodeModelEventType.cs
Web Access
Project: src\src\VisualStudio\Core\Impl\Microsoft.VisualStudio.LanguageServices.Implementation.csproj (Microsoft.VisualStudio.LanguageServices.Implementation)
// 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.
 
#nullable disable
 
using System;
using System.Diagnostics;
 
namespace Microsoft.VisualStudio.LanguageServices.Implementation.CodeModel;
 
[Flags]
internal enum CodeModelEventType
{
    Add = 1 << 0,
    Remove = 1 << 1,
    Rename = 1 << 2,
    Unknown = 1 << 3,
    BaseChange = 1 << 4,
    SigChange = 1 << 5,
    TypeRefChange = 1 << 6,
    ArgChange = 1 << 7
}
 
internal static class CodeModelEventTypeExtensions
{
    public static bool IsChange(this CodeModelEventType eventType)
    {
        if (eventType is CodeModelEventType.Add or CodeModelEventType.Remove)
        {
            return false;
        }
 
        // Check that Add and Remove are not set
        if ((eventType & CodeModelEventType.Add) == 0 &&
            (eventType & CodeModelEventType.Remove) == 0)
        {
            // Check that one or more of the change flags are set
            var allChanges =
                CodeModelEventType.Rename |
                CodeModelEventType.Unknown |
                CodeModelEventType.BaseChange |
                CodeModelEventType.SigChange |
                CodeModelEventType.TypeRefChange |
                CodeModelEventType.ArgChange;
 
            if ((eventType & allChanges) != 0)
            {
                return true;
            }
        }
 
        Debug.Fail("Invalid combination of change type flags!");
        return false;
    }
}