diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/ConfigurationBindingGenerator.Emitter.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/ConfigurationBindingGenerator.Emitter.cs index cf81949b7e6f97..7fa5cf315e46b4 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/ConfigurationBindingGenerator.Emitter.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/ConfigurationBindingGenerator.Emitter.cs @@ -225,7 +225,7 @@ private void EmitBindMethods() #region Helper class in source-generation namespace. private void EmitHelperUsingStatements() { - foreach (string @namespace in _generationSpec.Namespaces) + foreach (string @namespace in _generationSpec.TypeNamespaces) { _writer.WriteLine($"using {@namespace};"); } @@ -287,7 +287,7 @@ private void EmitGetValueCoreMethod() TypeSpec effectiveType = (type as NullableSpec)?.UnderlyingType ?? type; _writer.WriteBlockStart($"if (type == typeof({type.MinimalDisplayString}))"); EmitBindLogicFromString( - (ParsableFromStringTypeSpec)effectiveType, + (ParsableFromStringSpec)effectiveType, Identifier.obj, Expression.sectionValue, Expression.sectionPath, @@ -354,7 +354,7 @@ private void EmitHelperMethods() if (_generationSpec.PrimitivesForHelperGen.Count > 0) { - foreach (ParsableFromStringTypeSpec type in _generationSpec.PrimitivesForHelperGen) + foreach (ParsableFromStringSpec type in _generationSpec.PrimitivesForHelperGen) { EmitBlankLineIfRequired(); EmitPrimitiveParseMethod(type); @@ -413,7 +413,7 @@ private void EmitGetBinderOptionsHelper() """); } - private void EmitPrimitiveParseMethod(ParsableFromStringTypeSpec type) + private void EmitPrimitiveParseMethod(ParsableFromStringSpec type) { string innerExceptionTypeDisplayString; string cultureInfoTypeDisplayString; @@ -589,7 +589,7 @@ private void EmitPopulationImplForEnumerableWithAdd(EnumerableSpec type) if (elementType.SpecKind is TypeSpecKind.ParsableFromString) { - ParsableFromStringTypeSpec stringParsableType = (ParsableFromStringTypeSpec)elementType; + ParsableFromStringSpec stringParsableType = (ParsableFromStringSpec)elementType; if (stringParsableType.StringParsableTypeKind is StringParsableTypeKind.ConfigValue) { string tempVarName = GetIncrementalVarName(Identifier.stringValue); @@ -620,7 +620,7 @@ private void EmitBindCoreImplForDictionary(DictionarySpec type) _writer.WriteBlockStart($"foreach ({Identifier.IConfigurationSection} {Identifier.section} in {Identifier.configuration}.{Identifier.GetChildren}())"); - ParsableFromStringTypeSpec keyType = type.KeyType; + ParsableFromStringSpec keyType = type.KeyType; TypeSpec elementType = type.ElementType; // Parse key @@ -644,7 +644,7 @@ void Emit_BindAndAddLogic_ForElement() { if (elementType.SpecKind == TypeSpecKind.ParsableFromString) { - ParsableFromStringTypeSpec stringParsableType = (ParsableFromStringTypeSpec)elementType; + ParsableFromStringSpec stringParsableType = (ParsableFromStringSpec)elementType; if (stringParsableType.StringParsableTypeKind is StringParsableTypeKind.ConfigValue) { string tempVarName = GetIncrementalVarName(Identifier.stringValue); @@ -786,7 +786,7 @@ private void EmitBindCoreImplForProperty(PropertySpec property, TypeSpec propert if (canSet) { EmitBindLogicFromString( - (ParsableFromStringTypeSpec)propertyType, + (ParsableFromStringSpec)propertyType, expressionForPropertyAccess, expressionForConfigValueIndexer, expressionForConfigValuePath: Expression.sectionPath); @@ -839,7 +839,7 @@ private void EmitBindLogicFromRootMethod(TypeSpec type, string expressionForMemb { EmitCastToIConfigurationSection(); } - EmitBindLogicFromString((ParsableFromStringTypeSpec)type, expressionForMemberAccess, Expression.sectionValue, Expression.sectionPath); + EmitBindLogicFromString((ParsableFromStringSpec)type, expressionForMemberAccess, Expression.sectionValue, Expression.sectionPath); } else { @@ -944,7 +944,7 @@ private void EmitBindCoreCallForProperty( } private void EmitBindLogicFromString( - ParsableFromStringTypeSpec type, + ParsableFromStringSpec type, string expressionForMemberAccess, string expressionForConfigStringValue, string expressionForConfigValuePath, diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/ConfigurationBindingGenerator.Parser.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/ConfigurationBindingGenerator.Parser.cs index 46e3e9ad7b4d0a..c1678248f0a19a 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/ConfigurationBindingGenerator.Parser.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/ConfigurationBindingGenerator.Parser.cs @@ -24,8 +24,8 @@ private sealed class Parser private readonly HashSet _unsupportedTypes = new(SymbolEqualityComparer.Default); private readonly Dictionary _createdSpecs = new(SymbolEqualityComparer.Default); - private readonly HashSet _primitivesForHelperGen = new(); - private readonly HashSet _namespaces = new() + private readonly HashSet _primitivesForHelperGen = new(); + private readonly HashSet _typeNamespaces = new() { "System", "System.Globalization", @@ -86,7 +86,7 @@ public Parser(SourceProductionContext context, KnownTypeSymbols typeSymbols) _rootConfigTypes, _methodsToGen, _primitivesForHelperGen, - _namespaces); + _typeNamespaces); } private void ProcessBindCall(BinderInvocationOperation binderOperation) @@ -352,7 +352,7 @@ private void ProcessConfigureCall(BinderInvocationOperation binderOperation) } else if (IsParsableFromString(type, out StringParsableTypeKind specialTypeKind)) { - ParsableFromStringTypeSpec stringParsableSpec = new(type) + ParsableFromStringSpec stringParsableSpec = new(type) { Location = location, StringParsableTypeKind = specialTypeKind @@ -377,7 +377,7 @@ private void ProcessConfigureCall(BinderInvocationOperation binderOperation) } else if (SymbolEqualityComparer.Default.Equals(type, _typeSymbols.IConfigurationSection)) { - spec = new ConfigurationSectionTypeSpec(type) { Location = location }; + spec = new ConfigurationSectionSpec(type) { Location = location }; } else if (type is INamedTypeSymbol namedType) { @@ -394,7 +394,7 @@ private void ProcessConfigureCall(BinderInvocationOperation binderOperation) string @namespace = spec.Namespace; if (@namespace is not null and not "") { - _namespaces.Add(@namespace); + _typeNamespaces.Add(@namespace); } _createdSpecs[type] = spec; @@ -657,7 +657,7 @@ private DictionarySpec CreateDictionarySpec(INamedTypeSymbol type, Location? loc constructionStrategy = ConstructionStrategy.ToEnumerableMethod; populationStrategy = CollectionPopulationStrategy.Cast_Then_Add; toEnumerableMethodCall = "ToDictionary(pair => pair.Key, pair => pair.Value)"; - _namespaces.Add("System.Linq"); + _typeNamespaces.Add("System.Linq"); } else { @@ -668,7 +668,7 @@ private DictionarySpec CreateDictionarySpec(INamedTypeSymbol type, Location? loc DictionarySpec spec = new(type) { Location = location, - KeyType = (ParsableFromStringTypeSpec)keySpec, + KeyType = (ParsableFromStringSpec)keySpec, ElementType = elementSpec, ConstructionStrategy = constructionStrategy, PopulationStrategy = populationStrategy, diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Microsoft.Extensions.Configuration.Binder.SourceGeneration.csproj b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Microsoft.Extensions.Configuration.Binder.SourceGeneration.csproj index a191500f7f0a3e..2f2e29690f4fd0 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Microsoft.Extensions.Configuration.Binder.SourceGeneration.csproj +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Microsoft.Extensions.Configuration.Binder.SourceGeneration.csproj @@ -34,12 +34,11 @@ - + - + - diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/CollectionSpec.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/CollectionSpec.cs index 2a6e23b7c76d82..7054a3513edd97 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/CollectionSpec.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/CollectionSpec.cs @@ -33,7 +33,7 @@ public DictionarySpec(INamedTypeSymbol type) : base(type) { } public override TypeSpecKind SpecKind => TypeSpecKind.Dictionary; - public required ParsableFromStringTypeSpec KeyType { get; init; } + public required ParsableFromStringSpec KeyType { get; init; } } internal enum CollectionPopulationStrategy diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/ConfigurationSectionTypeSpec.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/ConfigurationSectionSpec.cs similarity index 70% rename from src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/ConfigurationSectionTypeSpec.cs rename to src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/ConfigurationSectionSpec.cs index e488578c5f8978..ed1fcac7636ba7 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/ConfigurationSectionTypeSpec.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/ConfigurationSectionSpec.cs @@ -5,9 +5,9 @@ namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration { - internal sealed record ConfigurationSectionTypeSpec : TypeSpec + internal sealed record ConfigurationSectionSpec : TypeSpec { - public ConfigurationSectionTypeSpec(ITypeSymbol type) : base(type) { } + public ConfigurationSectionSpec(ITypeSymbol type) : base(type) { } public override TypeSpecKind SpecKind => TypeSpecKind.IConfigurationSection; } diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/ParsableFromStringTypeSpec.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/ParsableFromStringSpec.cs similarity index 90% rename from src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/ParsableFromStringTypeSpec.cs rename to src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/ParsableFromStringSpec.cs index 84c59d9f0ec34c..7f910a05c5221c 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/ParsableFromStringTypeSpec.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/ParsableFromStringSpec.cs @@ -6,9 +6,9 @@ namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration { - internal sealed record ParsableFromStringTypeSpec : TypeSpec + internal sealed record ParsableFromStringSpec : TypeSpec { - public ParsableFromStringTypeSpec(ITypeSymbol type) : base(type) { } + public ParsableFromStringSpec(ITypeSymbol type) : base(type) { } public override TypeSpecKind SpecKind => TypeSpecKind.ParsableFromString; diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/SourceGenerationSpec.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/SourceGenerationSpec.cs index f0dd22e3bfa5ed..db8e1aaccce1c5 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/SourceGenerationSpec.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/SourceGenerationSpec.cs @@ -8,8 +8,8 @@ namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration internal sealed record SourceGenerationSpec( Dictionary> RootConfigTypes, BinderMethodSpecifier MethodsToGen, - HashSet PrimitivesForHelperGen, - HashSet Namespaces) + HashSet PrimitivesForHelperGen, + HashSet TypeNamespaces) { public bool HasRootMethods() => ShouldEmitMethods(BinderMethodSpecifier.Get | BinderMethodSpecifier.Bind | BinderMethodSpecifier.Configure | BinderMethodSpecifier.GetValue); diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/TypeSpec.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/TypeSpec.cs index d4da7d138863cb..3b416736fefdee 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/TypeSpec.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/TypeSpec.cs @@ -38,4 +38,16 @@ public TypeSpec(ITypeSymbol type) /// public required Location? Location { get; init; } } + + internal enum TypeSpecKind + { + Unknown = 0, + ParsableFromString = 1, + Object = 2, + Array = 3, + Enumerable = 4, + Dictionary = 5, + IConfigurationSection = 6, + Nullable = 7, + } } diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/TypeSpecKind.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/TypeSpecKind.cs deleted file mode 100644 index 040005ac963e53..00000000000000 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/gen/Model/TypeSpecKind.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -namespace Microsoft.Extensions.Configuration.Binder.SourceGeneration -{ - internal enum TypeSpecKind - { - Unknown = 0, - ParsableFromString = 1, - Object = 2, - Array = 3, - Enumerable = 4, - Dictionary = 5, - IConfigurationSection = 6, - Nullable = 7, - } -}