From 28db0c6f5fdbbb3973b8499d01de306a24ebb419 Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Tue, 14 Sep 2021 10:02:40 -0500 Subject: [PATCH 01/11] Use GetBestTypeByMetadataName instead of GetTypeByMetadataName --- .../Common/src/Roslyn/GetBestTypeByMetadataName.cs | 4 ++-- .../gen/LoggerMessageGenerator.Parser.cs | 13 +++++++++---- .../Microsoft.Extensions.Logging.Generators.targets | 4 ++++ .../generators/EventSourceGenerator.Parser.cs | 5 +++-- .../System.Private.CoreLib.Generators.csproj | 1 + .../gen/JsonSourceGenerator.Parser.cs | 1 + .../gen/Reflection/MetadataLoadContextInternal.cs | 1 + .../gen/Reflection/RoslynExtensions.cs | 2 +- .../JsonSourceGeneratorTests.cs | 2 +- 9 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/libraries/Common/src/Roslyn/GetBestTypeByMetadataName.cs b/src/libraries/Common/src/Roslyn/GetBestTypeByMetadataName.cs index 6a64948f3828a..3d76ba78b3859 100644 --- a/src/libraries/Common/src/Roslyn/GetBestTypeByMetadataName.cs +++ b/src/libraries/Common/src/Roslyn/GetBestTypeByMetadataName.cs @@ -3,9 +3,9 @@ using Microsoft.CodeAnalysis; -namespace System.Text.Json.Reflection +namespace Microsoft.CodeAnalysis.Shared.Extensions { - internal static partial class RoslynExtensions + internal static class RoslynExtensions { // Copied from: https://github.com/dotnet/roslyn/blob/main/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Extensions/CompilationExtensions.cs /// diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs index f586064b639a1..c2c3392723aca 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs @@ -10,6 +10,11 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; +<<<<<<< HEAD +======= +using System.Collections.Immutable; +using Microsoft.CodeAnalysis.Shared.Extensions; +>>>>>>> 6e956734def (Use GetBestTypeByMetadataName instead of GetTypeByMetadataName) namespace Microsoft.Extensions.Logging.Generators { @@ -65,28 +70,28 @@ internal static bool IsSyntaxTargetForGeneration(SyntaxNode node) => /// public IReadOnlyList GetLogClasses(IEnumerable classes) { - INamedTypeSymbol loggerMessageAttribute = _compilation.GetTypeByMetadataName(LoggerMessageAttribute); + INamedTypeSymbol loggerMessageAttribute = _compilation.GetBestTypeByMetadataName(LoggerMessageAttribute); if (loggerMessageAttribute == null) { // nothing to do if this type isn't available return Array.Empty(); } - INamedTypeSymbol loggerSymbol = _compilation.GetTypeByMetadataName("Microsoft.Extensions.Logging.ILogger"); + INamedTypeSymbol loggerSymbol = _compilation.GetBestTypeByMetadataName("Microsoft.Extensions.Logging.ILogger"); if (loggerSymbol == null) { // nothing to do if this type isn't available return Array.Empty(); } - INamedTypeSymbol logLevelSymbol = _compilation.GetTypeByMetadataName("Microsoft.Extensions.Logging.LogLevel"); + INamedTypeSymbol logLevelSymbol = _compilation.GetBestTypeByMetadataName("Microsoft.Extensions.Logging.LogLevel"); if (logLevelSymbol == null) { // nothing to do if this type isn't available return Array.Empty(); } - INamedTypeSymbol exceptionSymbol = _compilation.GetTypeByMetadataName("System.Exception"); + INamedTypeSymbol exceptionSymbol = _compilation.GetBestTypeByMetadataName("System.Exception"); if (exceptionSymbol == null) { Diag(DiagnosticDescriptors.MissingRequiredType, null, "System.Exception"); diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.targets b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.targets index 2f3db63183ecd..77a182fa4649a 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.targets +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.targets @@ -20,4 +20,8 @@ + + + + diff --git a/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs b/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs index be971bb185f0b..d605a0523c403 100644 --- a/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs +++ b/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs @@ -11,6 +11,7 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Shared.Extensions; namespace Generators { @@ -31,14 +32,14 @@ public Parser(Compilation compilation, Action reportDiagnostic, Canc public EventSourceClass[] GetEventSourceClasses(List classDeclarations) { - INamedTypeSymbol? autogenerateAttribute = _compilation.GetTypeByMetadataName("System.Diagnostics.Tracing.EventSourceAutoGenerateAttribute"); + INamedTypeSymbol? autogenerateAttribute = _compilation.GetBestTypeByMetadataName("System.Diagnostics.Tracing.EventSourceAutoGenerateAttribute"); if (autogenerateAttribute is null) { // No EventSourceAutoGenerateAttribute return Array.Empty(); } - INamedTypeSymbol? eventSourceAttribute = _compilation.GetTypeByMetadataName("System.Diagnostics.Tracing.EventSourceAttribute"); + INamedTypeSymbol? eventSourceAttribute = _compilation.GetBestTypeByMetadataName("System.Diagnostics.Tracing.EventSourceAttribute"); if (eventSourceAttribute is null) { // No EventSourceAttribute diff --git a/src/libraries/System.Private.CoreLib/generators/System.Private.CoreLib.Generators.csproj b/src/libraries/System.Private.CoreLib/generators/System.Private.CoreLib.Generators.csproj index bf6c663b56432..451bb520f66ea 100644 --- a/src/libraries/System.Private.CoreLib/generators/System.Private.CoreLib.Generators.csproj +++ b/src/libraries/System.Private.CoreLib/generators/System.Private.CoreLib.Generators.csproj @@ -15,6 +15,7 @@ + diff --git a/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs b/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs index e5cb105b39d6e..c2d3949e7f365 100644 --- a/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs +++ b/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs @@ -14,6 +14,7 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Shared.Extensions; using Microsoft.CodeAnalysis.Text; namespace System.Text.Json.SourceGeneration diff --git a/src/libraries/System.Text.Json/gen/Reflection/MetadataLoadContextInternal.cs b/src/libraries/System.Text.Json/gen/Reflection/MetadataLoadContextInternal.cs index 189a842f44f5c..6a0940c8601c0 100644 --- a/src/libraries/System.Text.Json/gen/Reflection/MetadataLoadContextInternal.cs +++ b/src/libraries/System.Text.Json/gen/Reflection/MetadataLoadContextInternal.cs @@ -7,6 +7,7 @@ using System.Reflection; using System.Runtime.CompilerServices; using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Shared.Extensions; namespace System.Text.Json.Reflection { diff --git a/src/libraries/System.Text.Json/gen/Reflection/RoslynExtensions.cs b/src/libraries/System.Text.Json/gen/Reflection/RoslynExtensions.cs index aa3f431fced8d..62afc237624a1 100644 --- a/src/libraries/System.Text.Json/gen/Reflection/RoslynExtensions.cs +++ b/src/libraries/System.Text.Json/gen/Reflection/RoslynExtensions.cs @@ -7,7 +7,7 @@ namespace System.Text.Json.Reflection { - internal static partial class RoslynExtensions + internal static class RoslynExtensions { public static Type AsType(this ITypeSymbol typeSymbol, MetadataLoadContextInternal metadataLoadContext) { diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs index 0aa811d64fcce..857662db3609c 100644 --- a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs +++ b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs @@ -474,7 +474,7 @@ public void TestMultipleDefinitions() { // Adding a dependency to an assembly that has internal definitions of public types // should not result in a collision and break generation. - // This verifies the usage of GetBestTypeByMetadataName() instead of GetTypeByMetadataName(). + // Verify usage of the extension GetBestTypeByMetadataName(this Compilation) instead of Compilation.GetTypeByMetadataName(). var referencedSource = @" namespace System.Text.Json.Serialization { From 25dcab856784da86ca1d15d23ee1457e4c235bb4 Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Tue, 14 Sep 2021 10:13:11 -0500 Subject: [PATCH 02/11] Fix merge issue --- .../gen/LoggerMessageGenerator.Parser.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs index c2c3392723aca..730414f158428 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs @@ -10,11 +10,7 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -<<<<<<< HEAD -======= -using System.Collections.Immutable; using Microsoft.CodeAnalysis.Shared.Extensions; ->>>>>>> 6e956734def (Use GetBestTypeByMetadataName instead of GetTypeByMetadataName) namespace Microsoft.Extensions.Logging.Generators { From ff6785057926fd0431becc8a82224a7f4e716d40 Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Wed, 15 Sep 2021 15:29:33 -0500 Subject: [PATCH 03/11] Add unit test to Logging generator --- .../tests/SourceGenerators/RoslynTestUtils.cs | 25 +++++++ .../CompilationHelper.cs | 67 +++++++++++++++++++ .../LoggerMessageGeneratorParserTests.cs | 55 +++++++++++++++ .../JsonSourceGeneratorTests.cs | 11 +-- 4 files changed, 148 insertions(+), 10 deletions(-) create mode 100644 src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs diff --git a/src/libraries/Common/tests/SourceGenerators/RoslynTestUtils.cs b/src/libraries/Common/tests/SourceGenerators/RoslynTestUtils.cs index fa45f5511f157..e4611f687412d 100644 --- a/src/libraries/Common/tests/SourceGenerators/RoslynTestUtils.cs +++ b/src/libraries/Common/tests/SourceGenerators/RoslynTestUtils.cs @@ -173,6 +173,31 @@ public static TextSpan MakeSpan(string text, int spanNum) return (r.Results[0].Diagnostics, r.Results[0].GeneratedSources); } + /// + /// Runs a Roslyn generator given a Compilation. + /// + public static (ImmutableArray, ImmutableArray) RunGenerator( + Compilation compilation, +#if ROSLYN4_0_OR_GREATER + IIncrementalGenerator generator) +#else + ISourceGenerator generator) +#endif + { +#if ROSLYN4_0_OR_GREATER + // workaround https://github.com/dotnet/roslyn/pull/55866. We can remove "LangVersion=Preview" when we get a Roslyn build with that change. + CSharpParseOptions options = CSharpParseOptions.Default.WithLanguageVersion(LanguageVersion.Preview); + CSharpGeneratorDriver cgd = CSharpGeneratorDriver.Create(new[] { generator.AsSourceGenerator() }, parseOptions: options); +#else + CSharpGeneratorDriver cgd = CSharpGeneratorDriver.Create(new[] { generator }); +#endif + + GeneratorDriver gd = cgd.RunGenerators(compilation); + + GeneratorDriverRunResult r = gd.GetRunResult(); + return (r.Results[0].Diagnostics, r.Results[0].GeneratedSources); + } + /// /// Runs a Roslyn analyzer over a set of source files. /// diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs new file mode 100644 index 0000000000000..2fda631b2be3c --- /dev/null +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs @@ -0,0 +1,67 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; + +namespace Microsoft.Extensions.Logging.Generators.Tests +{ + public class CompilationHelper + { + public static Compilation CreateCompilation( + string source, + MetadataReference[]? additionalReferences = null, + string assemblyName = "TestAssembly") + { + string corelib = Assembly.GetAssembly(typeof(object))!.Location; + string runtimeDir = Path.GetDirectoryName(corelib)!; + + var refs = new List(); + refs.Add(MetadataReference.CreateFromFile(corelib)); + refs.Add(MetadataReference.CreateFromFile(Path.Combine(runtimeDir, "netstandard.dll"))); + refs.Add(MetadataReference.CreateFromFile(Path.Combine(runtimeDir, "System.Runtime.dll"))); + refs.Add(MetadataReference.CreateFromFile(typeof(ILogger).Assembly.Location)); + refs.Add(MetadataReference.CreateFromFile(typeof(LoggerMessageAttribute).Assembly.Location)); + + // Add additional references as needed. + if (additionalReferences != null) + { + foreach (MetadataReference reference in additionalReferences) + { + refs.Add(reference); + } + } + + CSharpParseOptions options = new CSharpParseOptions( + kind: SourceCodeKind.Regular, + documentationMode: DocumentationMode.Parse); + +#if ROSLYN4_0_OR_GREATER + // workaround https://github.com/dotnet/roslyn/pull/55866. We can remove "LangVersion=Preview" when we get a Roslyn build with that change. + options = options.WithLanguageVersion(LanguageVersion.Preview); +#endif + + return CSharpCompilation.Create( + assemblyName, + syntaxTrees: new[] { CSharpSyntaxTree.ParseText(source, options) }, + references: refs.ToArray(), + options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary) + ); + } + + public static byte[] CreateAssemblyImage(Compilation compilation) + { + MemoryStream ms = new MemoryStream(); + var emitResult = compilation.Emit(ms); + if (!emitResult.Success) + { + throw new InvalidOperationException(); + } + return ms.ToArray(); + } + } +} diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs index 72b502364ad33..f8913a528b584 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs @@ -3,6 +3,8 @@ using System; using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; using System.Reflection; using System.Threading; using System.Threading.Tasks; @@ -679,6 +681,59 @@ static partial class C Assert.Empty(diagnostics); // should fail quietly on broken code } + [Fact] + public void TestMultipleDefinitions() + { + // Adding a dependency to an assembly that has internal definitions of public types + // should not result in a collision and break generation. + // Verify usage of the extension GetBestTypeByMetadataName(this Compilation) instead of Compilation.GetTypeByMetadataName(). + var referencedSource = @" + namespace System + { + internal class Exception { } + } + namespace Microsoft.Extensions.Logging + { + internal class LoggerMessageAttribute { } + } + namespace Microsoft.Extensions.Logging + { + internal interface ILogger { } + internal enum LogLevel { } + }"; + + // Compile the referenced assembly first. + Compilation referencedCompilation = CompilationHelper.CreateCompilation(referencedSource); + + // Obtain the image of the referenced assembly. + byte[] referencedImage = CompilationHelper.CreateAssemblyImage(referencedCompilation); + + // Generate the code + string source = @" + namespace Test + { + using Microsoft.Extensions.Logging; + + partial class C + { + [LoggerMessage(EventId = 1, Level = LogLevel.Debug, Message = ""M1"")] + static partial void M1(ILogger logger); + } + }"; + + MetadataReference[] additionalReferences = { MetadataReference.CreateFromImage(referencedImage) }; + Compilation compilation = CompilationHelper.CreateCompilation(source, additionalReferences); + LoggerMessageGenerator generator = new LoggerMessageGenerator(); + + (ImmutableArray diagnostics, ImmutableArray generatedSources) = + RoslynTestUtils.RunGenerator(compilation, generator); + + // Make sure compilation was successful. + Assert.Empty(diagnostics.Where(diag => diag.Severity.Equals(DiagnosticSeverity.Error))); + Assert.Equal(1, generatedSources.Length); + Assert.Equal(21, generatedSources[0].SourceText.Lines.Count); + } + private static async Task> RunGenerator( string code, bool wrap = true, diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs index 857662db3609c..105dc91af17b3 100644 --- a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs +++ b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs @@ -487,16 +487,7 @@ internal class JsonSourceGenerationOptionsAttribute { } Compilation referencedCompilation = CompilationHelper.CreateCompilation(referencedSource); // Obtain the image of the referenced assembly. - byte[] referencedImage; - using (MemoryStream ms = new MemoryStream()) - { - var emitResult = referencedCompilation.Emit(ms); - if (!emitResult.Success) - { - throw new InvalidOperationException(); - } - referencedImage = ms.ToArray(); - } + byte[] referencedImage = CompilationHelper.CreateAssemblyImage(referencedCompilation); // Generate the code string source = @" From a3e6eb1e5515069484da1205b2d8fde15c3ee179 Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Thu, 16 Sep 2021 10:37:27 -0500 Subject: [PATCH 04/11] Misc test cleanup --- .../tests/SourceGenerators/RoslynTestUtils.cs | 32 ++++++------------- .../CompilationHelper.cs | 5 +-- .../LoggerMessageGeneratorParserTests.cs | 5 ++- 3 files changed, 12 insertions(+), 30 deletions(-) diff --git a/src/libraries/Common/tests/SourceGenerators/RoslynTestUtils.cs b/src/libraries/Common/tests/SourceGenerators/RoslynTestUtils.cs index e4611f687412d..23b1d5959aced 100644 --- a/src/libraries/Common/tests/SourceGenerators/RoslynTestUtils.cs +++ b/src/libraries/Common/tests/SourceGenerators/RoslynTestUtils.cs @@ -48,10 +48,10 @@ public static Project CreateTestProject(IEnumerable? references, bool } return new AdhocWorkspace() - .AddSolution(SolutionInfo.Create(SolutionId.CreateNewId(), VersionStamp.Create())) - .AddProject("Test", "test.dll", "C#") - .WithMetadataReferences(refs) - .WithCompilationOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary).WithNullableContextOptions(NullableContextOptions.Enable)); + .AddSolution(SolutionInfo.Create(SolutionId.CreateNewId(), VersionStamp.Create())) + .AddProject("Test", "test.dll", "C#") + .WithMetadataReferences(refs) + .WithCompilationOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary).WithNullableContextOptions(NullableContextOptions.Enable)); } public static Task CommitChanges(this Project proj, params string[] ignorables) @@ -152,25 +152,10 @@ public static TextSpan MakeSpan(string text, int spanNum) CancellationToken cancellationToken = default) { Project proj = CreateTestProject(references, includeBaseReferences); - proj = proj.WithDocuments(sources); - Assert.True(proj.Solution.Workspace.TryApplyChanges(proj.Solution)); - Compilation? comp = await proj!.GetCompilationAsync(CancellationToken.None).ConfigureAwait(false); - -#if ROSLYN4_0_OR_GREATER - // workaround https://github.com/dotnet/roslyn/pull/55866. We can remove "LangVersion=Preview" when we get a Roslyn build with that change. - CSharpParseOptions options = CSharpParseOptions.Default.WithLanguageVersion(LanguageVersion.Preview); - CSharpGeneratorDriver cgd = CSharpGeneratorDriver.Create(new[] { generator.AsSourceGenerator() }, parseOptions: options); -#else - CSharpGeneratorDriver cgd = CSharpGeneratorDriver.Create(new[] { generator }); -#endif - - GeneratorDriver gd = cgd.RunGenerators(comp!, cancellationToken); - - GeneratorDriverRunResult r = gd.GetRunResult(); - return (r.Results[0].Diagnostics, r.Results[0].GeneratedSources); + return RunGenerator(comp!, generator, cancellationToken); } /// @@ -179,10 +164,11 @@ public static TextSpan MakeSpan(string text, int spanNum) public static (ImmutableArray, ImmutableArray) RunGenerator( Compilation compilation, #if ROSLYN4_0_OR_GREATER - IIncrementalGenerator generator) + IIncrementalGenerator generator, #else - ISourceGenerator generator) + ISourceGenerator generator, #endif + CancellationToken cancellationToken = default) { #if ROSLYN4_0_OR_GREATER // workaround https://github.com/dotnet/roslyn/pull/55866. We can remove "LangVersion=Preview" when we get a Roslyn build with that change. @@ -192,7 +178,7 @@ public static (ImmutableArray, ImmutableArray CSharpGeneratorDriver cgd = CSharpGeneratorDriver.Create(new[] { generator }); #endif - GeneratorDriver gd = cgd.RunGenerators(compilation); + GeneratorDriver gd = cgd.RunGenerators(compilation, cancellationToken); GeneratorDriverRunResult r = gd.GetRunResult(); return (r.Results[0].Diagnostics, r.Results[0].GeneratedSources); diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs index 2fda631b2be3c..59c82a5437147 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs @@ -27,7 +27,6 @@ public static Compilation CreateCompilation( refs.Add(MetadataReference.CreateFromFile(typeof(ILogger).Assembly.Location)); refs.Add(MetadataReference.CreateFromFile(typeof(LoggerMessageAttribute).Assembly.Location)); - // Add additional references as needed. if (additionalReferences != null) { foreach (MetadataReference reference in additionalReferences) @@ -36,9 +35,7 @@ public static Compilation CreateCompilation( } } - CSharpParseOptions options = new CSharpParseOptions( - kind: SourceCodeKind.Regular, - documentationMode: DocumentationMode.Parse); + CSharpParseOptions options = CSharpParseOptions.Default; #if ROSLYN4_0_OR_GREATER // workaround https://github.com/dotnet/roslyn/pull/55866. We can remove "LangVersion=Preview" when we get a Roslyn build with that change. diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs index f8913a528b584..402568091c40f 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs @@ -4,7 +4,6 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; -using System.Linq; using System.Reflection; using System.Threading; using System.Threading.Tasks; @@ -682,7 +681,7 @@ static partial class C } [Fact] - public void TestMultipleDefinitions() + public void MultipleTypeDefinitions() { // Adding a dependency to an assembly that has internal definitions of public types // should not result in a collision and break generation. @@ -729,7 +728,7 @@ partial class C RoslynTestUtils.RunGenerator(compilation, generator); // Make sure compilation was successful. - Assert.Empty(diagnostics.Where(diag => diag.Severity.Equals(DiagnosticSeverity.Error))); + Assert.Empty(diagnostics); Assert.Equal(1, generatedSources.Length); Assert.Equal(21, generatedSources[0].SourceText.Lines.Count); } From 9c89de0e98ac10ec6fcc2ccdd0985e45ca71d165 Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Thu, 16 Sep 2021 13:12:19 -0500 Subject: [PATCH 05/11] Attempt to address wasm test failure --- .../gen/LoggerMessageGenerator.Parser.cs | 8 ++++---- .../LoggerMessageGeneratorParserTests.cs | 9 +++------ .../generators/EventSourceGenerator.Parser.cs | 4 ++-- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs index 730414f158428..fedb8671a7384 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs @@ -66,28 +66,28 @@ internal static bool IsSyntaxTargetForGeneration(SyntaxNode node) => /// public IReadOnlyList GetLogClasses(IEnumerable classes) { - INamedTypeSymbol loggerMessageAttribute = _compilation.GetBestTypeByMetadataName(LoggerMessageAttribute); + INamedTypeSymbol loggerMessageAttribute = _compilation.GetTypeByMetadataName(LoggerMessageAttribute); if (loggerMessageAttribute == null) { // nothing to do if this type isn't available return Array.Empty(); } - INamedTypeSymbol loggerSymbol = _compilation.GetBestTypeByMetadataName("Microsoft.Extensions.Logging.ILogger"); + INamedTypeSymbol loggerSymbol = _compilation.GetTypeByMetadataName("Microsoft.Extensions.Logging.ILogger"); if (loggerSymbol == null) { // nothing to do if this type isn't available return Array.Empty(); } - INamedTypeSymbol logLevelSymbol = _compilation.GetBestTypeByMetadataName("Microsoft.Extensions.Logging.LogLevel"); + INamedTypeSymbol logLevelSymbol = _compilation.GetTypeByMetadataName("Microsoft.Extensions.Logging.LogLevel"); if (logLevelSymbol == null) { // nothing to do if this type isn't available return Array.Empty(); } - INamedTypeSymbol exceptionSymbol = _compilation.GetBestTypeByMetadataName("System.Exception"); + INamedTypeSymbol exceptionSymbol = _compilation.GetTypeByMetadataName("System.Exception"); if (exceptionSymbol == null) { Diag(DiagnosticDescriptors.MissingRequiredType, null, "System.Exception"); diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs index 402568091c40f..43b82767a8857 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs @@ -680,17 +680,14 @@ static partial class C Assert.Empty(diagnostics); // should fail quietly on broken code } - [Fact] - public void MultipleTypeDefinitions() + //[Fact] + //[ActiveIssue("todo", TestPlatforms.Browser)] + internal void MultipleTypeDefinitions() { // Adding a dependency to an assembly that has internal definitions of public types // should not result in a collision and break generation. // Verify usage of the extension GetBestTypeByMetadataName(this Compilation) instead of Compilation.GetTypeByMetadataName(). var referencedSource = @" - namespace System - { - internal class Exception { } - } namespace Microsoft.Extensions.Logging { internal class LoggerMessageAttribute { } diff --git a/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs b/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs index d605a0523c403..8aa5d066abda7 100644 --- a/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs +++ b/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs @@ -32,14 +32,14 @@ public Parser(Compilation compilation, Action reportDiagnostic, Canc public EventSourceClass[] GetEventSourceClasses(List classDeclarations) { - INamedTypeSymbol? autogenerateAttribute = _compilation.GetBestTypeByMetadataName("System.Diagnostics.Tracing.EventSourceAutoGenerateAttribute"); + INamedTypeSymbol? autogenerateAttribute = _compilation.GetTypeByMetadataName("System.Diagnostics.Tracing.EventSourceAutoGenerateAttribute"); if (autogenerateAttribute is null) { // No EventSourceAutoGenerateAttribute return Array.Empty(); } - INamedTypeSymbol? eventSourceAttribute = _compilation.GetBestTypeByMetadataName("System.Diagnostics.Tracing.EventSourceAttribute"); + INamedTypeSymbol? eventSourceAttribute = _compilation.GetTypeByMetadataName("System.Diagnostics.Tracing.EventSourceAttribute"); if (eventSourceAttribute is null) { // No EventSourceAttribute From 46b390504b4cb66ffb322867715eb156d7dd4079 Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Sat, 18 Sep 2021 10:34:38 -0500 Subject: [PATCH 06/11] temp: remove ref to new code --- .../gen/Microsoft.Extensions.Logging.Generators.targets | 2 +- .../CompilationHelper.cs | 3 +++ .../LoggerMessageGeneratorParserTests.cs | 6 ++++-- .../generators/System.Private.CoreLib.Generators.csproj | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.targets b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.targets index 77a182fa4649a..0740661e804ba 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.targets +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.targets @@ -21,7 +21,7 @@ - + diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs index 59c82a5437147..cd5aa6d8dca97 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs @@ -1,6 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +#if false + using System; using System.Collections.Generic; using System.IO; @@ -62,3 +64,4 @@ public static byte[] CreateAssemblyImage(Compilation compilation) } } } +#endif diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs index 43b82767a8857..7fe71f41156cf 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs @@ -680,8 +680,9 @@ static partial class C Assert.Empty(diagnostics); // should fail quietly on broken code } - //[Fact] - //[ActiveIssue("todo", TestPlatforms.Browser)] +#if false + [Fact] + [ActiveIssue("todo", TestPlatforms.Browser)] internal void MultipleTypeDefinitions() { // Adding a dependency to an assembly that has internal definitions of public types @@ -729,6 +730,7 @@ partial class C Assert.Equal(1, generatedSources.Length); Assert.Equal(21, generatedSources[0].SourceText.Lines.Count); } +#endif private static async Task> RunGenerator( string code, diff --git a/src/libraries/System.Private.CoreLib/generators/System.Private.CoreLib.Generators.csproj b/src/libraries/System.Private.CoreLib/generators/System.Private.CoreLib.Generators.csproj index 451bb520f66ea..993a15a318989 100644 --- a/src/libraries/System.Private.CoreLib/generators/System.Private.CoreLib.Generators.csproj +++ b/src/libraries/System.Private.CoreLib/generators/System.Private.CoreLib.Generators.csproj @@ -15,7 +15,7 @@ - + From 051ed1b2736ab244bdb06d1a365e323236a599b2 Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Mon, 20 Sep 2021 09:41:52 -0500 Subject: [PATCH 07/11] temp: remove ref to new code (attempt 2) --- .../gen/LoggerMessageGenerator.Parser.cs | 2 +- .../generators/EventSourceGenerator.Parser.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs index fedb8671a7384..c9cf881ffd235 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs @@ -10,7 +10,7 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.CodeAnalysis.Shared.Extensions; +// using Microsoft.CodeAnalysis.Shared.Extensions; namespace Microsoft.Extensions.Logging.Generators { diff --git a/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs b/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs index 8aa5d066abda7..ce50c14a43683 100644 --- a/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs +++ b/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs @@ -11,7 +11,7 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.CodeAnalysis.Shared.Extensions; +// using Microsoft.CodeAnalysis.Shared.Extensions; namespace Generators { From 4d6c7a3bedcafc8fde46d21336a83d4ae6915208 Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Mon, 20 Sep 2021 15:05:52 -0500 Subject: [PATCH 08/11] Add back intended code --- .../gen/LoggerMessageGenerator.Parser.cs | 10 +++++----- .../Microsoft.Extensions.Logging.Generators.targets | 2 +- .../CompilationHelper.cs | 3 --- .../LoggerMessageGeneratorParserTests.cs | 3 --- .../generators/EventSourceGenerator.Parser.cs | 7 +++---- .../System.Private.CoreLib.Generators.csproj | 2 +- 6 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs index c9cf881ffd235..730414f158428 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs @@ -10,7 +10,7 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -// using Microsoft.CodeAnalysis.Shared.Extensions; +using Microsoft.CodeAnalysis.Shared.Extensions; namespace Microsoft.Extensions.Logging.Generators { @@ -66,28 +66,28 @@ internal static bool IsSyntaxTargetForGeneration(SyntaxNode node) => /// public IReadOnlyList GetLogClasses(IEnumerable classes) { - INamedTypeSymbol loggerMessageAttribute = _compilation.GetTypeByMetadataName(LoggerMessageAttribute); + INamedTypeSymbol loggerMessageAttribute = _compilation.GetBestTypeByMetadataName(LoggerMessageAttribute); if (loggerMessageAttribute == null) { // nothing to do if this type isn't available return Array.Empty(); } - INamedTypeSymbol loggerSymbol = _compilation.GetTypeByMetadataName("Microsoft.Extensions.Logging.ILogger"); + INamedTypeSymbol loggerSymbol = _compilation.GetBestTypeByMetadataName("Microsoft.Extensions.Logging.ILogger"); if (loggerSymbol == null) { // nothing to do if this type isn't available return Array.Empty(); } - INamedTypeSymbol logLevelSymbol = _compilation.GetTypeByMetadataName("Microsoft.Extensions.Logging.LogLevel"); + INamedTypeSymbol logLevelSymbol = _compilation.GetBestTypeByMetadataName("Microsoft.Extensions.Logging.LogLevel"); if (logLevelSymbol == null) { // nothing to do if this type isn't available return Array.Empty(); } - INamedTypeSymbol exceptionSymbol = _compilation.GetTypeByMetadataName("System.Exception"); + INamedTypeSymbol exceptionSymbol = _compilation.GetBestTypeByMetadataName("System.Exception"); if (exceptionSymbol == null) { Diag(DiagnosticDescriptors.MissingRequiredType, null, "System.Exception"); diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.targets b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.targets index 0740661e804ba..77a182fa4649a 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.targets +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.targets @@ -21,7 +21,7 @@ - + diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs index cd5aa6d8dca97..59c82a5437147 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/CompilationHelper.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#if false - using System; using System.Collections.Generic; using System.IO; @@ -64,4 +62,3 @@ public static byte[] CreateAssemblyImage(Compilation compilation) } } } -#endif diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs index 7fe71f41156cf..3c3ce17ef0b18 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs @@ -680,9 +680,7 @@ static partial class C Assert.Empty(diagnostics); // should fail quietly on broken code } -#if false [Fact] - [ActiveIssue("todo", TestPlatforms.Browser)] internal void MultipleTypeDefinitions() { // Adding a dependency to an assembly that has internal definitions of public types @@ -730,7 +728,6 @@ partial class C Assert.Equal(1, generatedSources.Length); Assert.Equal(21, generatedSources[0].SourceText.Lines.Count); } -#endif private static async Task> RunGenerator( string code, diff --git a/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs b/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs index ce50c14a43683..55445609f8046 100644 --- a/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs +++ b/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs @@ -7,11 +7,10 @@ using System.Security.Cryptography; using System.Text; using System.Threading; - using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -// using Microsoft.CodeAnalysis.Shared.Extensions; +using Microsoft.CodeAnalysis.Shared.Extensions; namespace Generators { @@ -32,14 +31,14 @@ public Parser(Compilation compilation, Action reportDiagnostic, Canc public EventSourceClass[] GetEventSourceClasses(List classDeclarations) { - INamedTypeSymbol? autogenerateAttribute = _compilation.GetTypeByMetadataName("System.Diagnostics.Tracing.EventSourceAutoGenerateAttribute"); + INamedTypeSymbol? autogenerateAttribute = _compilation.GetBestTypeByMetadataName("System.Diagnostics.Tracing.EventSourceAutoGenerateAttribute"); if (autogenerateAttribute is null) { // No EventSourceAutoGenerateAttribute return Array.Empty(); } - INamedTypeSymbol? eventSourceAttribute = _compilation.GetTypeByMetadataName("System.Diagnostics.Tracing.EventSourceAttribute"); + INamedTypeSymbol? eventSourceAttribute = _compilation.GetBestTypeByMetadataName("System.Diagnostics.Tracing.EventSourceAttribute"); if (eventSourceAttribute is null) { // No EventSourceAttribute diff --git a/src/libraries/System.Private.CoreLib/generators/System.Private.CoreLib.Generators.csproj b/src/libraries/System.Private.CoreLib/generators/System.Private.CoreLib.Generators.csproj index 993a15a318989..451bb520f66ea 100644 --- a/src/libraries/System.Private.CoreLib/generators/System.Private.CoreLib.Generators.csproj +++ b/src/libraries/System.Private.CoreLib/generators/System.Private.CoreLib.Generators.csproj @@ -15,7 +15,7 @@ - + From 7a4eee99dfc20126a9d2cc6905e3b247ba5a4653 Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Tue, 21 Sep 2021 10:55:40 -0500 Subject: [PATCH 09/11] Add test.proj ProjectExclusions --- src/libraries/tests.proj | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 827242cb42187..02772d883861c 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -13,6 +13,18 @@ false + + + + + + + + + + + + From 8e2ca4764538fd9409ef89edc0746597cca8ca63 Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Thu, 23 Sep 2021 10:58:35 -0500 Subject: [PATCH 10/11] Fix test exclusion path --- src/libraries/tests.proj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 02772d883861c..aae9eb5396a6a 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -20,9 +20,9 @@ - - - + + + From e1ac8d83f511cebd592479c1701b79f7fb2410ef Mon Sep 17 00:00:00 2001 From: Steve Harter Date: Mon, 27 Sep 2021 13:43:34 -0500 Subject: [PATCH 11/11] Disambiguate Runtime-provided from Roslyn-provided helpers --- src/libraries/Common/src/Roslyn/GetBestTypeByMetadataName.cs | 2 +- .../gen/LoggerMessageGenerator.Parser.cs | 2 +- .../generators/EventSourceGenerator.Parser.cs | 2 +- .../System.Text.Json/gen/JsonSourceGenerator.Parser.cs | 2 +- .../gen/Reflection/MetadataLoadContextInternal.cs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libraries/Common/src/Roslyn/GetBestTypeByMetadataName.cs b/src/libraries/Common/src/Roslyn/GetBestTypeByMetadataName.cs index 3d76ba78b3859..c86d7f2e00ebc 100644 --- a/src/libraries/Common/src/Roslyn/GetBestTypeByMetadataName.cs +++ b/src/libraries/Common/src/Roslyn/GetBestTypeByMetadataName.cs @@ -3,7 +3,7 @@ using Microsoft.CodeAnalysis; -namespace Microsoft.CodeAnalysis.Shared.Extensions +namespace Microsoft.CodeAnalysis.DotnetRuntime.Extensions { internal static class RoslynExtensions { diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs index 730414f158428..ad8a524b0fc8c 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs @@ -10,7 +10,7 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.CodeAnalysis.Shared.Extensions; +using Microsoft.CodeAnalysis.DotnetRuntime.Extensions; namespace Microsoft.Extensions.Logging.Generators { diff --git a/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs b/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs index 55445609f8046..2b28b46e03335 100644 --- a/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs +++ b/src/libraries/System.Private.CoreLib/generators/EventSourceGenerator.Parser.cs @@ -10,7 +10,7 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.CodeAnalysis.Shared.Extensions; +using Microsoft.CodeAnalysis.DotnetRuntime.Extensions; namespace Generators { diff --git a/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs b/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs index c2d3949e7f365..e985f1c3c38a7 100644 --- a/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs +++ b/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs @@ -14,7 +14,7 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.CodeAnalysis.Shared.Extensions; +using Microsoft.CodeAnalysis.DotnetRuntime.Extensions; using Microsoft.CodeAnalysis.Text; namespace System.Text.Json.SourceGeneration diff --git a/src/libraries/System.Text.Json/gen/Reflection/MetadataLoadContextInternal.cs b/src/libraries/System.Text.Json/gen/Reflection/MetadataLoadContextInternal.cs index 6a0940c8601c0..15020ec6ea621 100644 --- a/src/libraries/System.Text.Json/gen/Reflection/MetadataLoadContextInternal.cs +++ b/src/libraries/System.Text.Json/gen/Reflection/MetadataLoadContextInternal.cs @@ -7,7 +7,7 @@ using System.Reflection; using System.Runtime.CompilerServices; using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.Shared.Extensions; +using Microsoft.CodeAnalysis.DotnetRuntime.Extensions; namespace System.Text.Json.Reflection {