diff --git a/standard/basic-concepts.md b/standard/basic-concepts.md index 60836d9a4..4c85ebcb3 100644 --- a/standard/basic-concepts.md +++ b/standard/basic-concepts.md @@ -103,6 +103,7 @@ The textual order in which names are declared is generally of no significance. I > *Note*: As specified above, the declaration space of a block includes any nested blocks. Thus, in the following example, the `F` and `G` methods result in a compile-time error because the name `i` is declared in the outer block and cannot be redeclared in the inner block. However, the `H` and `I` methods are valid since the two `i`’s are declared in separate non-nested blocks. > +> > ```csharp > class A > { diff --git a/tools/ExampleExtractor/ExampleMetadata.cs b/tools/ExampleExtractor/ExampleMetadata.cs index 25e28cf79..7634afad3 100644 --- a/tools/ExampleExtractor/ExampleMetadata.cs +++ b/tools/ExampleExtractor/ExampleMetadata.cs @@ -22,6 +22,7 @@ public class ExampleMetadata public bool ReplaceEllipsis { get; set; } public List ExpectedErrors { get; set; } public List ExpectedWarnings { get; set; } + public List IgnoredWarnings { get; set; } public List ExpectedOutput { get; set; } public string ExpectedException { get; set; } diff --git a/tools/ExampleTester/GeneratedExample.cs b/tools/ExampleTester/GeneratedExample.cs index 968c49c2d..e76c98d3d 100644 --- a/tools/ExampleTester/GeneratedExample.cs +++ b/tools/ExampleTester/GeneratedExample.cs @@ -50,15 +50,20 @@ internal async Task Test() bool ret = true; ret &= ValidateDiagnostics("errors", DiagnosticSeverity.Error, Metadata.ExpectedErrors); - ret &= ValidateDiagnostics("warnings", DiagnosticSeverity.Warning, Metadata.ExpectedWarnings); + ret &= ValidateDiagnostics("warnings", DiagnosticSeverity.Warning, Metadata.ExpectedWarnings, Metadata.IgnoredWarnings); ret &= ValidateOutput(); return ret; - bool ValidateDiagnostics(string type, DiagnosticSeverity severity, List expected) + bool ValidateDiagnostics(string type, DiagnosticSeverity severity, List expected, List? ignored = null) { expected ??= new List(); - var actual = compilation.GetDiagnostics().Where(d => d.Severity == severity).Select(d => d.Id).ToList(); + ignored ??= new List(); + var actual = compilation.GetDiagnostics() + .Where(d => d.Severity == severity) + .Select(d => d.Id) + .Where(id => !ignored.Contains(id)) + .ToList(); return ValidateExpectedAgainstActual(type, expected, actual); }