diff --git a/src/DependencyInjection.Analyzers/AssemblyCollection.cs b/src/DependencyInjection.Analyzers/AssemblyCollection.cs index 5779a4e83..d54333415 100644 --- a/src/DependencyInjection.Analyzers/AssemblyCollection.cs +++ b/src/DependencyInjection.Analyzers/AssemblyCollection.cs @@ -19,7 +19,7 @@ IncrementalValueProvider hasAssemblyLoadContext return valueProvider .CreateSyntaxProvider((node, _) => IsValidMethod(node), (syntaxContext, _) => GetMethod(syntaxContext)) .Combine(hasAssemblyLoadContext) - .Where(z => z is { Right: true, Left: { method: { }, selector: { }, }, }) + .Where(z => z is { Right: true, Left: { method: { }, selector: { } } }) .Select((tuple, _) => tuple.Left) .Collect(); } @@ -90,11 +90,6 @@ CollectRequest request ); } - private static bool IsValidMethod(SyntaxNode node) - { - return GetMethod(node) is { method: { }, selector: { } }; - } - public static MethodDeclarationSyntax Execute( Request request ) @@ -104,7 +99,7 @@ Request request var assemblySymbols = compilation .References.Select(compilation.GetAssemblyOrModuleSymbol) - .Concat([compilation.Assembly,]) + .Concat([compilation.Assembly]) .Select( symbol => symbol switch { @@ -140,26 +135,26 @@ GeneratorSyntaxContext context || baseData.selector is null || context.SemanticModel.GetTypeInfo(baseData.selector).ConvertedType is not INamedTypeSymbol { - TypeArguments: [{ Name: "IAssemblyProviderAssemblySelector", }, ..,], + TypeArguments: [{ Name: IReflectionAssemblySelector }, ..], }) return default; return ( baseData.method, baseData.selector, semanticModel: context.SemanticModel ); } - public static (InvocationExpressionSyntax method, ExpressionSyntax selector ) GetMethod(SyntaxNode node) - { - return node is InvocationExpressionSyntax + public static (InvocationExpressionSyntax method, ExpressionSyntax selector ) GetMethod(SyntaxNode node) => + node is InvocationExpressionSyntax { Expression: MemberAccessExpressionSyntax { Name.Identifier.Text: "GetAssemblies", }, - ArgumentList.Arguments: [{ Expression: { } expression, },], + ArgumentList.Arguments: [{ Expression: { } expression }], } invocationExpressionSyntax ? ( invocationExpressionSyntax, expression ) : default; - } + + private static bool IsValidMethod(SyntaxNode node) => GetMethod(node) is { method: { }, selector: { } }; private static BlockSyntax GenerateDescriptors(Compilation compilation, IEnumerable assemblies, HashSet privateAssemblies) { @@ -322,6 +317,8 @@ HashSet privateAssemblies .AddMembers(privateMembers.ToArray()); } + private const string IReflectionAssemblySelector = nameof(IReflectionAssemblySelector); + public record CollectRequest ( Compilation Compilation, diff --git a/src/DependencyInjection.Analyzers/AssemblyProviderConfiguration.cs b/src/DependencyInjection.Analyzers/AssemblyProviderConfiguration.cs index 406570608..459665b02 100644 --- a/src/DependencyInjection.Analyzers/AssemblyProviderConfiguration.cs +++ b/src/DependencyInjection.Analyzers/AssemblyProviderConfiguration.cs @@ -213,7 +213,7 @@ private static TypeFilterData LoadTypeFilterData(CompiledAssemblyFilter assembly .ToImmutableArray(), typeFilter .TypeFilterDescriptors.OfType() - .Select(z => new NameFilterData(z.Filter, z.Names.OrderBy(z => z).ToImmutableArray())) + .Select(z => new NameFilterData(z.Include, z.Filter, z.Names.OrderBy(z => z).ToImmutableArray())) .OrderBy(z => string.Join(",", z.Names.OrderBy(static z => z))) .ThenBy(z => z.Filter) .ToImmutableArray(), @@ -405,7 +405,7 @@ ImmutableDictionary assemblySymbols foreach (var item in data.NameFilters) { - descriptors.Add(new NameFilterDescriptor(item.Filter, item.Names.ToImmutableHashSet())); + descriptors.Add(new NameFilterDescriptor(item.Include, item.Filter, item.Names.ToImmutableHashSet())); } foreach (var item in data.TypeKindFilters) @@ -747,6 +747,8 @@ internal record NamespaceFilterData internal record NameFilterData ( + [property: JsonPropertyName("i")] + bool Include, [property: JsonPropertyName("f")] TextDirectionFilter Filter, [property: JsonPropertyName("n")] diff --git a/src/DependencyInjection.Analyzers/AssemblyProviders/CompiledTypeFilter.cs b/src/DependencyInjection.Analyzers/AssemblyProviders/CompiledTypeFilter.cs index ff65f0cfe..1a2e3f5e4 100644 --- a/src/DependencyInjection.Analyzers/AssemblyProviders/CompiledTypeFilter.cs +++ b/src/DependencyInjection.Analyzers/AssemblyProviders/CompiledTypeFilter.cs @@ -44,8 +44,8 @@ bool GetFilterDescriptor(ITypeFilterDescriptor filterDescriptor) targetType.GetAttributes().All(z => Helpers.GetFullMetadataName(z.AttributeClass) != attribute), NamespaceFilterDescriptor { Filter: var filterName, Namespaces: var filterNamespaces } => handleNamespaceFilter(filterName, filterNamespaces, targetType), - NameFilterDescriptor { Filter: var filterName, Names: var filterNames } => - handleNameFilter(filterName, filterNames, targetType), + NameFilterDescriptor { Include: var include, Filter: var filterName, Names: var filterNames } => + handleNameFilter(include, filterName, filterNames, targetType), TypeKindFilterDescriptor { Include: var include, TypeKinds: var typeKinds } => handleKindFilter(include, typeKinds, targetType), TypeInfoFilterDescriptor { Include: var include, TypeInfos: var typeInfos } => @@ -84,14 +84,17 @@ static bool handleNamespaceFilter(NamespaceFilter filterName, ImmutableHashSet filterNames, INamedTypeSymbol type) + static bool handleNameFilter(bool include, TextDirectionFilter filterName, ImmutableHashSet filterNames, INamedTypeSymbol type) { - return filterName switch + return ( include, filterName ) switch { - TextDirectionFilter.Contains => filterNames.Any(name => type.Name.Contains(name)), - TextDirectionFilter.StartsWith => filterNames.Any(name => type.Name.StartsWith(name)), - TextDirectionFilter.EndsWith => filterNames.Any(name => type.Name.EndsWith(name)), - _ => throw new NotImplementedException(), + (true, TextDirectionFilter.Contains) => filterNames.Any(name => type.Name.Contains(name)), + (false, TextDirectionFilter.Contains) => !filterNames.Any(name => type.Name.Contains(name)), + (true, TextDirectionFilter.EndsWith) => filterNames.Any(name => type.Name.EndsWith(name)), + (false, TextDirectionFilter.EndsWith) => !filterNames.Any(name => type.Name.EndsWith(name)), + (true, TextDirectionFilter.StartsWith) => filterNames.Any(name => type.Name.StartsWith(name)), + (false, TextDirectionFilter.StartsWith) => !filterNames.Any(name => type.Name.StartsWith(name)), + _ => throw new NotImplementedException(), }; } diff --git a/src/DependencyInjection.Analyzers/AssemblyProviders/DataHelpers.cs b/src/DependencyInjection.Analyzers/AssemblyProviders/DataHelpers.cs index 9b742f66b..582754cdc 100644 --- a/src/DependencyInjection.Analyzers/AssemblyProviders/DataHelpers.cs +++ b/src/DependencyInjection.Analyzers/AssemblyProviders/DataHelpers.cs @@ -225,7 +225,7 @@ SimpleNameSyntax name createNamespaceTypeFilterDescriptor(context, name, expression, semanticModel), ({ Identifier.Text: "InExactNamespaces" or "InNamespaces" or "NotInNamespaces" }, _) => createNamespaceStringFilterDescriptor(context, name, expression, semanticModel), - ({ Identifier.Text: "EndsWith" or "StartsWith" or "Contains" }, _) => + ({ Identifier.Text: "EndsWith" or "StartsWith" or "Contains" or "NotEndsWith" or "NotStartsWith" or "NotContains" }, _) => createNameFilterDescriptor(context, name, expression), ({ Identifier.Text: "KindOf" or "NotKindOf" }, _) => createTypeKindFilterDescriptor(context, name, expression), @@ -276,7 +276,7 @@ SemanticModel semanticModel : new AssignableToAnyTypeFilterDescriptor(arguments); } - static NameFilterDescriptor createNameFilterDescriptor( + static ITypeFilterDescriptor createNameFilterDescriptor( SourceProductionContext context, SimpleNameSyntax name, InvocationExpressionSyntax expression @@ -284,9 +284,9 @@ InvocationExpressionSyntax expression { var filter = name.Identifier.Text switch { - "EndsWith" => TextDirectionFilter.EndsWith, - "StartsWith" => TextDirectionFilter.StartsWith, - "Contains" => TextDirectionFilter.Contains, + "EndsWith" or "NotEndsWith" => TextDirectionFilter.EndsWith, + "StartsWith" or "NotStartsWith" => TextDirectionFilter.StartsWith, + "Contains" or "NotContains" => TextDirectionFilter.Contains, _ => throw new NotSupportedException( $"Not supported name filter. Method: {name.ToFullString()} {expression.ToFullString()} method." ), @@ -303,7 +303,7 @@ InvocationExpressionSyntax expression stringValues.Add(item); } - return new(filter, stringValues.ToImmutable()); + return new NameFilterDescriptor(!name.Identifier.Text.StartsWith("Not"), filter, stringValues.ToImmutable()); } static NamespaceFilterDescriptor createNamespaceTypeFilterDescriptor( diff --git a/src/DependencyInjection.Analyzers/Descriptors/NameFilterDescriptor.cs b/src/DependencyInjection.Analyzers/Descriptors/NameFilterDescriptor.cs index ea0927edf..413fceb2d 100644 --- a/src/DependencyInjection.Analyzers/Descriptors/NameFilterDescriptor.cs +++ b/src/DependencyInjection.Analyzers/Descriptors/NameFilterDescriptor.cs @@ -4,4 +4,4 @@ namespace Rocket.Surgery.DependencyInjection.Analyzers.Descriptors; [DebuggerDisplay("{ToString()}")] -internal readonly record struct NameFilterDescriptor(TextDirectionFilter Filter, ImmutableHashSet Names) : ITypeFilterDescriptor; +internal readonly record struct NameFilterDescriptor(bool Include, TextDirectionFilter Filter, ImmutableHashSet Names) : ITypeFilterDescriptor; diff --git a/src/DependencyInjection.Analyzers/ReflectionCollection.cs b/src/DependencyInjection.Analyzers/ReflectionCollection.cs index 41b26aeab..aea3cc805 100644 --- a/src/DependencyInjection.Analyzers/ReflectionCollection.cs +++ b/src/DependencyInjection.Analyzers/ReflectionCollection.cs @@ -20,7 +20,7 @@ IncrementalValueProvider hasAssemblyLoadContext return valueProvider .CreateSyntaxProvider((node, _) => IsValidMethod(node), (syntaxContext, _) => GetTypesMethod(syntaxContext)) .Combine(hasAssemblyLoadContext) - .Where(z => z is { Right: true, Left: { method: { }, selector: { }, }, }) + .Where(z => z is { Right: true, Left: { method: { }, selector: { } } }) .Select((tuple, _) => tuple.Left) .Collect(); } @@ -49,7 +49,7 @@ public static (InvocationExpressionSyntax method, ExpressionSyntax selector, Sem || baseData.selector is null || context.SemanticModel.GetTypeInfo(baseData.selector).ConvertedType is not INamedTypeSymbol { - TypeArguments: [{ Name: IReflectionAssemblySelector, }, ..,], + TypeArguments: [{ Name: IReflectionTypeSelector }, ..], }) return default; @@ -63,7 +63,7 @@ node is InvocationExpressionSyntax { Name.Identifier.Text: "GetTypes", }, - ArgumentList.Arguments: [.., { Expression: { } expression, },], + ArgumentList.Arguments: [.., { Expression: { } expression }], } invocationExpressionSyntax ? ( invocationExpressionSyntax, expression ) : default; @@ -116,7 +116,7 @@ internal static ImmutableArray GetTypeDetails( return items.ToImmutable(); } - private static bool IsValidMethod(SyntaxNode node) => GetTypesMethod(node) is { method: { }, selector: { }, }; + private static bool IsValidMethod(SyntaxNode node) => GetTypesMethod(node) is { method: { }, selector: { } }; private static BlockSyntax GenerateDescriptors(Compilation compilation, IEnumerable types, HashSet privateAssemblies) { @@ -169,7 +169,6 @@ private static BlockSyntax GenerateDescriptors(Compilation compilation, IEnumera Block(SingletonList(YieldStatement(SyntaxKind.YieldBreakStatement))) ); - private const string IReflectionAssemblySelector = nameof(IReflectionAssemblySelector); private const string IReflectionTypeSelector = nameof(IReflectionTypeSelector); public record Request(SourceProductionContext Context, Compilation Compilation, ImmutableArray Items, HashSet PrivateAssemblies); diff --git a/src/DependencyInjection.Extensions/Compiled/ITypeFilter.cs b/src/DependencyInjection.Extensions/Compiled/ITypeFilter.cs index 34c54324f..d39c17700 100644 --- a/src/DependencyInjection.Extensions/Compiled/ITypeFilter.cs +++ b/src/DependencyInjection.Extensions/Compiled/ITypeFilter.cs @@ -58,8 +58,24 @@ public interface ITypeFilter /// /// /// + ITypeFilter NotEndsWith(string value, params string[] values); + + /// + /// Will match all types that start with + /// + /// + /// + /// ITypeFilter StartsWith(string value, params string[] values); + /// + /// Will match all types that start with + /// + /// + /// + /// + ITypeFilter NotStartsWith(string value, params string[] values); + /// /// Will match all types that contain the given values /// @@ -68,6 +84,14 @@ public interface ITypeFilter /// ITypeFilter Contains(string value, params string[] values); + /// + /// Will match all types that contain the given values + /// + /// + /// + /// + ITypeFilter NotContains(string value, params string[] values); + /// /// Will match all types in the exact same namespace as the type /// diff --git a/test/DependencyInjection.Analyzers.Tests/GeneratorTest.cs b/test/DependencyInjection.Analyzers.Tests/GeneratorTest.cs index 60c66c025..1df759a9c 100644 --- a/test/DependencyInjection.Analyzers.Tests/GeneratorTest.cs +++ b/test/DependencyInjection.Analyzers.Tests/GeneratorTest.cs @@ -57,56 +57,111 @@ public static IEnumerable GetTypesData() z => z .FromAssemblies() .NotFromAssemblyOf() - .GetTypes(x => x.NotAssignableTo().NotKindOf(TypeKindFilter.Delegate, TypeKindFilter.Class)) + .GetTypes( + x => x + .NotAssignableTo() + .NotKindOf(TypeKindFilter.Delegate, TypeKindFilter.Class) + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") + ) ); yield return TestMethod( z => z .FromAssemblies() .NotFromAssemblyOf() - .GetTypes(x => x.NotAssignableTo().NotKindOf(TypeKindFilter.Delegate, TypeKindFilter.Class, TypeKindFilter.Enum)) + .GetTypes( + x => x + .NotAssignableTo() + .NotKindOf(TypeKindFilter.Delegate, TypeKindFilter.Class, TypeKindFilter.Enum) + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") + ) ); yield return TestMethod( z => z .FromAssemblies() - .GetTypes(x => x.NotAssignableTo().NotKindOf(TypeKindFilter.Delegate).NotKindOf(TypeKindFilter.Interface)) + .GetTypes( + x => x + .NotAssignableTo() + .NotKindOf(TypeKindFilter.Delegate) + .NotKindOf(TypeKindFilter.Interface) + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") + ) ); yield return TestMethod( z => z .FromAssemblies() .NotFromAssemblyOf() - .GetTypes(x => x.NotAssignableTo().InfoOf(TypeInfoFilter.Abstract).NotInNamespaces("JetBrains.Annotations")) + .GetTypes( + x => x + .NotAssignableTo() + .InfoOf(TypeInfoFilter.Abstract) + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") + ) ); yield return TestMethod( z => z .FromAssemblies() .NotFromAssemblyOf() - .GetTypes(x => x.NotAssignableTo().InfoOf(TypeInfoFilter.Visible).NotInNamespaces("JetBrains.Annotations")) + .GetTypes( + x => x + .NotAssignableTo() + .InfoOf(TypeInfoFilter.Visible) + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") + ) ); yield return TestMethod( z => z .FromAssemblies() .NotFromAssemblyOf() - .GetTypes(x => x.NotAssignableTo().InfoOf(TypeInfoFilter.ValueType).NotInNamespaces("JetBrains.Annotations")) + .GetTypes( + x => x + .NotAssignableTo() + .InfoOf(TypeInfoFilter.ValueType) + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") + ) ); // yield return TestMethod(z => z.FromAssemblies().GetTypes(x => x.InfoOf(TypeInfoFilter.Nested).NotAssignableTo().NotInNamespaces("JetBrains.Annotations"))); yield return TestMethod( z => z .FromAssemblies() .NotFromAssemblyOf() - .GetTypes(x => x.NotAssignableTo().InfoOf(TypeInfoFilter.Sealed).NotInNamespaces("JetBrains.Annotations")) + .GetTypes( + x => x + .NotAssignableTo() + .InfoOf(TypeInfoFilter.Sealed) + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") + ) ); yield return TestMethod( z => z .FromAssemblies() .NotFromAssemblyOf() - .GetTypes(x => x.NotAssignableTo().InfoOf(TypeInfoFilter.GenericType).NotInNamespaces("JetBrains.Annotations")) + .GetTypes( + x => x + .NotAssignableTo() + .InfoOf(TypeInfoFilter.GenericType) + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") + ) ); // yield return TestMethod(z => z.FromAssemblies().GetTypes(x => x.InfoOf(TypeInfoFilter.GenericTypeDefinition).NotAssignableTo().NotInNamespaces("JetBrains.Annotations"))); yield return TestMethod( z => z .FromAssemblies() .NotFromAssemblyOf() - .GetTypes(x => x.NotAssignableTo().NotInfoOf(TypeInfoFilter.Abstract).NotInNamespaces("JetBrains.Annotations")) + .GetTypes( + x => x + .NotAssignableTo() + .NotInfoOf(TypeInfoFilter.Abstract) + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") + ) ); yield return TestMethod( z => z @@ -117,9 +172,16 @@ public static IEnumerable GetTypesData() .NotAssignableTo() .NotInfoOf(TypeInfoFilter.Visible) .NotAssignableTo() - .NotInNamespaces("JetBrains.Annotations") + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") ) ); + yield return TestMethod( + z => z + .FromAssemblies() + .FromAssemblyDependenciesOf() + .GetTypes(x => x.WithAnyAttribute(typeof(ServiceRegistrationAttribute))) + ); yield return TestMethod( z => z .FromAssemblies() @@ -129,7 +191,8 @@ public static IEnumerable GetTypesData() .NotAssignableTo() .NotInfoOf(TypeInfoFilter.ValueType) .NotAssignableTo() - .NotInNamespaces("JetBrains.Annotations") + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") ) ); // yield return TestMethod(z => z.FromAssemblies().GetTypes(x => x.NotInfoOf(TypeInfoFilter.Nested).NotAssignableTo().NotInNamespaces("JetBrains.Annotations"))); @@ -142,7 +205,8 @@ public static IEnumerable GetTypesData() .NotAssignableTo() .NotInfoOf(TypeInfoFilter.Sealed) .NotAssignableTo() - .NotInNamespaces("JetBrains.Annotations") + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") ) ); yield return TestMethod( @@ -154,7 +218,8 @@ public static IEnumerable GetTypesData() .NotAssignableTo() .NotInfoOf(TypeInfoFilter.GenericType) .NotAssignableTo() - .NotInNamespaces("JetBrains.Annotations") + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") ) ); #pragma warning disable CA2263 @@ -162,14 +227,26 @@ public static IEnumerable GetTypesData() z => z .FromAssemblies() .NotFromAssemblyOf() - .GetTypes(x => x.NotAssignableTo().WithAttribute(typeof(EditorBrowsableAttribute))) + .GetTypes( + x => x + .NotAssignableTo() + .WithAttribute(typeof(EditorBrowsableAttribute)) + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") + ) ); #pragma warning restore CA2263 yield return TestMethod( z => z .FromAssemblies() .NotFromAssemblyOf() - .GetTypes(x => x.NotAssignableTo().WithAttribute()) + .GetTypes( + x => x + .NotAssignableTo() + .WithAttribute() + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") + ) ); yield return TestMethod( z => z @@ -179,6 +256,8 @@ public static IEnumerable GetTypesData() x => x .NotAssignableTo() .WithAttribute(typeof(System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute).FullName) + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") ) ); #pragma warning disable CA2263 @@ -191,7 +270,8 @@ public static IEnumerable GetTypesData() .NotAssignableTo() .WithoutAttribute(typeof(EditorBrowsableAttribute)) .NotAssignableTo(typeof(Attribute)) - .NotInNamespaces("JetBrains.Annotations") + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") ) ); #pragma warning restore CA2263 @@ -204,7 +284,8 @@ public static IEnumerable GetTypesData() .NotAssignableTo() .WithoutAttribute() .NotAssignableTo() - .NotInNamespaces("JetBrains.Annotations") + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") ) ); // yield return TestMethod(z => z.FromAssemblies().FromAssemblyOf().GetTypes(x => x.WithoutAttribute(typeof(JetBrains.Annotations.PublicAPIAttribute).FullName).NotAssignableTo().NotInNamespaces("JetBrains.Annotations"))); @@ -212,19 +293,37 @@ public static IEnumerable GetTypesData() z => z .FromAssemblies() .NotFromAssemblyOf() - .GetTypes(x => x.NotAssignableTo().InNamespaceOf(typeof(ServiceCollectionServiceExtensions))) + .GetTypes( + x => x + .NotAssignableTo() + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .InNamespaceOf(typeof(ServiceCollectionServiceExtensions)) + .NotStartsWith("Polyfill") + ) ); yield return TestMethod( z => z .FromAssemblies() .NotFromAssemblyOf() - .GetTypes(x => x.NotAssignableTo().InNamespaceOf()) + .GetTypes( + x => x + .NotAssignableTo() + .InNamespaceOf() + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") + ) ); yield return TestMethod( z => z .FromAssemblies() .NotFromAssemblyOf() - .GetTypes(x => x.NotAssignableTo().InNamespaces("Microsoft.Extensions.DependencyInjection")) + .GetTypes( + x => x + .NotAssignableTo() + .InNamespaces("Microsoft.Extensions.DependencyInjection") + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") + ) ); yield return TestMethod( z => z @@ -232,7 +331,10 @@ public static IEnumerable GetTypesData() .NotFromAssemblyOf() .GetTypes( true, - x => x.NotAssignableTo().NotInNamespaces("JetBrains.Annotations") + x => x + .NotAssignableTo() + .NotInNamespaces("JetBrains.Annotations", "Polyfills", "System") + .NotStartsWith("Polyfill") ) ); @@ -244,12 +346,16 @@ static object[] TestMethod( { // TODO: REmove this once tests pass // .Replace("\r", "").Replace("\n", "") + argument = argument + .Replace(".NotInNamespaces(\"JetBrains.Annotations\", \"Polyfills\", \"System\")", "") + .Replace(".NotInNamespaces(\"JetBrains.Annotations\")", "") + .Replace(".NotStartsWith(\"Polyfills\")", ""); var typeName = argument[( argument.LastIndexOf("=> x") + 5 )..^1] - .Split(new[] { '\r', '\n', }, StringSplitOptions.RemoveEmptyEntries) + .Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries) .Select(z => z.Trim()) .Aggregate("", (x, y) => x + y) .Trim(); - return [new GetTypesItem(typeName, argument, func),]; + return [new GetTypesItem(typeName, argument, func)]; } } diff --git a/test/DependencyInjection.Analyzers.Tests/Rocket.Surgery.DependencyInjection.Analyzers.Tests.csproj b/test/DependencyInjection.Analyzers.Tests/Rocket.Surgery.DependencyInjection.Analyzers.Tests.csproj index df0485301..0b0bc7adb 100644 --- a/test/DependencyInjection.Analyzers.Tests/Rocket.Surgery.DependencyInjection.Analyzers.Tests.csproj +++ b/test/DependencyInjection.Analyzers.Tests/Rocket.Surgery.DependencyInjection.Analyzers.Tests.csproj @@ -1,6 +1,6 @@  - net8.0;net9.0 + net9.0 diff --git a/test/DependencyInjection.Analyzers.Tests/StaticScanning_WithAssemblyLoadTests.cs b/test/DependencyInjection.Analyzers.Tests/StaticScanning_WithAssemblyLoadTests.cs index 0a58b4564..c415d6897 100644 --- a/test/DependencyInjection.Analyzers.Tests/StaticScanning_WithAssemblyLoadTests.cs +++ b/test/DependencyInjection.Analyzers.Tests/StaticScanning_WithAssemblyLoadTests.cs @@ -1938,6 +1938,140 @@ static IServiceCollection LoadServices() await Verify(new GeneratorTestResultsWithServices(result, services)).UseParameters(className, useTypeof, expectedCount); } + + [Theory] + [InlineData("ServiceA", false, 2)] + [InlineData("ServiceB", false, 0)] + [InlineData("ServiceC", false, 1)] + [InlineData("ServiceA", true, 2)] + [InlineData("ServiceB", true, 0)] + [InlineData("ServiceC", true, 1)] + public async Task Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes(string className, bool useTypeof, int expectedCount) + { + var dependencies = new List(); + + static async Task CreateRoot( + AssemblyLoadContext context, + ILogger logger, + params GeneratorTestResults[] dependencies + ) + { + var generator = await GeneratorTestContextBuilder + .Create() + .WithProjectName("RootDependencyProject") + .WithAssemblyLoadContext(context) + .WithLogger(logger) + .AddCompilationReferences(dependencies) + .AddSources( + @" +namespace RootDependencyProject +{ + public interface IService { } +} +" + ) + .Build() + .GenerateAsync(); + generator.AssertCompilationWasSuccessful(); + generator.AssertGenerationWasSuccessful(); + return generator; + } + + static async Task CreateServiceDependency( + AssemblyLoadContext context, + ILogger logger, + string suffix, + params GeneratorTestResults[] dependencies + ) + { + var additionalCode = dependencies + .Where(z => z.FinalCompilation.AssemblyName?.StartsWith("DependencyProject") == true) + .Select( + z => + $"class HardReference{z.FinalCompilation.AssemblyName?.Substring(z.FinalCompilation.AssemblyName.Length - 1)} : {z.FinalCompilation.AssemblyName + ".Service" + z.FinalCompilation.AssemblyName?.Substring(z.FinalCompilation.AssemblyName.Length - 1)} {{ }}" + ); + var dep = await GeneratorTestContextBuilder + .Create() + .WithProjectName("DependencyProject" + suffix) + .WithAssemblyLoadContext(context) + .WithLogger(logger) + .AddCompilationReferences(dependencies) + .AddSources( + $$""" + + namespace DependencyProject{{suffix}} + { + {{string.Join("\n", additionalCode)}} + public class Service{{suffix}} : RootDependencyProject.IService { } + } + + """ + ) + .Build() + .GenerateAsync(); + return dep; + } + + var root = await CreateRoot(AssemblyLoadContext, Logger); + var dependencyA = await CreateServiceDependency(AssemblyLoadContext, Logger, "A", root); + var dependencyB = await CreateServiceDependency(AssemblyLoadContext, Logger, "B", root); + var dependencyC = await CreateServiceDependency(AssemblyLoadContext, Logger, "C", dependencyA, root); + var dependencyD = await CreateServiceDependency( + AssemblyLoadContext, + Logger, + "D", + dependencyA, + dependencyC, + root + ); + dependencies.Add(root); + dependencies.Add(dependencyA); + dependencies.Add(dependencyB); + dependencies.Add(dependencyC); + dependencies.Add(dependencyD); + + var result = await Builder + .AddSources( + $$""" + + + using Rocket.Surgery.DependencyInjection.Compiled; + using Microsoft.Extensions.DependencyInjection; + using RootDependencyProject; + using DependencyProjectA; + using DependencyProjectB; + using DependencyProjectC; + using DependencyProjectD; + + namespace TestProject + { + public static class Program + { + static void Main() { } + static IServiceCollection LoadServices() + { + var services = new ServiceCollection(); + var provider = typeof(Program).Assembly.GetCompiledTypeProvider(); + var types = provider.GetTypes(z => z + .FromAssemblyDependenciesOf{{( useTypeof ? $"(typeof({className}))" : $"<{className}>()" )}} + .AddClasses(x => x.AssignableTo(typeof(IService)), true) + ); + return services; + } + } + } + + """ + ) + .AddCompilationReferences(dependencies.ToArray()) + .Build() + .GenerateAsync(); + + + var services = StaticHelper.ExecuteStaticServiceCollectionMethod(result, "Program", "LoadServices"); + await Verify(new GeneratorTestResultsWithServices(result, services)).UseParameters(className, useTypeof, expectedCount); + } + private static class StaticHelper { public static IServiceCollection ExecuteStaticServiceCollectionMethod(Assembly? assembly, string className, string methodName) diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_03c355519de9bca1#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_03c355519de9bca1#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..2998aef24 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_03c355519de9bca1#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_03c355519de9bca1#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,50 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: lhTa8YfcaD7hGKATd3JHYQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.DebuggerDisableUserUnhandledExceptionsAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.ParamCollectionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_03c355519de9bca1.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_03c355519de9bca1.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..e7298fb88 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_03c355519de9bca1.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_03c355519de9bca1.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,39 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: lhTa8YfcaD7hGKATd3JHYQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_045c850fad9af7c4#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_045c850fad9af7c4#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..5bebac8b9 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_045c850fad9af7c4#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,68 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: eS27xWJvVJ7PQN9BPaLTCw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_045c850fad9af7c4.verified.txt similarity index 96% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_045c850fad9af7c4.verified.txt index 664f73d95..f780e7a8e 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8.verified.txt +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_045c850fad9af7c4.verified.txt @@ -7,7 +7,6 @@ compiled_scan_assembly_load: false }, References: [ - , Microsoft.Extensions.DependencyInjection.Abstractions.dll, Microsoft.Extensions.DependencyInjection.Abstractions.dll, Microsoft.Extensions.DependencyInjection.Abstractions.dll, diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_06a071577772608c.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_06a071577772608c.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..8ca5fef82 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_06a071577772608c.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,106 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: rcuSlEEn8YrpT5nvx3WlJA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_06a071577772608c.DotNet8_0.verified.txt similarity index 96% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.DotNet8_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_06a071577772608c.DotNet8_0.verified.txt index 664f73d95..f780e7a8e 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.DotNet8_0.verified.txt +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_06a071577772608c.DotNet8_0.verified.txt @@ -7,7 +7,6 @@ compiled_scan_assembly_load: false }, References: [ - , Microsoft.Extensions.DependencyInjection.Abstractions.dll, Microsoft.Extensions.DependencyInjection.Abstractions.dll, Microsoft.Extensions.DependencyInjection.Abstractions.dll, diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_06a071577772608c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_06a071577772608c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..6fba61d4c --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_06a071577772608c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,99 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: rcuSlEEn8YrpT5nvx3WlJA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_06a071577772608c.DotNet9_0.verified.txt similarity index 96% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.DotNet9_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_06a071577772608c.DotNet9_0.verified.txt index 664f73d95..f780e7a8e 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.DotNet9_0.verified.txt +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_06a071577772608c.DotNet9_0.verified.txt @@ -7,7 +7,6 @@ compiled_scan_assembly_load: false }, References: [ - , Microsoft.Extensions.DependencyInjection.Abstractions.dll, Microsoft.Extensions.DependencyInjection.Abstractions.dll, Microsoft.Extensions.DependencyInjection.Abstractions.dll, diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_078afd0e857a1ed5.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_078afd0e857a1ed5.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..23bcf4a3e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_078afd0e857a1ed5.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,72 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: TMwjMiwUILpbGzPAc8P3Hg== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_078afd0e857a1ed5.DotNet8_0.verified.txt similarity index 96% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_078afd0e857a1ed5.DotNet8_0.verified.txt index 664f73d95..f780e7a8e 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.verified.txt +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_078afd0e857a1ed5.DotNet8_0.verified.txt @@ -7,7 +7,6 @@ compiled_scan_assembly_load: false }, References: [ - , Microsoft.Extensions.DependencyInjection.Abstractions.dll, Microsoft.Extensions.DependencyInjection.Abstractions.dll, Microsoft.Extensions.DependencyInjection.Abstractions.dll, diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_078afd0e857a1ed5.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_078afd0e857a1ed5.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..23bcf4a3e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_078afd0e857a1ed5.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,72 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: TMwjMiwUILpbGzPAc8P3Hg== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_078afd0e857a1ed5.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_078afd0e857a1ed5.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_078afd0e857a1ed5.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_083cff1abf521c31#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_083cff1abf521c31#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..ee2044af0 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_083cff1abf521c31#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,74 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: CwJsS0NlV7Y/SaXLnj/1yA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_083cff1abf521c31.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_083cff1abf521c31.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_083cff1abf521c31.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0c83367a72d40ca2#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0c83367a72d40ca2#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..b9bc20e85 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0c83367a72d40ca2#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,59 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ZeYaTHVOHFXsiFEpfgNBkQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0c83367a72d40ca2.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0c83367a72d40ca2.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..3e45afcdd --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0c83367a72d40ca2.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,70 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ZeYaTHVOHFXsiFEpfgNBkQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.DebuggerDisableUserUnhandledExceptionsAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.ParamCollectionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0c83367a72d40ca2.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0c83367a72d40ca2.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..b9bc20e85 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0c83367a72d40ca2.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,59 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ZeYaTHVOHFXsiFEpfgNBkQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0c83367a72d40ca2.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0c83367a72d40ca2.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0c83367a72d40ca2.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0d7d49fbb7506017#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0d7d49fbb7506017#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..a74e87ec3 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0d7d49fbb7506017#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,135 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: vBHwjME5K+2NcD2dMn6sFg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0d7d49fbb7506017.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0d7d49fbb7506017.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..ba67a7238 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0d7d49fbb7506017.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,139 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: vBHwjME5K+2NcD2dMn6sFg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0d7d49fbb7506017.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0d7d49fbb7506017.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_0d7d49fbb7506017.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1129ce9229d02dd5.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1129ce9229d02dd5.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..57660f4df --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1129ce9229d02dd5.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,68 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: k7CDux3YzPmtL3qN4ptU3g== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1129ce9229d02dd5.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1129ce9229d02dd5.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1129ce9229d02dd5.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1129ce9229d02dd5.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1129ce9229d02dd5.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..57660f4df --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1129ce9229d02dd5.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,68 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: k7CDux3YzPmtL3qN4ptU3g== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1129ce9229d02dd5.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1129ce9229d02dd5.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1129ce9229d02dd5.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_141829616ff025d4.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_11315e8262c1814e#Compiled_AssemblyProvider.g.verified.cs similarity index 94% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_141829616ff025d4.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_11315e8262c1814e#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..477b76269 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_141829616ff025d4.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_11315e8262c1814e#Compiled_AssemblyProvider.g.verified.cs @@ -8,6 +8,7 @@ using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_11315e8262c1814e.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_11315e8262c1814e.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_11315e8262c1814e.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1211ac9a15baa22f#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1211ac9a15baa22f#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..320b817ab --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1211ac9a15baa22f#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,124 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: pIYcObOpjvf/t/9xgDGTrA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1211ac9a15baa22f.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1211ac9a15baa22f.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..8948f3d19 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1211ac9a15baa22f.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,125 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: pIYcObOpjvf/t/9xgDGTrA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1211ac9a15baa22f.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1211ac9a15baa22f.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1211ac9a15baa22f.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_141829616ff025d4#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_141829616ff025d4#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..0ee166a8c 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_141829616ff025d4#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_141829616ff025d4#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,110 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 2JlV5LMDRDcCG/+Pxx++fg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_141829616ff025d4.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_141829616ff025d4.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..3b5afe572 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_141829616ff025d4.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_141829616ff025d4.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,109 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 2JlV5LMDRDcCG/+Pxx++fg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_145b5e0801ef10ba#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_145b5e0801ef10ba#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..6e486ab7f --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_145b5e0801ef10ba#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,74 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: rMEfhMzZKsC6mG1qP+UL3A== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_145b5e0801ef10ba.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_145b5e0801ef10ba.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_145b5e0801ef10ba.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_146b07ec6393d209#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_146b07ec6393d209#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..3a4c8d306 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_146b07ec6393d209#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_146b07ec6393d209#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,54 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: NZ38n6l0D57Eu/rCrQvuBA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_161228eb50a85da3#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_161228eb50a85da3#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..d648ae95d --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_161228eb50a85da3#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,43 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: b4MtHHgt/aetD89QJbZJQQ== + case 14: + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_161228eb50a85da3.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_161228eb50a85da3.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_161228eb50a85da3.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1668d89bf6fd1326#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1668d89bf6fd1326#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..1c5496656 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1668d89bf6fd1326#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,80 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: as8Y/QTKsymsYiqT73saFw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1668d89bf6fd1326.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1668d89bf6fd1326.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..553110860 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1668d89bf6fd1326.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,86 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: as8Y/QTKsymsYiqT73saFw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1668d89bf6fd1326.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1668d89bf6fd1326.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1668d89bf6fd1326.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1a7d29f451d95ce1.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1a7d29f451d95ce1.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..836ae49fd --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1a7d29f451d95ce1.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,74 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: FsLaFS3boNkSaDPhJcQNKg== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1a7d29f451d95ce1.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1a7d29f451d95ce1.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1a7d29f451d95ce1.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1a7d29f451d95ce1.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1a7d29f451d95ce1.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..836ae49fd --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1a7d29f451d95ce1.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,74 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: FsLaFS3boNkSaDPhJcQNKg== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1a7d29f451d95ce1.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1a7d29f451d95ce1.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1a7d29f451d95ce1.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1ee648d8766d7e85#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1ee648d8766d7e85#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..604eed0d6 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1ee648d8766d7e85#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,99 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: AuN1Nr/0VyPnnQZnSz09Yw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1ee648d8766d7e85.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1ee648d8766d7e85.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..995879b2c --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1ee648d8766d7e85.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,106 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: AuN1Nr/0VyPnnQZnSz09Yw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1ee648d8766d7e85.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1ee648d8766d7e85.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1ee648d8766d7e85.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_03c355519de9bca1#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1f92ee0c14f44e5a.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_03c355519de9bca1#Compiled_AssemblyProvider.g.verified.cs rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1f92ee0c14f44e5a.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1f92ee0c14f44e5a.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1f92ee0c14f44e5a.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_1f92ee0c14f44e5a.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20156756dd8a3625#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20156756dd8a3625#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..7ec2ecae6 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20156756dd8a3625#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,77 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: JWFH+8HRGIXXM8HNT/9toQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20156756dd8a3625.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20156756dd8a3625.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..8165d7d3c --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20156756dd8a3625.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,82 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: JWFH+8HRGIXXM8HNT/9toQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20156756dd8a3625.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20156756dd8a3625.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20156756dd8a3625.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2035ef1b62ca9f42.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2035ef1b62ca9f42.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..782c2dce0 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2035ef1b62ca9f42.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,125 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: JxHUoQhq0jyMPZ5AYlwmXQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2035ef1b62ca9f42.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2035ef1b62ca9f42.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2035ef1b62ca9f42.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2035ef1b62ca9f42.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2035ef1b62ca9f42.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..e90bfb2b9 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2035ef1b62ca9f42.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,124 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: JxHUoQhq0jyMPZ5AYlwmXQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2035ef1b62ca9f42.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2035ef1b62ca9f42.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2035ef1b62ca9f42.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20bbcb4061a6a340.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20bbcb4061a6a340.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..278f366e4 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20bbcb4061a6a340.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,84 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: c1XHzPLn8+EK0NxUCMxctQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20bbcb4061a6a340.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20bbcb4061a6a340.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20bbcb4061a6a340.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20bbcb4061a6a340.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20bbcb4061a6a340.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..67e42ccec --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20bbcb4061a6a340.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,80 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: c1XHzPLn8+EK0NxUCMxctQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20bbcb4061a6a340.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20bbcb4061a6a340.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_20bbcb4061a6a340.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_22679920d22b2da1#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_22679920d22b2da1#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..6726eb23f --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_22679920d22b2da1#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,59 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: L3EqMKC3QIWZqjBbB5fvYA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_22679920d22b2da1.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_22679920d22b2da1.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..144c9f07d --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_22679920d22b2da1.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,70 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: L3EqMKC3QIWZqjBbB5fvYA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.DebuggerDisableUserUnhandledExceptionsAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.ParamCollectionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_22679920d22b2da1.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_22679920d22b2da1.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_22679920d22b2da1.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2395cf87db1cb42e.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2395cf87db1cb42e.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..04a06c00f --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2395cf87db1cb42e.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,130 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: RSrTWcDn9pZ0rkq0TzCXSQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2395cf87db1cb42e.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2395cf87db1cb42e.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2395cf87db1cb42e.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2395cf87db1cb42e.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2395cf87db1cb42e.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..105abe2e2 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2395cf87db1cb42e.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,129 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: RSrTWcDn9pZ0rkq0TzCXSQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2395cf87db1cb42e.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2395cf87db1cb42e.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2395cf87db1cb42e.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_25092a19e44f0c52#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_25092a19e44f0c52#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..f2214b80b --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_25092a19e44f0c52#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,129 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 6fwuY474FnHPVCB6wnKCmg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_25092a19e44f0c52.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_25092a19e44f0c52.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..307bf097e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_25092a19e44f0c52.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,130 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 6fwuY474FnHPVCB6wnKCmg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_25092a19e44f0c52.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_25092a19e44f0c52.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_25092a19e44f0c52.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_26d3e6246b14cef4#Compiled_AssemblyProvider.g.verified.cs similarity index 94% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209#Compiled_AssemblyProvider.g.verified.cs rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_26d3e6246b14cef4#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..477b76269 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_26d3e6246b14cef4#Compiled_AssemblyProvider.g.verified.cs @@ -8,6 +8,7 @@ using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_26d3e6246b14cef4.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_26d3e6246b14cef4.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_26d3e6246b14cef4.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28265efecc5180e3#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28265efecc5180e3#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..d3f9e9e51 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28265efecc5180e3#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28265efecc5180e3#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,54 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: JurAXo8wgRFY6Q+Vce2hBg== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28ca7200653c373a.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28ca7200653c373a.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..e4ae2a8c1 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28ca7200653c373a.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,74 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: didwKw8khT5w27kel8sriA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28ca7200653c373a.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28ca7200653c373a.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28ca7200653c373a.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28ca7200653c373a.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28ca7200653c373a.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..e4ae2a8c1 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28ca7200653c373a.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,74 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: didwKw8khT5w27kel8sriA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28ca7200653c373a.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28ca7200653c373a.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_28ca7200653c373a.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_29649d997b2fa953.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_29649d997b2fa953.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..1695364e2 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_29649d997b2fa953.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,113 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 2WD0THDVjzQTlzMgVkYOFQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_29649d997b2fa953.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_29649d997b2fa953.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_29649d997b2fa953.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_29649d997b2fa953.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_29649d997b2fa953.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..40a71c6c8 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_29649d997b2fa953.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,110 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 2WD0THDVjzQTlzMgVkYOFQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_29649d997b2fa953.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_29649d997b2fa953.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_29649d997b2fa953.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2c3ac0e1e29616d0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs similarity index 94% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2c3ac0e1e29616d0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..477b76269 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2c3ac0e1e29616d0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -8,6 +8,7 @@ using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2c3ac0e1e29616d0.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2c3ac0e1e29616d0.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2c3ac0e1e29616d0.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2c3ac0e1e29616d0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs similarity index 94% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2c3ac0e1e29616d0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..477b76269 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2c3ac0e1e29616d0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -8,6 +8,7 @@ using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2c3ac0e1e29616d0.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2c3ac0e1e29616d0.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_2c3ac0e1e29616d0.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_36cb6457cb60920b#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_36cb6457cb60920b#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..477b76269 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_36cb6457cb60920b#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,32 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_36cb6457cb60920b.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_36cb6457cb60920b.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_36cb6457cb60920b.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3808ccf98716c94a.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3808ccf98716c94a.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..160d65f3f --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3808ccf98716c94a.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,86 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: tT87WilB+D/hSxbn1yf65Q== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3808ccf98716c94a.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3808ccf98716c94a.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3808ccf98716c94a.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3808ccf98716c94a.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3808ccf98716c94a.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..596c3eb7a --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3808ccf98716c94a.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,84 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: tT87WilB+D/hSxbn1yf65Q== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3808ccf98716c94a.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3808ccf98716c94a.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3808ccf98716c94a.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_38688ee81c4529e6.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_38688ee81c4529e6.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..853ffc9b4 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_38688ee81c4529e6.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,105 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: T5S4SLowxulxZKBRMyNEPw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_38688ee81c4529e6.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_38688ee81c4529e6.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_38688ee81c4529e6.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_38688ee81c4529e6.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_38688ee81c4529e6.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..6463ee999 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_38688ee81c4529e6.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,99 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: T5S4SLowxulxZKBRMyNEPw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_38688ee81c4529e6.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_38688ee81c4529e6.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_38688ee81c4529e6.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3b1c571ee675a0ae#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3b1c571ee675a0ae#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..0030f32e4 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3b1c571ee675a0ae#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,99 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: Tva6Iiozfqrf3YYDAH3oiQ== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3b1c571ee675a0ae.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3b1c571ee675a0ae.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..85c958009 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3b1c571ee675a0ae.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,106 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: Tva6Iiozfqrf3YYDAH3oiQ== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3b1c571ee675a0ae.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3b1c571ee675a0ae.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..0030f32e4 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3b1c571ee675a0ae.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,99 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: Tva6Iiozfqrf3YYDAH3oiQ== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3b1c571ee675a0ae.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3b1c571ee675a0ae.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3b1c571ee675a0ae.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3df7a18d6dd88d31#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3df7a18d6dd88d31#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..27779b6e7 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3df7a18d6dd88d31#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,135 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: VqF62GCF/7GKdRYi6tMemw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3df7a18d6dd88d31.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3df7a18d6dd88d31.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..145359812 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3df7a18d6dd88d31.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,139 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: VqF62GCF/7GKdRYi6tMemw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3df7a18d6dd88d31.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3df7a18d6dd88d31.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..27779b6e7 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3df7a18d6dd88d31.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,135 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: VqF62GCF/7GKdRYi6tMemw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3df7a18d6dd88d31.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3df7a18d6dd88d31.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_3df7a18d6dd88d31.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_428841cb7ac33ede#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_428841cb7ac33ede#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..835dcb181 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_428841cb7ac33ede#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,72 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 5/sTgcnn6kTuXbERnHITOQ== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_428841cb7ac33ede.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_428841cb7ac33ede.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..751a36e17 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_428841cb7ac33ede.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,73 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 5/sTgcnn6kTuXbERnHITOQ== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_428841cb7ac33ede.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_428841cb7ac33ede.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_428841cb7ac33ede.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_43de755e364c78bc#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_43de755e364c78bc#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..3a4c8d306 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_43de755e364c78bc#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,74 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: NZ38n6l0D57Eu/rCrQvuBA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_43de755e364c78bc.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_43de755e364c78bc.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_43de755e364c78bc.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_450737c8a65ab9e3.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_450737c8a65ab9e3.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..f35a116e0 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_450737c8a65ab9e3.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,139 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: YFPE1APzqd5sSSj+Bnr1cw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_450737c8a65ab9e3.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_450737c8a65ab9e3.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_450737c8a65ab9e3.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_450737c8a65ab9e3.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_450737c8a65ab9e3.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..32fef5eb8 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_450737c8a65ab9e3.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,135 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: YFPE1APzqd5sSSj+Bnr1cw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_450737c8a65ab9e3.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_450737c8a65ab9e3.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_450737c8a65ab9e3.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4517392f877754b5#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4517392f877754b5#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..73fe4f9f8 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4517392f877754b5#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,112 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: K57vOwMsm9Byn8CKS+FTpQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4517392f877754b5.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4517392f877754b5.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..c29f7d2e1 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4517392f877754b5.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,121 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: K57vOwMsm9Byn8CKS+FTpQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.DebuggerDisableUserUnhandledExceptionsAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.ParamCollectionAttribute"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4517392f877754b5.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4517392f877754b5.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..73fe4f9f8 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4517392f877754b5.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,112 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: K57vOwMsm9Byn8CKS+FTpQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4517392f877754b5.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4517392f877754b5.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4517392f877754b5.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_47c14aae91c58f09#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_47c14aae91c58f09#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..ef5d3c031 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_47c14aae91c58f09#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,68 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: Hs7ENtG1yCkeg60PjMakyw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_47c14aae91c58f09.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_47c14aae91c58f09.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_47c14aae91c58f09.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4a53e3735a14644c#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4a53e3735a14644c#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..1c3429f13 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4a53e3735a14644c#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,43 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: tSLXJ0cfKklFtUqVzYXidQ== + case 14: + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4a53e3735a14644c.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4a53e3735a14644c.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4a53e3735a14644c.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4f3f5fedab675dd3#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4f3f5fedab675dd3#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..b466060df --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4f3f5fedab675dd3#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,110 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: RqIJsJz2PfqABF2CDhhSpw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4f3f5fedab675dd3.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4f3f5fedab675dd3.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..ac7fbf80c --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4f3f5fedab675dd3.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,113 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: RqIJsJz2PfqABF2CDhhSpw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4f3f5fedab675dd3.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4f3f5fedab675dd3.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_4f3f5fedab675dd3.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55858fb85d2e8612.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55858fb85d2e8612.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..5def313b5 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55858fb85d2e8612.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,109 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ktu4kRrNVfB2whPNICv8fw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55858fb85d2e8612.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55858fb85d2e8612.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55858fb85d2e8612.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55858fb85d2e8612.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55858fb85d2e8612.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..16c66679e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55858fb85d2e8612.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,108 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ktu4kRrNVfB2whPNICv8fw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55858fb85d2e8612.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55858fb85d2e8612.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55858fb85d2e8612.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55d22057a6e6d116.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55d22057a6e6d116.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..0b89588b5 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55d22057a6e6d116.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,122 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: uMiqumBRVuHhwKb7LQkpbQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55d22057a6e6d116.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55d22057a6e6d116.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55d22057a6e6d116.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55d22057a6e6d116.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55d22057a6e6d116.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..14980686c --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55d22057a6e6d116.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,120 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: uMiqumBRVuHhwKb7LQkpbQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55d22057a6e6d116.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55d22057a6e6d116.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_55d22057a6e6d116.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_57ddcba0db4aaa6d#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_57ddcba0db4aaa6d#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..553110860 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_57ddcba0db4aaa6d#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_57ddcba0db4aaa6d#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,66 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: as8Y/QTKsymsYiqT73saFw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_57ddcba0db4aaa6d.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_57ddcba0db4aaa6d.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..1c5496656 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_57ddcba0db4aaa6d.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_57ddcba0db4aaa6d.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,60 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: as8Y/QTKsymsYiqT73saFw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5a7482d76f466af2.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5a7482d76f466af2.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..35359214e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5a7482d76f466af2.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,73 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: p84J9j5Tz30B14TuBXebpA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5a7482d76f466af2.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5a7482d76f466af2.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5a7482d76f466af2.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5a7482d76f466af2.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5a7482d76f466af2.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..7f3ae1808 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5a7482d76f466af2.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,72 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: p84J9j5Tz30B14TuBXebpA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5a7482d76f466af2.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5a7482d76f466af2.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5a7482d76f466af2.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5b7c070c928bc866#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5b7c070c928bc866#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..4ee200e0b --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5b7c070c928bc866#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,49 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: c7dI3AsQzkJRqn7AahFRoA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5b7c070c928bc866.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5b7c070c928bc866.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..a4f94992f --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5b7c070c928bc866.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,55 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: c7dI3AsQzkJRqn7AahFRoA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5b7c070c928bc866.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5b7c070c928bc866.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5b7c070c928bc866.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5c75b81960d6f160.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5c75b81960d6f160.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..770f9bd31 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5c75b81960d6f160.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,68 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: Bm0mx1gHfZqlk7f/0XRvKA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5c75b81960d6f160.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5c75b81960d6f160.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5c75b81960d6f160.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5c75b81960d6f160.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5c75b81960d6f160.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..770f9bd31 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5c75b81960d6f160.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,68 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: Bm0mx1gHfZqlk7f/0XRvKA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5c75b81960d6f160.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5c75b81960d6f160.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5c75b81960d6f160.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5df73d00c047618b#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5df73d00c047618b#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..2fe1ef3ab --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5df73d00c047618b#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,80 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: sfTW6oerYNIv/4Isq6qunA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5df73d00c047618b.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5df73d00c047618b.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..1ace76e10 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5df73d00c047618b.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,86 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: sfTW6oerYNIv/4Isq6qunA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5df73d00c047618b.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5df73d00c047618b.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..2fe1ef3ab --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5df73d00c047618b.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,80 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: sfTW6oerYNIv/4Isq6qunA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5df73d00c047618b.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5df73d00c047618b.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_5df73d00c047618b.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6926e08a146fa282.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6926e08a146fa282.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..b42b179f6 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6926e08a146fa282.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,81 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: Cu0BgX8SSXDuqQ6WPpRzeg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6926e08a146fa282.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6926e08a146fa282.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6926e08a146fa282.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6926e08a146fa282.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6926e08a146fa282.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..6f9dcba76 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6926e08a146fa282.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,77 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: Cu0BgX8SSXDuqQ6WPpRzeg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6926e08a146fa282.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6926e08a146fa282.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6926e08a146fa282.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6f3450b65e57698c#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6f3450b65e57698c#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..fc1445de8 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6f3450b65e57698c#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6f3450b65e57698c#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,53 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 4NoScwJSnwDs2efx8zADEg== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6f3450b65e57698c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6f3450b65e57698c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..0db0b7b57 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6f3450b65e57698c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_6f3450b65e57698c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,52 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 4NoScwJSnwDs2efx8zADEg== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_703e74255cc4f0b1#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_703e74255cc4f0b1#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..93cc17688 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_703e74255cc4f0b1#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,83 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ksUFVWGt+rC9fD4EsP49lw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_703e74255cc4f0b1.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_703e74255cc4f0b1.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..4c740278a --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_703e74255cc4f0b1.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,85 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ksUFVWGt+rC9fD4EsP49lw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_703e74255cc4f0b1.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_703e74255cc4f0b1.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..93cc17688 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_703e74255cc4f0b1.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,83 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ksUFVWGt+rC9fD4EsP49lw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_703e74255cc4f0b1.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_703e74255cc4f0b1.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_703e74255cc4f0b1.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72848d8189470daa#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72848d8189470daa#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..c2ddf2d4e 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72848d8189470daa#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72848d8189470daa#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,86 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: igKG8nuUMZw1mOJMT+quoA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72848d8189470daa.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72848d8189470daa.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..6ec52be55 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72848d8189470daa.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72848d8189470daa.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -8,6 +8,7 @@ using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,7 +20,74 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: igKG8nuUMZw1mOJMT+quoA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72bde1fb3d7291c8#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72bde1fb3d7291c8#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..8165d7d3c 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72bde1fb3d7291c8#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72bde1fb3d7291c8#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,62 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: JWFH+8HRGIXXM8HNT/9toQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72bde1fb3d7291c8.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72bde1fb3d7291c8.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..7ec2ecae6 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72bde1fb3d7291c8.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_72bde1fb3d7291c8.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,57 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: JWFH+8HRGIXXM8HNT/9toQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_734eb3f00eb15ed6#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_734eb3f00eb15ed6#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..b6e3c23c4 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_734eb3f00eb15ed6#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_734eb3f00eb15ed6#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,35 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 0kCP5eeys8Ex/Ocyi7g9PA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_734eb3f00eb15ed6.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_734eb3f00eb15ed6.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..009c0038b 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_734eb3f00eb15ed6.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_734eb3f00eb15ed6.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,29 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 0kCP5eeys8Ex/Ocyi7g9PA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_763668f8961ad371#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_763668f8961ad371#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..8371ee638 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_763668f8961ad371#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_763668f8961ad371#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,102 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: gDKiD/0Y+jJf/fdEmigsjw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.DebuggerDisableUserUnhandledExceptionsAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.ParamCollectionAttribute"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_763668f8961ad371.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_763668f8961ad371.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..57298bb20 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_763668f8961ad371.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_763668f8961ad371.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,93 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: gDKiD/0Y+jJf/fdEmigsjw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_784c9bb65ec79e96.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_784c9bb65ec79e96.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..5dbd54c24 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_784c9bb65ec79e96.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,96 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: DDX6a6RzF8tKjLggmh/8iw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_784c9bb65ec79e96.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_784c9bb65ec79e96.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_784c9bb65ec79e96.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_784c9bb65ec79e96.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_784c9bb65ec79e96.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..d6ef454e0 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_784c9bb65ec79e96.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,91 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: DDX6a6RzF8tKjLggmh/8iw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_784c9bb65ec79e96.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_784c9bb65ec79e96.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_784c9bb65ec79e96.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7a43428f590c35ff.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7a43428f590c35ff.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..8ea03acf5 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7a43428f590c35ff.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,53 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 2CHNBFiHMCJGtcNOhDCwWA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7a43428f590c35ff.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7a43428f590c35ff.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7a43428f590c35ff.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7a43428f590c35ff.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7a43428f590c35ff.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..6c2044088 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7a43428f590c35ff.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,49 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 2CHNBFiHMCJGtcNOhDCwWA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7a43428f590c35ff.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7a43428f590c35ff.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7a43428f590c35ff.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7c5b8c8f31140960#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7c5b8c8f31140960#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..8d0069970 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7c5b8c8f31140960#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,99 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 7bki+sS/gYUlLu0MCgO3Dw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7c5b8c8f31140960.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7c5b8c8f31140960.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..be1d62dac --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7c5b8c8f31140960.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,106 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 7bki+sS/gYUlLu0MCgO3Dw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7c5b8c8f31140960.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7c5b8c8f31140960.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..8d0069970 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7c5b8c8f31140960.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,99 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 7bki+sS/gYUlLu0MCgO3Dw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7c5b8c8f31140960.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7c5b8c8f31140960.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7c5b8c8f31140960.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7d485025b2e88911#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7d485025b2e88911#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..f052c5a37 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7d485025b2e88911#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,77 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: KfNfzUy4I4X20FR8UQaG/g== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7d485025b2e88911.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7d485025b2e88911.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..e91cd3968 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7d485025b2e88911.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,82 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: KfNfzUy4I4X20FR8UQaG/g== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7d485025b2e88911.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7d485025b2e88911.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..f052c5a37 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7d485025b2e88911.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,77 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: KfNfzUy4I4X20FR8UQaG/g== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7d485025b2e88911.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7d485025b2e88911.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7d485025b2e88911.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7f8ddfb08959e456#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7f8ddfb08959e456#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..d648ae95d 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7f8ddfb08959e456#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_7f8ddfb08959e456#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,23 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: b4MtHHgt/aetD89QJbZJQQ== + case 14: + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_863c50a32b59c7a0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_863c50a32b59c7a0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..83a090275 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_863c50a32b59c7a0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,135 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: KTQC33lehicKdetD5YhMpg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_863c50a32b59c7a0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_863c50a32b59c7a0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..e66651ef9 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_863c50a32b59c7a0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,139 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: KTQC33lehicKdetD5YhMpg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_863c50a32b59c7a0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_863c50a32b59c7a0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..83a090275 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_863c50a32b59c7a0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,135 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: KTQC33lehicKdetD5YhMpg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_863c50a32b59c7a0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_863c50a32b59c7a0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_863c50a32b59c7a0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_86e0f2289a55286f#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_86e0f2289a55286f#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..df19860df 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_86e0f2289a55286f#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_86e0f2289a55286f#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,119 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: AEWQuFdM13HswiG65h36Pg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_86e0f2289a55286f.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_86e0f2289a55286f.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..9cd0a7561 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_86e0f2289a55286f.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_86e0f2289a55286f.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,115 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: AEWQuFdM13HswiG65h36Pg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_892ae06cc9699210.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_892ae06cc9699210.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..610ff79f5 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_892ae06cc9699210.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,74 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 3lpkHw6d5kzkiOhiA5AkyA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_892ae06cc9699210.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_892ae06cc9699210.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_892ae06cc9699210.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_892ae06cc9699210.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_892ae06cc9699210.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..610ff79f5 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_892ae06cc9699210.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,74 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 3lpkHw6d5kzkiOhiA5AkyA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_892ae06cc9699210.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_892ae06cc9699210.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_892ae06cc9699210.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8c7b710b3fa6db33.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8c7b710b3fa6db33.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..abb5a951c --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8c7b710b3fa6db33.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,104 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: S3FUwPM3Qx/hp87Izmjwtg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.DebuggerDisableUserUnhandledExceptionsAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.ParamCollectionAttribute"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8c7b710b3fa6db33.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8c7b710b3fa6db33.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8c7b710b3fa6db33.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8c7b710b3fa6db33.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8c7b710b3fa6db33.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..7560c1f7b --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8c7b710b3fa6db33.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,97 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: S3FUwPM3Qx/hp87Izmjwtg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8c7b710b3fa6db33.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8c7b710b3fa6db33.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8c7b710b3fa6db33.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8f986db57b0b1bf9#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8f986db57b0b1bf9#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..c92db695d 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8f986db57b0b1bf9#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8f986db57b0b1bf9#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,119 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: QycbcYuxTZY69eN5pNZx+w== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8f986db57b0b1bf9.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8f986db57b0b1bf9.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..ec267228e 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8f986db57b0b1bf9.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_8f986db57b0b1bf9.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,115 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: QycbcYuxTZY69eN5pNZx+w== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9a3f944bc7a51d79.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9a3f944bc7a51d79.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..cfcd37e61 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9a3f944bc7a51d79.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,122 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: /5WmI2jqK9ED2bmRWUno1w== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9a3f944bc7a51d79.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9a3f944bc7a51d79.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9a3f944bc7a51d79.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9a3f944bc7a51d79.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9a3f944bc7a51d79.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..947c1c4e3 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9a3f944bc7a51d79.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,120 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: /5WmI2jqK9ED2bmRWUno1w== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9a3f944bc7a51d79.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9a3f944bc7a51d79.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9a3f944bc7a51d79.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9c5fdc7be9225b36.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9c5fdc7be9225b36.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..0e911579f --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9c5fdc7be9225b36.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,106 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: KRPhxtGyloatqaQb5DM2KA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9c5fdc7be9225b36.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9c5fdc7be9225b36.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9c5fdc7be9225b36.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9c5fdc7be9225b36.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9c5fdc7be9225b36.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..262a4db4b --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9c5fdc7be9225b36.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,99 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: KRPhxtGyloatqaQb5DM2KA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9c5fdc7be9225b36.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9c5fdc7be9225b36.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9c5fdc7be9225b36.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9dd101fdbffaac0c#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9dd101fdbffaac0c#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..869a42e44 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9dd101fdbffaac0c#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,128 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: NgIE/lzM5dJ9GW6iVrtT3Q== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9dd101fdbffaac0c.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9dd101fdbffaac0c.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..a1b903ad5 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9dd101fdbffaac0c.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,129 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: NgIE/lzM5dJ9GW6iVrtT3Q== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9dd101fdbffaac0c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9dd101fdbffaac0c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..869a42e44 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9dd101fdbffaac0c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,128 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: NgIE/lzM5dJ9GW6iVrtT3Q== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9dd101fdbffaac0c.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9dd101fdbffaac0c.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9dd101fdbffaac0c.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9df98d690c3a3b30.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9df98d690c3a3b30.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..477b76269 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9df98d690c3a3b30.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,32 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9df98d690c3a3b30.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9df98d690c3a3b30.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9df98d690c3a3b30.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9df98d690c3a3b30.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9df98d690c3a3b30.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..477b76269 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9df98d690c3a3b30.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,32 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9df98d690c3a3b30.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9df98d690c3a3b30.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9df98d690c3a3b30.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9f19ddcba68d43e2#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9f19ddcba68d43e2#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..5270e60b1 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9f19ddcba68d43e2#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9f19ddcba68d43e2#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,93 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: myu2C5sumJkcGW7AJsUmDw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9f19ddcba68d43e2.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9f19ddcba68d43e2.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..0b8bbe681 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9f19ddcba68d43e2.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_9f19ddcba68d43e2.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,90 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: myu2C5sumJkcGW7AJsUmDw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_083cff1abf521c31#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_083cff1abf521c31#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..a6ad8a3bd --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_083cff1abf521c31#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,73 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: CwJsS0NlV7Y/SaXLnj/1yA== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_03c355519de9bca1.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_083cff1abf521c31.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_03c355519de9bca1.DotNet8_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_083cff1abf521c31.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_0c83367a72d40ca2#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_0c83367a72d40ca2#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..bce67d97d --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_0c83367a72d40ca2#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,58 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ZeYaTHVOHFXsiFEpfgNBkQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_03c355519de9bca1.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_0c83367a72d40ca2.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_03c355519de9bca1.DotNet9_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_0c83367a72d40ca2.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_03c355519de9bca1.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_11315e8262c1814e#Compiled_AssemblyProvider.g.verified.cs similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_03c355519de9bca1.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_11315e8262c1814e#Compiled_AssemblyProvider.g.verified.cs diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_03c355519de9bca1.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_11315e8262c1814e.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_03c355519de9bca1.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_11315e8262c1814e.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_03c355519de9bca1.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_26d3e6246b14cef4#Compiled_AssemblyProvider.g.verified.cs similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_03c355519de9bca1.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_26d3e6246b14cef4#Compiled_AssemblyProvider.g.verified.cs diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_141829616ff025d4.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_26d3e6246b14cef4.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_141829616ff025d4.DotNet8_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_26d3e6246b14cef4.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_141829616ff025d4#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_36cb6457cb60920b#Compiled_AssemblyProvider.g.verified.cs similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_141829616ff025d4#Compiled_AssemblyProvider.g.verified.cs rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_36cb6457cb60920b#Compiled_AssemblyProvider.g.verified.cs diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_141829616ff025d4.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_36cb6457cb60920b.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_141829616ff025d4.DotNet9_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_36cb6457cb60920b.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_3b1c571ee675a0ae#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_3b1c571ee675a0ae#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..f6a229252 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_3b1c571ee675a0ae#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,98 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: Tva6Iiozfqrf3YYDAH3oiQ== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_141829616ff025d4.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_3b1c571ee675a0ae.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_141829616ff025d4.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_3b1c571ee675a0ae.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_3df7a18d6dd88d31#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_3df7a18d6dd88d31#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..21293a697 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_3df7a18d6dd88d31#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,134 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: VqF62GCF/7GKdRYi6tMemw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_3df7a18d6dd88d31.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209.DotNet8_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_3df7a18d6dd88d31.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_4517392f877754b5#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_4517392f877754b5#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..8ab7411ae --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_4517392f877754b5#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,111 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: K57vOwMsm9Byn8CKS+FTpQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_4517392f877754b5.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209.DotNet9_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_4517392f877754b5.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_47c14aae91c58f09#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_47c14aae91c58f09#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..7fd6e7d97 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_47c14aae91c58f09#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,67 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: Hs7ENtG1yCkeg60PjMakyw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_47c14aae91c58f09.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_146b07ec6393d209.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_47c14aae91c58f09.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_5df73d00c047618b#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_5df73d00c047618b#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..be32c3f58 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_5df73d00c047618b#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,79 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: sfTW6oerYNIv/4Isq6qunA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_5df73d00c047618b.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3.DotNet8_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_5df73d00c047618b.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_703e74255cc4f0b1#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_703e74255cc4f0b1#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..2899a0dd6 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_703e74255cc4f0b1#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,82 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ksUFVWGt+rC9fD4EsP49lw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_703e74255cc4f0b1.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3.DotNet9_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_703e74255cc4f0b1.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_734eb3f00eb15ed6.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.DotNet8_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.DotNet8_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.DotNet9_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.DotNet9_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_763668f8961ad371.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7c5b8c8f31140960#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7c5b8c8f31140960#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..1d831ed7b --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7c5b8c8f31140960#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,98 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 7bki+sS/gYUlLu0MCgO3Dw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7c5b8c8f31140960.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_28265efecc5180e3.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7c5b8c8f31140960.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7d485025b2e88911#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7d485025b2e88911#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..6afa2e9fd --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7d485025b2e88911#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,76 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: KfNfzUy4I4X20FR8UQaG/g== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7d485025b2e88911.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d.DotNet8_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7d485025b2e88911.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.DotNet8_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.DotNet8_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.DotNet9_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.DotNet9_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_7f8ddfb08959e456.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_863c50a32b59c7a0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_863c50a32b59c7a0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..876391a98 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_863c50a32b59c7a0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,134 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: KTQC33lehicKdetD5YhMpg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_863c50a32b59c7a0.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d.DotNet9_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_863c50a32b59c7a0.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.DotNet8_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.DotNet8_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.DotNet9_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.DotNet9_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_86e0f2289a55286f.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.DotNet8_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.DotNet8_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.DotNet9_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.DotNet9_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_8f986db57b0b1bf9.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9dd101fdbffaac0c#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9dd101fdbffaac0c#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..9bf5a6f0e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9dd101fdbffaac0c#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,127 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: NgIE/lzM5dJ9GW6iVrtT3Q== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9dd101fdbffaac0c.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_57ddcba0db4aaa6d.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9dd101fdbffaac0c.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.DotNet8_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.DotNet8_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.DotNet9_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.DotNet9_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_9f19ddcba68d43e2.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a67adb649506a7aa#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a67adb649506a7aa#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..a43edf777 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a67adb649506a7aa#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,73 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: UUVsjiKdPxCv1RwULYWcog== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a67adb649506a7aa.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c.DotNet8_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a67adb649506a7aa.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.DotNet8_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.DotNet8_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.DotNet9_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.DotNet9_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_a7ef527fb7398faf.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_aeb252490b82e26d#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_aeb252490b82e26d#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..86c91ddeb --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_aeb252490b82e26d#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,108 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: grnrT2DhTaKAqIuAg3cQ/g== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_aeb252490b82e26d.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c.DotNet9_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_aeb252490b82e26d.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.DotNet8_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.DotNet8_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.DotNet9_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.DotNet9_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b542ee10fd876735.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.DotNet8_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.DotNet8_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.DotNet9_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.DotNet9_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b548dccfb9c1a07e.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.DotNet8_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.DotNet8_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.DotNet9_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.DotNet9_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_b9a99927a7915e80.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_141829616ff025d4.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_be16188a379f1a08#Compiled_AssemblyProvider.g.verified.cs similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_141829616ff025d4.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_be16188a379f1a08#Compiled_AssemblyProvider.g.verified.cs diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_be16188a379f1a08.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_6f3450b65e57698c.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_be16188a379f1a08.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.DotNet8_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.DotNet8_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.DotNet9_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.DotNet9_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca5e0f8d95796ced.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.DotNet8_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.DotNet8_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.DotNet9_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.DotNet9_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_ca9caf4b2e699215.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.DotNet8_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.DotNet8_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.DotNet9_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.DotNet9_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e0135c7abc5f4290.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.DotNet8_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.DotNet8_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs deleted file mode 100644 index ad924ea82..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ /dev/null @@ -1,31 +0,0 @@ -//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs -#nullable enable -#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -using System; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Rocket.Surgery.DependencyInjection; -using Rocket.Surgery.DependencyInjection.Compiled; - -[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] -[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] -file class CompiledTypeProvider : ICompiledTypeProvider -{ - IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) - { - yield break; - } - - Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) - { - return services; - } -} -#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 -#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.DotNet9_0.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.DotNet9_0.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.verified.txt deleted file mode 100644 index 664f73d95..000000000 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e03417dd7a712142.verified.txt +++ /dev/null @@ -1,25 +0,0 @@ -{ - FinalDiagnostics: [], - GeneratorDiagnostics: { - Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] - }, - GlobalOptions: { - compiled_scan_assembly_load: false - }, - References: [ - , - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - Microsoft.Extensions.DependencyInjection.Abstractions.dll, - mscorlib.dll, - netstandard.dll, - Rocket.Surgery.DependencyInjection.Extensions.dll, - System.ComponentModel.dll, - System.Core.dll, - System.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Private.CoreLib.dll, - System.Runtime.dll - ] -} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e2786d525725a326#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e2786d525725a326#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..60957949e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e2786d525725a326#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,71 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: IsnvbgbcMyzab/40ZSPPzw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e2786d525725a326.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa.DotNet8_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e2786d525725a326.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e56647b0fa615a27#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e56647b0fa615a27#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..b0105fad0 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e56647b0fa615a27#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,122 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: cMfR+usPOhjAk4ADMSy5mw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e56647b0fa615a27.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa.DotNet9_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e56647b0fa615a27.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e96ea585adc34658#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e96ea585adc34658#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..23ed04bc4 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e96ea585adc34658#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,113 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: qJCkIC7zmkHHl6XYJ5WLww== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e96ea585adc34658.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72848d8189470daa.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_e96ea585adc34658.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_f6580b78707577b9#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_f6580b78707577b9#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..519db28d5 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_f6580b78707577b9#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,73 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: t5HlfD67L8WnQWkP+pqGZw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_f6580b78707577b9.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8.DotNet8_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_f6580b78707577b9.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_fd014d5c4fe2fe2a#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_fd014d5c4fe2fe2a#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..aa4d50ffe --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_fd014d5c4fe2fe2a#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,48 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ht6tFys1dpK3QtElzFJ87w== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_fd014d5c4fe2fe2a.verified.txt similarity index 100% rename from test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_72bde1fb3d7291c8.DotNet9_0.verified.txt rename to test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_From_Another_Assembly_fd014d5c4fe2fe2a.verified.txt diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_a67adb649506a7aa#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_a67adb649506a7aa#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..2f5382d19 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_a67adb649506a7aa#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,74 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: UUVsjiKdPxCv1RwULYWcog== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_a67adb649506a7aa.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_a67adb649506a7aa.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_a67adb649506a7aa.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_a7ef527fb7398faf#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_a7ef527fb7398faf#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..96ef0f9a2 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_a7ef527fb7398faf#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_a7ef527fb7398faf#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,104 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: p2xOLOB/PEY7NppM7zqnRQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.DebuggerDisableUserUnhandledExceptionsAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.ParamCollectionAttribute"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_a7ef527fb7398faf.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_a7ef527fb7398faf.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..18955ed1b 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_a7ef527fb7398faf.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_a7ef527fb7398faf.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,95 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: p2xOLOB/PEY7NppM7zqnRQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aaa720b0841f8da9#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aaa720b0841f8da9#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..57298bb20 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aaa720b0841f8da9#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,113 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: gDKiD/0Y+jJf/fdEmigsjw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aaa720b0841f8da9.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aaa720b0841f8da9.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..8371ee638 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aaa720b0841f8da9.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,122 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: gDKiD/0Y+jJf/fdEmigsjw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.DebuggerDisableUserUnhandledExceptionsAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.ParamCollectionAttribute"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aaa720b0841f8da9.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aaa720b0841f8da9.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aaa720b0841f8da9.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ad14dc82c6681df4#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ad14dc82c6681df4#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..83c75f6a2 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ad14dc82c6681df4#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,115 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 75I5dqMr4BzKOFx5ts17Tg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ad14dc82c6681df4.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ad14dc82c6681df4.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..5338aa3da --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ad14dc82c6681df4.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,124 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 75I5dqMr4BzKOFx5ts17Tg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.DebuggerDisableUserUnhandledExceptionsAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.ParamCollectionAttribute"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ad14dc82c6681df4.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ad14dc82c6681df4.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ad14dc82c6681df4.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aeb252490b82e26d#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aeb252490b82e26d#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..1f55f5c1e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aeb252490b82e26d#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,109 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: grnrT2DhTaKAqIuAg3cQ/g== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aeb252490b82e26d.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aeb252490b82e26d.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..8b40e5c26 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aeb252490b82e26d.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,112 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: grnrT2DhTaKAqIuAg3cQ/g== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aeb252490b82e26d.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aeb252490b82e26d.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..1f55f5c1e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aeb252490b82e26d.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,109 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: grnrT2DhTaKAqIuAg3cQ/g== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aeb252490b82e26d.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aeb252490b82e26d.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_aeb252490b82e26d.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b22adcf83f74b10f.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b22adcf83f74b10f.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..89aa2585e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b22adcf83f74b10f.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,68 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: thFhEij0fMq4mQyfNzjYmw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.DebuggerDisableUserUnhandledExceptionsAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.ParamCollectionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b22adcf83f74b10f.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b22adcf83f74b10f.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b22adcf83f74b10f.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b22adcf83f74b10f.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b22adcf83f74b10f.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..2bd9ae44f --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b22adcf83f74b10f.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,59 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: thFhEij0fMq4mQyfNzjYmw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b22adcf83f74b10f.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b22adcf83f74b10f.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b22adcf83f74b10f.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b542ee10fd876735#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b542ee10fd876735#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..f10ada7c1 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b542ee10fd876735#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b542ee10fd876735#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,105 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: tmIYDdPZcrkdk8b10EJCkw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b542ee10fd876735.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b542ee10fd876735.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..ff3a8b530 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b542ee10fd876735.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b542ee10fd876735.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,104 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: tmIYDdPZcrkdk8b10EJCkw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b548dccfb9c1a07e#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b548dccfb9c1a07e#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..477b76269 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b548dccfb9c1a07e#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b548dccfb9c1a07e#Compiled_AssemblyProvider.g.verified.cs @@ -8,6 +8,7 @@ using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b5f6859560e5bdf0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b5f6859560e5bdf0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..cae51eb13 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b5f6859560e5bdf0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,114 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 5EMG7vfJRKBROn6zubzCPA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b5f6859560e5bdf0.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b5f6859560e5bdf0.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b5f6859560e5bdf0.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b5f6859560e5bdf0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b5f6859560e5bdf0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..6a174597c --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b5f6859560e5bdf0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,113 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 5EMG7vfJRKBROn6zubzCPA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b5f6859560e5bdf0.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b5f6859560e5bdf0.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b5f6859560e5bdf0.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b81091cb94d87ea0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b81091cb94d87ea0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..1174efb72 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b81091cb94d87ea0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,124 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: /A3kJwVyNJFJFH6SxYGBEw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.DebuggerDisableUserUnhandledExceptionsAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.ParamCollectionAttribute"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b81091cb94d87ea0.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b81091cb94d87ea0.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b81091cb94d87ea0.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b81091cb94d87ea0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b81091cb94d87ea0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..927ea6417 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b81091cb94d87ea0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,115 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: /A3kJwVyNJFJFH6SxYGBEw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b81091cb94d87ea0.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b81091cb94d87ea0.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b81091cb94d87ea0.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b9a99927a7915e80#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b9a99927a7915e80#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..45b53b43e 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b9a99927a7915e80#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b9a99927a7915e80#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,66 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: F2+105HZO0X9JLoL8izzDw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b9a99927a7915e80.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b9a99927a7915e80.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..ece1e70dd 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b9a99927a7915e80.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_b9a99927a7915e80.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,64 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: F2+105HZO0X9JLoL8izzDw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be16188a379f1a08#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be16188a379f1a08#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..477b76269 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be16188a379f1a08#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,32 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be16188a379f1a08.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be16188a379f1a08.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be16188a379f1a08.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be1a552f590fb971#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be1a552f590fb971#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..584156f16 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be1a552f590fb971#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,135 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: HjKUhkWiJBmdX48rAptLxw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be1a552f590fb971.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be1a552f590fb971.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..d6a4d9469 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be1a552f590fb971.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,139 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: HjKUhkWiJBmdX48rAptLxw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be1a552f590fb971.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be1a552f590fb971.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_be1a552f590fb971.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_c0a89d4075440066.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_c0a89d4075440066.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..ac42e5dd6 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_c0a89d4075440066.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,139 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: LFVoVlZ3Y1PuxmEKzg8wCA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_c0a89d4075440066.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_c0a89d4075440066.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_c0a89d4075440066.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_c0a89d4075440066.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_c0a89d4075440066.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..31ee5b12e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_c0a89d4075440066.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,135 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: LFVoVlZ3Y1PuxmEKzg8wCA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_c0a89d4075440066.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_c0a89d4075440066.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_c0a89d4075440066.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ca5e0f8d95796ced#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ca5e0f8d95796ced#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..0547e67ab 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ca5e0f8d95796ced#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ca5e0f8d95796ced#Compiled_AssemblyProvider.g.verified.cs @@ -8,6 +8,7 @@ using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,7 +20,43 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 4JkA75+iM2mmKKeeBXtpXQ== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ca9caf4b2e699215#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ca9caf4b2e699215#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..877e49593 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ca9caf4b2e699215#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ca9caf4b2e699215#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,86 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ADJPtCgXXAQc3JS8wImXrw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ca9caf4b2e699215.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ca9caf4b2e699215.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..0441e5241 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ca9caf4b2e699215.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ca9caf4b2e699215.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -8,6 +8,7 @@ using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,7 +20,74 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ADJPtCgXXAQc3JS8wImXrw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_cc07eebb8f5d5e7a.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_cc07eebb8f5d5e7a.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..12a205712 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_cc07eebb8f5d5e7a.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,70 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: jrU2kyk1N4L2yITcatG0Pw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.DebuggerDisableUserUnhandledExceptionsAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.ParamCollectionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_cc07eebb8f5d5e7a.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_cc07eebb8f5d5e7a.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_cc07eebb8f5d5e7a.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_cc07eebb8f5d5e7a.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_cc07eebb8f5d5e7a.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..fd6d1d478 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_cc07eebb8f5d5e7a.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,59 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: jrU2kyk1N4L2yITcatG0Pw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_cc07eebb8f5d5e7a.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_cc07eebb8f5d5e7a.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_cc07eebb8f5d5e7a.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ccba390e3c1061e0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ccba390e3c1061e0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..22eef6f7a --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ccba390e3c1061e0.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,69 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ZsuPUMFK0eS2LFbJMtWmmg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ccba390e3c1061e0.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ccba390e3c1061e0.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ccba390e3c1061e0.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ccba390e3c1061e0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ccba390e3c1061e0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..4b16ee09c --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ccba390e3c1061e0.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,68 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ZsuPUMFK0eS2LFbJMtWmmg== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ccba390e3c1061e0.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ccba390e3c1061e0.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_ccba390e3c1061e0.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_d73a05e4ae69ba04.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_d73a05e4ae69ba04.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..477b76269 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_d73a05e4ae69ba04.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,32 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_d73a05e4ae69ba04.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_d73a05e4ae69ba04.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_d73a05e4ae69ba04.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_d73a05e4ae69ba04.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_d73a05e4ae69ba04.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..477b76269 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_d73a05e4ae69ba04.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,32 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_d73a05e4ae69ba04.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_d73a05e4ae69ba04.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_d73a05e4ae69ba04.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_dac5c7ab0188aae9.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_dac5c7ab0188aae9.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..cce3b0358 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_dac5c7ab0188aae9.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,106 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ZnidgP/OwT6zeu0px9A6dA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.DebuggerDisableUserUnhandledExceptionsAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.ParamCollectionAttribute"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_dac5c7ab0188aae9.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_dac5c7ab0188aae9.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_dac5c7ab0188aae9.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_dac5c7ab0188aae9.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_dac5c7ab0188aae9.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..3fc944ec5 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_dac5c7ab0188aae9.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,99 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ZnidgP/OwT6zeu0px9A6dA== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_dac5c7ab0188aae9.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_dac5c7ab0188aae9.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_dac5c7ab0188aae9.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_daeabb7d626e3357#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_daeabb7d626e3357#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..1334bf5d8 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_daeabb7d626e3357#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,99 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: CVCdCZka0ldWyLiDVMwu/Q== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_daeabb7d626e3357.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_daeabb7d626e3357.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..23eda8e0f --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_daeabb7d626e3357.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,106 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: CVCdCZka0ldWyLiDVMwu/Q== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_daeabb7d626e3357.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_daeabb7d626e3357.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_daeabb7d626e3357.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e0135c7abc5f4290#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e0135c7abc5f4290#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..6e486ab7f 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e0135c7abc5f4290#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e0135c7abc5f4290#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,54 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: rMEfhMzZKsC6mG1qP+UL3A== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e03417dd7a712142#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e03417dd7a712142#Compiled_AssemblyProvider.g.verified.cs index ad924ea82..1c3429f13 100644 --- a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e03417dd7a712142#Compiled_AssemblyProvider.g.verified.cs +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e03417dd7a712142#Compiled_AssemblyProvider.g.verified.cs @@ -7,7 +7,9 @@ using Microsoft.Extensions.DependencyInjection; using Rocket.Surgery.DependencyInjection; using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] [assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] [System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] file class CompiledTypeProvider : ICompiledTypeProvider @@ -19,13 +21,23 @@ IEnumerable ICompiledTypeProvider.GetAssemblies(Action ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) { - yield break; + switch (lineNumber) + { + // FilePath: Input0.cs Expression: tSLXJ0cfKklFtUqVzYXidQ== + case 14: + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + break; + } } Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) { return services; } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); } #pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 #nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e1d518d50694c5a7#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e1d518d50694c5a7#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..4d8961d3a --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e1d518d50694c5a7#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,84 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 2WTjOop/IkRdkOpS5+QQ0w== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e1d518d50694c5a7.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e1d518d50694c5a7.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..099d62f6f --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e1d518d50694c5a7.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,86 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 2WTjOop/IkRdkOpS5+QQ0w== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e1d518d50694c5a7.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e1d518d50694c5a7.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e1d518d50694c5a7.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e2786d525725a326#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e2786d525725a326#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..24d27295e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e2786d525725a326#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,72 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: IsnvbgbcMyzab/40ZSPPzw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e2786d525725a326.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e2786d525725a326.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..0c42dac22 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e2786d525725a326.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,73 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: IsnvbgbcMyzab/40ZSPPzw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e2786d525725a326.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e2786d525725a326.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..24d27295e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e2786d525725a326.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,72 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: IsnvbgbcMyzab/40ZSPPzw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e2786d525725a326.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e2786d525725a326.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e2786d525725a326.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e56647b0fa615a27#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e56647b0fa615a27#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..3a6a37185 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e56647b0fa615a27#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,123 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: cMfR+usPOhjAk4ADMSy5mw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e56647b0fa615a27.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e56647b0fa615a27.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..2dac99bbb --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e56647b0fa615a27.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,124 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: cMfR+usPOhjAk4ADMSy5mw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e56647b0fa615a27.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e56647b0fa615a27.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..3a6a37185 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e56647b0fa615a27.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,123 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: cMfR+usPOhjAk4ADMSy5mw== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IReflectionTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorAssemblySelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceDescriptorTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceLifetimeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.IServiceTypeSelector); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.ITypeFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScoped<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.IExecuteScopedOptional<, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return typeof(global::System.ComponentModel.IChangeTracking); + yield return typeof(global::System.ComponentModel.IEditableObject); + yield return typeof(global::System.ComponentModel.IRevertibleChangeTracking); + yield return typeof(global::System.IServiceProvider); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e56647b0fa615a27.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e56647b0fa615a27.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e56647b0fa615a27.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e96ea585adc34658#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e96ea585adc34658#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..e252a9abc --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e96ea585adc34658#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,114 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: qJCkIC7zmkHHl6XYJ5WLww== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e96ea585adc34658.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e96ea585adc34658.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..2f4a05850 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e96ea585adc34658.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,123 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: qJCkIC7zmkHHl6XYJ5WLww== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Diagnostics.DebuggerDisableUserUnhandledExceptionsAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Runtime.CompilerServices.ParamCollectionAttribute"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e96ea585adc34658.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e96ea585adc34658.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..e252a9abc --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e96ea585adc34658.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,114 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: qJCkIC7zmkHHl6XYJ5WLww== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("FxResources.Microsoft.Extensions.DependencyInjection.Abstractions.SR"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.Internal.ParameterDefaultValue"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.BytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimeOffsetPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DateTimePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.DoublePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.EnumPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.GuidPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.IntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.LongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.RegexPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.SBytePolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ShortPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.StringPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UIntPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.ULongPolyfill"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.UShortPolyfill"); + yield return typeof(global::Program); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScoped`2"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`6"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`5"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`4"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`3"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Rocket.Surgery.DependencyInjection.ExecuteScopedOptional`2"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.RegistrationLifetimeAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ScopedServiceOptionalExtensions); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<>); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<,, >); + yield return typeof(global::Rocket.Surgery.DependencyInjection.ServiceRegistrationAttribute<, >); + yield return typeof(global::System.ComponentModel.CancelEventArgs); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.SR"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("System.ThrowHelper"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e96ea585adc34658.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e96ea585adc34658.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_e96ea585adc34658.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f57bee3132a92b0c.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f57bee3132a92b0c.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..342dd750a --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f57bee3132a92b0c.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,55 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 8YmQQsEAbolbqAwMPKoDnQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f57bee3132a92b0c.DotNet8_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f57bee3132a92b0c.DotNet8_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f57bee3132a92b0c.DotNet8_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f57bee3132a92b0c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f57bee3132a92b0c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..e7542078d --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f57bee3132a92b0c.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,49 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 8YmQQsEAbolbqAwMPKoDnQ== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f57bee3132a92b0c.DotNet9_0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f57bee3132a92b0c.DotNet9_0.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f57bee3132a92b0c.DotNet9_0.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f6580b78707577b9#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f6580b78707577b9#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..bafe5c8f1 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f6580b78707577b9#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,74 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: t5HlfD67L8WnQWkP+pqGZw== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f6580b78707577b9.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f6580b78707577b9.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f6580b78707577b9.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f9371db452b7a724#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f9371db452b7a724#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..d3f9e9e51 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f9371db452b7a724#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,74 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: JurAXo8wgRFY6Q+Vce2hBg== + case 14: + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilities); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ActivatorUtilitiesUpdateHandler"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ActivatorUtilitiesConstructorAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.CompiledTypeProviderServiceCollectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.FromKeyedServicesAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IKeyedServiceProvider); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceCollection); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsKeyedService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceProviderIsService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.IServiceScopeFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ISupportRequiredService); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.KeyedService); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.KeyedService+AnyKeyObj"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ObjectFactory<>); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ScopedServiceDependencyInjectionExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollection); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ServiceCollection+ServiceCollectionDebugView"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceDescriptor); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceKeyAttribute); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderKeyedServiceExtensions); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f9371db452b7a724.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f9371db452b7a724.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_f9371db452b7a724.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_fd014d5c4fe2fe2a#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_fd014d5c4fe2fe2a#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..e302b1ea8 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_fd014d5c4fe2fe2a#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,49 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ht6tFys1dpK3QtElzFJ87w== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_fd014d5c4fe2fe2a.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_fd014d5c4fe2fe2a.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..f2a3f99ae --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_fd014d5c4fe2fe2a.DotNet8_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,55 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ht6tFys1dpK3QtElzFJ87w== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumerator`1"); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("Polyfills.Polyfill+SpanSplitEnumeratorMode"); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + yield return RocketSurgeryDependencyInjectionExtensions.GetType("System.Threading.Lock+Scope"); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); + + private Assembly _RocketSurgeryDependencyInjectionExtensions; + private Assembly RocketSurgeryDependencyInjectionExtensions => _RocketSurgeryDependencyInjectionExtensions ??= _context.LoadFromAssemblyName(new AssemblyName("Rocket.Surgery.DependencyInjection.Extensions, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_fd014d5c4fe2fe2a.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_fd014d5c4fe2fe2a.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..e302b1ea8 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_fd014d5c4fe2fe2a.DotNet9_0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,49 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: ht6tFys1dpK3QtElzFJ87w== + case 14: + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext"); + yield return MicrosoftExtensionsDependencyInjectionAbstractions.GetType("Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects"); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.AsyncServiceScope); + yield return typeof(global::Microsoft.Extensions.DependencyInjection.ServiceLifetime); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeInfoFilter); + yield return typeof(global::Rocket.Surgery.DependencyInjection.Compiled.TypeKindFilter); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _MicrosoftExtensionsDependencyInjectionAbstractions; + private Assembly MicrosoftExtensionsDependencyInjectionAbstractions => _MicrosoftExtensionsDependencyInjectionAbstractions ??= _context.LoadFromAssemblyName(new AssemblyName("Microsoft.Extensions.DependencyInjection.Abstractions, Version=version, Culture=neutral, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_fd014d5c4fe2fe2a.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_fd014d5c4fe2fe2a.verified.txt new file mode 100644 index 000000000..f780e7a8e --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/AssemblyScanningTests.Should_Generate_Assembly_Provider_For_GetTypes_fd014d5c4fe2fe2a.verified.txt @@ -0,0 +1,24 @@ +{ + FinalDiagnostics: [], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: false + }, + References: [ + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceA_useTypeof=False_expectedCount=2#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceA_useTypeof=False_expectedCount=2#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..0f82fa6ef --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceA_useTypeof=False_expectedCount=2#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,51 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: k0zMh71HjeaRMGxTncDTlQ== + case 20: + yield return DependencyProjectC.GetType("DependencyProjectC.HardReferenceA"); + yield return typeof(global::DependencyProjectC.ServiceC); + yield return DependencyProjectD.GetType("DependencyProjectD.HardReferenceA"); + yield return DependencyProjectD.GetType("DependencyProjectD.HardReferenceC"); + yield return typeof(global::DependencyProjectD.ServiceD); + yield return typeof(global::TestProject.Program); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _DependencyProjectC; + private Assembly DependencyProjectC => _DependencyProjectC ??= _context.LoadFromAssemblyName(new AssemblyName("DependencyProjectC, Version=version, Culture=neutral, PublicKeyToken=null")); + + private Assembly _DependencyProjectD; + private Assembly DependencyProjectD => _DependencyProjectD ??= _context.LoadFromAssemblyName(new AssemblyName("DependencyProjectD, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceA_useTypeof=False_expectedCount=2.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceA_useTypeof=False_expectedCount=2.verified.txt new file mode 100644 index 000000000..8dfd5c7b0 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceA_useTypeof=False_expectedCount=2.verified.txt @@ -0,0 +1,38 @@ +{ + FinalDiagnostics: [ + { + Id: CS1061, + Title: , + Severity: Error, + WarningLevel: 0, + Location: Input0.cs: (21,17)-(21,27), + HelpLink: https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(CS1061), + MessageFormat: '{0}' does not contain a definition for '{1}' and no accessible extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive or an assembly reference?), + Message: 'IReflectionTypeSelector' does not contain a definition for 'AddClasses' and no accessible extension method 'AddClasses' accepting a first argument of type 'IReflectionTypeSelector' could be found (are you missing a using directive or an assembly reference?), + Category: Compiler, + CustomTags: [ + Compiler, + Telemetry, + NotConfigurable + ] + } + ], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: true + }, + References: [ + , + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceA_useTypeof=True_expectedCount=2#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceA_useTypeof=True_expectedCount=2#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..299b16eeb --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceA_useTypeof=True_expectedCount=2#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,51 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: o3NSANLyef78ssFPeW1xug== + case 20: + yield return DependencyProjectC.GetType("DependencyProjectC.HardReferenceA"); + yield return typeof(global::DependencyProjectC.ServiceC); + yield return DependencyProjectD.GetType("DependencyProjectD.HardReferenceA"); + yield return DependencyProjectD.GetType("DependencyProjectD.HardReferenceC"); + yield return typeof(global::DependencyProjectD.ServiceD); + yield return typeof(global::TestProject.Program); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _DependencyProjectC; + private Assembly DependencyProjectC => _DependencyProjectC ??= _context.LoadFromAssemblyName(new AssemblyName("DependencyProjectC, Version=version, Culture=neutral, PublicKeyToken=null")); + + private Assembly _DependencyProjectD; + private Assembly DependencyProjectD => _DependencyProjectD ??= _context.LoadFromAssemblyName(new AssemblyName("DependencyProjectD, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceA_useTypeof=True_expectedCount=2.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceA_useTypeof=True_expectedCount=2.verified.txt new file mode 100644 index 000000000..8dfd5c7b0 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceA_useTypeof=True_expectedCount=2.verified.txt @@ -0,0 +1,38 @@ +{ + FinalDiagnostics: [ + { + Id: CS1061, + Title: , + Severity: Error, + WarningLevel: 0, + Location: Input0.cs: (21,17)-(21,27), + HelpLink: https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(CS1061), + MessageFormat: '{0}' does not contain a definition for '{1}' and no accessible extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive or an assembly reference?), + Message: 'IReflectionTypeSelector' does not contain a definition for 'AddClasses' and no accessible extension method 'AddClasses' accepting a first argument of type 'IReflectionTypeSelector' could be found (are you missing a using directive or an assembly reference?), + Category: Compiler, + CustomTags: [ + Compiler, + Telemetry, + NotConfigurable + ] + } + ], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: true + }, + References: [ + , + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceB_useTypeof=False_expectedCount=0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceB_useTypeof=False_expectedCount=0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..888742e30 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceB_useTypeof=False_expectedCount=0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,38 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: syIQVEP18vID04/N6PcBdw== + case 20: + yield return typeof(global::TestProject.Program); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceB_useTypeof=False_expectedCount=0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceB_useTypeof=False_expectedCount=0.verified.txt new file mode 100644 index 000000000..8dfd5c7b0 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceB_useTypeof=False_expectedCount=0.verified.txt @@ -0,0 +1,38 @@ +{ + FinalDiagnostics: [ + { + Id: CS1061, + Title: , + Severity: Error, + WarningLevel: 0, + Location: Input0.cs: (21,17)-(21,27), + HelpLink: https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(CS1061), + MessageFormat: '{0}' does not contain a definition for '{1}' and no accessible extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive or an assembly reference?), + Message: 'IReflectionTypeSelector' does not contain a definition for 'AddClasses' and no accessible extension method 'AddClasses' accepting a first argument of type 'IReflectionTypeSelector' could be found (are you missing a using directive or an assembly reference?), + Category: Compiler, + CustomTags: [ + Compiler, + Telemetry, + NotConfigurable + ] + } + ], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: true + }, + References: [ + , + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceB_useTypeof=True_expectedCount=0#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceB_useTypeof=True_expectedCount=0#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..994c3f4f8 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceB_useTypeof=True_expectedCount=0#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,38 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: 4rCvzKapZr9TQpkHee/Tjg== + case 20: + yield return typeof(global::TestProject.Program); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceB_useTypeof=True_expectedCount=0.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceB_useTypeof=True_expectedCount=0.verified.txt new file mode 100644 index 000000000..8dfd5c7b0 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceB_useTypeof=True_expectedCount=0.verified.txt @@ -0,0 +1,38 @@ +{ + FinalDiagnostics: [ + { + Id: CS1061, + Title: , + Severity: Error, + WarningLevel: 0, + Location: Input0.cs: (21,17)-(21,27), + HelpLink: https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(CS1061), + MessageFormat: '{0}' does not contain a definition for '{1}' and no accessible extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive or an assembly reference?), + Message: 'IReflectionTypeSelector' does not contain a definition for 'AddClasses' and no accessible extension method 'AddClasses' accepting a first argument of type 'IReflectionTypeSelector' could be found (are you missing a using directive or an assembly reference?), + Category: Compiler, + CustomTags: [ + Compiler, + Telemetry, + NotConfigurable + ] + } + ], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: true + }, + References: [ + , + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceC_useTypeof=False_expectedCount=1#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceC_useTypeof=False_expectedCount=1#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..5cc4a9bde --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceC_useTypeof=False_expectedCount=1#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,46 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: j1iKAfebZdktRD3AAE07qQ== + case 20: + yield return DependencyProjectD.GetType("DependencyProjectD.HardReferenceA"); + yield return DependencyProjectD.GetType("DependencyProjectD.HardReferenceC"); + yield return typeof(global::DependencyProjectD.ServiceD); + yield return typeof(global::TestProject.Program); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _DependencyProjectD; + private Assembly DependencyProjectD => _DependencyProjectD ??= _context.LoadFromAssemblyName(new AssemblyName("DependencyProjectD, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceC_useTypeof=False_expectedCount=1.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceC_useTypeof=False_expectedCount=1.verified.txt new file mode 100644 index 000000000..8dfd5c7b0 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceC_useTypeof=False_expectedCount=1.verified.txt @@ -0,0 +1,38 @@ +{ + FinalDiagnostics: [ + { + Id: CS1061, + Title: , + Severity: Error, + WarningLevel: 0, + Location: Input0.cs: (21,17)-(21,27), + HelpLink: https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(CS1061), + MessageFormat: '{0}' does not contain a definition for '{1}' and no accessible extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive or an assembly reference?), + Message: 'IReflectionTypeSelector' does not contain a definition for 'AddClasses' and no accessible extension method 'AddClasses' accepting a first argument of type 'IReflectionTypeSelector' could be found (are you missing a using directive or an assembly reference?), + Category: Compiler, + CustomTags: [ + Compiler, + Telemetry, + NotConfigurable + ] + } + ], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: true + }, + References: [ + , + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceC_useTypeof=True_expectedCount=1#Compiled_AssemblyProvider.g.verified.cs b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceC_useTypeof=True_expectedCount=1#Compiled_AssemblyProvider.g.verified.cs new file mode 100644 index 000000000..bd7aa164b --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceC_useTypeof=True_expectedCount=1#Compiled_AssemblyProvider.g.verified.cs @@ -0,0 +1,46 @@ +//HintName: Rocket.Surgery.DependencyInjection.Analyzers/Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator/Compiled_AssemblyProvider.g.cs +#nullable enable +#pragma warning disable CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Rocket.Surgery.DependencyInjection; +using Rocket.Surgery.DependencyInjection.Compiled; +using System.Runtime.Loader; + +[assembly: System.Reflection.AssemblyMetadata("AssemblyProvider.ReflectionTypes","{scrubbed}")] +[assembly: Rocket.Surgery.DependencyInjection.Compiled.CompiledTypeProviderAttribute(typeof(CompiledTypeProvider))] +[System.CodeDom.Compiler.GeneratedCode("Rocket.Surgery.DependencyInjection.Analyzers", "version"), System.Runtime.CompilerServices.CompilerGenerated, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] +file class CompiledTypeProvider : ICompiledTypeProvider +{ + IEnumerable ICompiledTypeProvider.GetAssemblies(Action action, int lineNumber, string filePath, string argumentExpression) + { + yield break; + } + + IEnumerable ICompiledTypeProvider.GetTypes(Func> selector, int lineNumber, string filePath, string argumentExpression) + { + switch (lineNumber) + { + // FilePath: Input0.cs Expression: MHo3KbGDgcliYW1VVRfhfw== + case 20: + yield return DependencyProjectD.GetType("DependencyProjectD.HardReferenceA"); + yield return DependencyProjectD.GetType("DependencyProjectD.HardReferenceC"); + yield return typeof(global::DependencyProjectD.ServiceD); + yield return typeof(global::TestProject.Program); + break; + } + } + + Microsoft.Extensions.DependencyInjection.IServiceCollection ICompiledTypeProvider.Scan(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Action selector, int lineNumber, string filePath, string argumentExpression) + { + return services; + } + + private AssemblyLoadContext _context = AssemblyLoadContext.GetLoadContext(typeof(CompiledTypeProvider).Assembly); + private Assembly _DependencyProjectD; + private Assembly DependencyProjectD => _DependencyProjectD ??= _context.LoadFromAssemblyName(new AssemblyName("DependencyProjectD, Version=version, Culture=neutral, PublicKeyToken=null")); +} +#pragma warning restore CA1002, CA1034, CA1822, CS0105, CS1573, CS8602, CS8603, CS8618, CS8669 +#nullable restore diff --git a/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceC_useTypeof=True_expectedCount=1.verified.txt b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceC_useTypeof=True_expectedCount=1.verified.txt new file mode 100644 index 000000000..8dfd5c7b0 --- /dev/null +++ b/test/DependencyInjection.Analyzers.Tests/snapshots/StaticScanning_WithAssemblyLoadTests.Should_Select_Specific_Assemblies_Using_FromAssemblyDependenciesOf_For_GetTypes_className=ServiceC_useTypeof=True_expectedCount=1.verified.txt @@ -0,0 +1,38 @@ +{ + FinalDiagnostics: [ + { + Id: CS1061, + Title: , + Severity: Error, + WarningLevel: 0, + Location: Input0.cs: (21,17)-(21,27), + HelpLink: https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(CS1061), + MessageFormat: '{0}' does not contain a definition for '{1}' and no accessible extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive or an assembly reference?), + Message: 'IReflectionTypeSelector' does not contain a definition for 'AddClasses' and no accessible extension method 'AddClasses' accepting a first argument of type 'IReflectionTypeSelector' could be found (are you missing a using directive or an assembly reference?), + Category: Compiler, + CustomTags: [ + Compiler, + Telemetry, + NotConfigurable + ] + } + ], + GeneratorDiagnostics: { + Rocket.Surgery.DependencyInjection.Analyzers.CompiledServiceScanningGenerator: [] + }, + GlobalOptions: { + compiled_scan_assembly_load: true + }, + References: [ + , + Microsoft.Extensions.DependencyInjection.Abstractions.dll, + mscorlib.dll, + netstandard.dll, + Rocket.Surgery.DependencyInjection.Extensions.dll, + System.ComponentModel.dll, + System.Core.dll, + System.dll, + System.Private.CoreLib.dll, + System.Runtime.dll + ] +} \ No newline at end of file