File: src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\NamingStyles\NamingRule.cs
Web Access
Project: src\src\CodeStyle\Core\Analyzers\Microsoft.CodeAnalysis.CodeStyle.csproj (Microsoft.CodeAnalysis.CodeStyle)
// 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;
using System.Diagnostics.CodeAnalysis;
using Microsoft.CodeAnalysis.NamingStyles;
using Roslyn.Utilities;
 
namespace Microsoft.CodeAnalysis.Diagnostics.Analyzers.NamingStyles;
 
internal readonly struct NamingRule(
    SymbolSpecification symbolSpecification,
    NamingStyle namingStyle,
    ReportDiagnostic enforcementLevel) : IEquatable<NamingRule>
{
    public readonly SymbolSpecification SymbolSpecification = symbolSpecification;
    public readonly NamingStyle NamingStyle = namingStyle;
    public readonly ReportDiagnostic EnforcementLevel = enforcementLevel;
 
    public bool Equals(NamingRule other)
        => SymbolSpecification.ID == other.SymbolSpecification.ID &&
           NamingStyle.ID == other.NamingStyle.ID &&
           EnforcementLevel == other.EnforcementLevel;
 
    public override bool Equals([NotNullWhen(true)] object? obj)
        => obj is NamingStyle rule && Equals(rule);
 
    public override int GetHashCode()
        => Hash.Combine(SymbolSpecification.ID.GetHashCode(), Hash.Combine(NamingStyle.ID.GetHashCode(), (int)EnforcementLevel));
}