diff --git a/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/Diagnostics.Fail.cs b/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/Diagnostics.Fail.cs index 42d353b9..3c25e3ee 100644 --- a/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/Diagnostics.Fail.cs +++ b/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/Diagnostics.Fail.cs @@ -538,15 +538,6 @@ public static void WhenMoreThanOne() Assert.AreEqual(expected, exception.Message); } - [Test] - public static void DuplicateId() - { - var expected = "SyntaxNodeAnalyzer.SupportedDiagnostics has more than one descriptor with ID 'ID1'."; - var analyzer = new SyntaxNodeAnalyzer(Descriptors.Id1, Descriptors.Id1Duplicate); - var exception = Assert.Throws(() => RoslynAssert.Diagnostics(analyzer, ExpectedDiagnostic.Create(Descriptors.Id1), string.Empty)); - Assert.AreEqual(expected, exception.Message); - } - [Test] public static void SingleDocumentTwoErrors() { diff --git a/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/FixAll.Fail.cs b/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/FixAll.Fail.cs index bcae6c53..7db9faa1 100644 --- a/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/FixAll.Fail.cs +++ b/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/FixAll.Fail.cs @@ -425,17 +425,6 @@ class C "; CodeAssert.AreEqual(expected, exception.Message); } - - [Test] - public static void DuplicateId() - { - var expected = "SyntaxNodeAnalyzer.SupportedDiagnostics has more than one descriptor with ID 'ID1'."; - var analyzer = new SyntaxNodeAnalyzer(Descriptors.Id1, Descriptors.Id1Duplicate); - var fix = new DuplicateIdFix(); - var expectedDiagnostic = ExpectedDiagnostic.Create(Descriptors.Id1); - var exception = Assert.Throws(() => RoslynAssert.FixAll(analyzer, fix, expectedDiagnostic, string.Empty, string.Empty)); - Assert.AreEqual(expected, exception.Message); - } } } } diff --git a/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/NoFix.Fail.cs b/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/NoFix.Fail.cs index e50f3768..a294eda3 100644 --- a/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/NoFix.Fail.cs +++ b/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/NoFix.Fail.cs @@ -119,17 +119,6 @@ class C2 CodeAssert.AreEqual(expected, exception.Message); } - [Test] - public static void DuplicateId() - { - var expected = "SyntaxNodeAnalyzer.SupportedDiagnostics has more than one descriptor with ID 'ID1'."; - var analyzer = new SyntaxNodeAnalyzer(Descriptors.Id1, Descriptors.Id1Duplicate); - var fix = new DuplicateIdFix(); - var expectedDiagnostic = ExpectedDiagnostic.Create(Descriptors.Id1); - var exception = Assert.Throws(() => RoslynAssert.NoFix(analyzer, fix, expectedDiagnostic, string.Empty)); - Assert.AreEqual(expected, exception.Message); - } - [Test] public static void WhenNoAnalyzerDiagnosticsButCompilerError() { diff --git a/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/Valid.Fail.cs b/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/Valid.Fail.cs index 55c4e7be..f504f99c 100644 --- a/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/Valid.Fail.cs +++ b/Gu.Roslyn.Asserts.Tests/RoslynAssertTests/Valid.Fail.cs @@ -274,16 +274,6 @@ class C Assert.AreEqual(expected, exception.Message); } - [Test] - public static void DuplicateId() - { - var expected = "SyntaxNodeAnalyzer.SupportedDiagnostics has more than one descriptor with ID 'ID1'."; - var analyzer = new SyntaxNodeAnalyzer(Descriptors.Id1, Descriptors.Id1Duplicate); - var descriptor = Descriptors.Id1; - var exception = Assert.Throws(() => RoslynAssert.Valid(analyzer, descriptor, string.Empty)); - Assert.AreEqual(expected, exception.Message); - } - [Test] public static void WhenCompilerWarnings() { diff --git a/Gu.Roslyn.Asserts.Tests/TestHelpers/CodeFixes/DuplicateIdFix.cs b/Gu.Roslyn.Asserts.Tests/TestHelpers/CodeFixes/DuplicateIdFix.cs deleted file mode 100644 index 511ac1b6..00000000 --- a/Gu.Roslyn.Asserts.Tests/TestHelpers/CodeFixes/DuplicateIdFix.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Gu.Roslyn.Asserts.Tests.CodeFixes -{ - using System; - using System.Collections.Immutable; - using System.Threading.Tasks; - using Microsoft.CodeAnalysis; - using Microsoft.CodeAnalysis.CodeFixes; - - [ExportCodeFixProvider(LanguageNames.CSharp, Name = nameof(DuplicateIdFix))] - internal class DuplicateIdFix : CodeFixProvider - { - public override ImmutableArray FixableDiagnosticIds { get; } = ImmutableArray.Create(Descriptors.Id1.Id); - - public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; - - public override Task RegisterCodeFixesAsync(CodeFixContext context) => throw new NotSupportedException(); - } -} diff --git a/Gu.Roslyn.Asserts/RoslynAssert.cs b/Gu.Roslyn.Asserts/RoslynAssert.cs index 717bc68a..72f5d613 100644 --- a/Gu.Roslyn.Asserts/RoslynAssert.cs +++ b/Gu.Roslyn.Asserts/RoslynAssert.cs @@ -158,29 +158,13 @@ internal static void VerifySingleSupportedSuppression(DiagnosticSuppressor suppr /// The descriptor of the supported diagnostic. internal static void VerifyAnalyzerSupportsDiagnostic(DiagnosticAnalyzer analyzer, string expectedId) { - if (analyzer.SupportedDiagnostics.Length > 0 && - analyzer.SupportedDiagnostics.Length != analyzer.SupportedDiagnostics.Select(x => x.Id).Distinct().Count()) - { - var message = $"{analyzer.GetType().Name}.SupportedDiagnostics has more than one descriptor with ID '{analyzer.SupportedDiagnostics.ToLookup(x => x.Id).First(x => x.Count() > 1).Key}'."; - throw new AssertException(message); - } - - var descriptors = analyzer.SupportedDiagnostics.Count(x => x.Id == expectedId); - if (descriptors == 0) + if (!analyzer.SupportedDiagnostics.Any(x => x.Id == expectedId)) { var message = $"{analyzer.GetType().Name} does not produce a diagnostic with ID '{expectedId}'.{Environment.NewLine}" + $"{analyzer.GetType().Name}.{nameof(analyzer.SupportedDiagnostics)}: {Format(analyzer.SupportedDiagnostics)}.{Environment.NewLine}" + $"The expected diagnostic is: '{expectedId}'."; throw new AssertException(message); } - - if (descriptors > 1) - { - var message = $"{analyzer.GetType().Name} supports multiple diagnostics with ID '{expectedId}'.{Environment.NewLine}" + - $"{analyzer.GetType().Name}.{nameof(analyzer.SupportedDiagnostics)}: {Format(analyzer.SupportedDiagnostics)}.{Environment.NewLine}" + - $"The expected diagnostic is: {expectedId}."; - throw new AssertException(message); - } } ///