Skip to content

Commit cd134f7

Browse files
authored
Simplify naming style preferences (#76411)
* Simplify naming style parsing * Simplify naming style preferences construction and make ordering deterministic if priorities are specified * Cleanup * Tests * Fix
1 parent f5ca8f0 commit cd134f7

File tree

34 files changed

+576
-587
lines changed

34 files changed

+576
-587
lines changed

src/Analyzers/Core/CodeFixes/Naming/NamingExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,6 @@ public static async Task<ImmutableArray<NamingRule>> GetNamingRulesAsync(
3636
this Document document, CancellationToken cancellationToken)
3737
{
3838
var options = await document.GetNamingStylePreferencesAsync(cancellationToken).ConfigureAwait(false);
39-
return options.CreateRules().NamingRules.AddRange(FallbackNamingRules.Default);
39+
return options.Rules.NamingRules.AddRange(FallbackNamingRules.Default);
4040
}
4141
}

src/Compilers/Core/Portable/Collections/ImmutableArrayExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -707,7 +707,7 @@ public static async Task<bool> AnyAsync<T, TArg>(this ImmutableArray<T> array, F
707707
return default;
708708
}
709709

710-
public static TValue? Single<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
710+
public static TValue Single<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
711711
{
712712
var hasValue = false;
713713
TValue? value = default;
@@ -730,7 +730,7 @@ public static async Task<bool> AnyAsync<T, TArg>(this ImmutableArray<T> array, F
730730
throw ExceptionUtilities.Unreachable();
731731
}
732732

733-
return value;
733+
return value!;
734734
}
735735

736736
/// <summary>

src/EditorFeatures/CSharpTest/Completion/CompletionProviders/DeclarationNameCompletionProviderTests.cs

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2946,7 +2946,7 @@ private static NamingStylePreferences MultipleCamelCaseLocalRules()
29462946
return new NamingStylePreferences(
29472947
[.. styles.Select(t => t.specification)],
29482948
[.. styles.Select(t => t.style)],
2949-
[.. styles.Select(t => CreateRule(t.specification, t.style))]);
2949+
[.. styles.Select(t => new NamingRule(t.specification, t.style, ReportDiagnostic.Error))]);
29502950

29512951
// Local functions
29522952

@@ -2980,7 +2980,7 @@ private static NamingStylePreferences NamesEndWithSuffixPreferences()
29802980
return new NamingStylePreferences(
29812981
[.. specificationStyles.Select(t => t.specification)],
29822982
[.. specificationStyles.Select(t => t.style)],
2983-
[.. specificationStyles.Select(t => CreateRule(t.specification, t.style))]);
2983+
[.. specificationStyles.Select(t => new NamingRule(t.specification, t.style, ReportDiagnostic.Error))]);
29842984

29852985
// Local functions
29862986

@@ -3038,14 +3038,6 @@ [new SymbolKindOrTypeKind(SymbolKind.Parameter)],
30383038
return new NamingStylePreferences(
30393039
symbolSpecifications,
30403040
namingStyles,
3041-
namingRules: [CreateRule(symbolSpecifications[0], namingStyles[0]), CreateRule(symbolSpecifications[1], namingStyles[1])]);
3041+
namingRules: [new NamingRule(symbolSpecifications[0], namingStyles[0], ReportDiagnostic.Error), new NamingRule(symbolSpecifications[1], namingStyles[1], ReportDiagnostic.Error)]);
30423042
}
3043-
3044-
private static SerializableNamingRule CreateRule(SymbolSpecification specification, NamingStyle style)
3045-
=> new()
3046-
{
3047-
SymbolSpecificationID = specification.ID,
3048-
NamingStyleID = style.ID,
3049-
EnforcementLevel = ReportDiagnostic.Error
3050-
};
30513043
}

src/EditorFeatures/CSharpTest/Microsoft.CodeAnalysis.CSharp.EditorFeatures.UnitTests.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,8 @@
5757
<ItemGroup>
5858
<Compile Include="..\..\VisualStudio\Core\Def\CodeCleanup\AbstractCodeCleanUpFixer_Helper.cs" Link="Formatting\AbstractCodeCleanUpFixer_Helper.cs" />
5959
</ItemGroup>
60+
<ItemGroup>
61+
<Folder Include="Diagnostics\NamingStyles\" />
62+
</ItemGroup>
6063
<Import Project="$(RepositoryEngineeringDir)targets\ILAsm.targets" />
6164
</Project>

src/EditorFeatures/Core/EditorConfigSettings/Data/NamingStyleSetting.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ internal static NamingStyleSetting FromParseResult(NamingStyleOption namingStyle
4343
{
4444
Style = namingStyleOption.NamingScheme.AsNamingStyle(),
4545
Type = namingStyleOption.ApplicableSymbolInfo.AsSymbolSpecification(),
46-
Severity = namingStyleOption.Severity,
46+
Severity = namingStyleOption.Severity.Value,
4747
Location = new SettingLocation(LocationKind.EditorConfig, namingStyleOption.Section.FilePath)
4848
};
4949
}

src/EditorFeatures/Core/EditorConfigSettings/DataProvider/NamingStyles/NamingStyleSettingsProvider.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@ protected override void UpdateOptions(TieredAnalyzerConfigOptions options, Immut
2828
options.GetInitialLocationAndValue<NamingStylePreferences>(NamingStyleOptions.NamingPreferences, out var location, out var namingPreferences);
2929

3030
var fileName = (location.LocationKind != LocationKind.VisualStudio) ? options.EditorConfigFileName : null;
31-
var namingRules = namingPreferences.NamingRules.Select(r => r.GetRule(namingPreferences));
3231
var allStyles = RoslynEnumerableExtensions.DistinctBy(namingPreferences.NamingStyles, s => s.Name).ToArray();
33-
var namingStyles = namingRules.Select(namingRule => new NamingStyleSetting(namingRule, allStyles, SettingsUpdater, fileName));
32+
var namingStyles = namingPreferences.Rules.NamingRules.Select(namingRule => new NamingStyleSetting(namingRule, allStyles, SettingsUpdater, fileName));
3433

3534
AddRange(namingStyles);
3635
}

src/EditorFeatures/Core/EditorConfigSettings/Updater/NamingStyles/EditorConfigNamingStylesExtensions.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,17 +67,17 @@ static bool AreSameNamingStyle(NamingStyle left, NamingStyle right)
6767
public static NamingStyle AsNamingStyle(this NamingScheme namingScheme)
6868
=> new(
6969
Guid.NewGuid(),
70-
namingScheme.OptionName,
71-
namingScheme.Prefix,
72-
namingScheme.Suffix,
73-
namingScheme.WordSeparator,
74-
namingScheme.Capitalization);
70+
namingScheme.OptionName.Value,
71+
namingScheme.Prefix.Value,
72+
namingScheme.Suffix.Value,
73+
namingScheme.WordSeparator.Value,
74+
namingScheme.Capitalization.Value);
7575

7676
public static SymbolSpecification AsSymbolSpecification(this ApplicableSymbolInfo applicableSymbolInfo)
7777
=> new(
7878
Guid.NewGuid(),
79-
applicableSymbolInfo.OptionName,
80-
applicableSymbolInfo.SymbolKinds,
81-
applicableSymbolInfo.Accessibilities,
82-
applicableSymbolInfo.Modifiers);
79+
applicableSymbolInfo.OptionName.Value,
80+
applicableSymbolInfo.SymbolKinds.Value,
81+
applicableSymbolInfo.Accessibilities.Value,
82+
applicableSymbolInfo.Modifiers.Value);
8383
}

src/EditorFeatures/Core/EditorConfigSettings/Updater/NamingStyles/SourceTextExtensions.cs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,21 +81,12 @@ static SourceText WithChanges(SourceText sourceText, TextSpan span, string newTe
8181

8282
private static void AppendNamingStylePreferencesToEditorConfig(IEnumerable<NamingRule> namingRules, StringBuilder editorconfig, string? language = null)
8383
{
84-
var symbolSpecifications = namingRules.Select(x => x.SymbolSpecification).ToImmutableArray();
85-
var namingStyles = namingRules.Select(x => x.NamingStyle).ToImmutableArray();
86-
var serializedNamingRules = namingRules.Select(x => new SerializableNamingRule()
87-
{
88-
EnforcementLevel = x.EnforcementLevel,
89-
NamingStyleID = x.NamingStyle.ID,
90-
SymbolSpecificationID = x.SymbolSpecification.ID
91-
}).ToImmutableArray();
92-
9384
language ??= LanguageNames.CSharp;
9485

9586
NamingStylePreferencesEditorConfigSerializer.AppendNamingStylePreferencesToEditorConfig(
96-
symbolSpecifications,
97-
namingStyles,
98-
serializedNamingRules,
87+
[.. namingRules.Select(static x => x.SymbolSpecification)],
88+
[.. namingRules.Select(static x => x.NamingStyle)],
89+
[.. namingRules],
9990
language,
10091
editorconfig);
10192
}

src/Features/CSharp/Portable/Completion/CompletionProviders/DeclarationName/DeclarationNameRecommender.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ private static void GetRecommendedNames(
207207
NamingStylePreferences namingStyleOptions,
208208
CancellationToken cancellationToken)
209209
{
210-
var rules = namingStyleOptions.CreateRules().NamingRules.AddRange(FallbackNamingRules.CompletionFallbackRules);
210+
var rules = namingStyleOptions.Rules.NamingRules.AddRange(FallbackNamingRules.CompletionFallbackRules);
211211

212212
var supplementaryRules = FallbackNamingRules.CompletionSupplementaryRules;
213213
var semanticFactsService = context.GetRequiredLanguageService<ISemanticFactsService>();

src/Features/DiagnosticsTestUtilities/NamingStyles/NamingStylesTestOptionSets.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,13 @@ internal OptionsCollection MergeStyles(OptionsCollection first, OptionsCollectio
3232
{
3333
var firstPreferences = (NamingStylePreferences)first.First().Value;
3434
var secondPreferences = (NamingStylePreferences)second.First().Value;
35-
return new OptionsCollection(_languageName) { { NamingStyleOptions.NamingPreferences, new NamingStylePreferences(
36-
firstPreferences.SymbolSpecifications.AddRange(secondPreferences.SymbolSpecifications),
37-
firstPreferences.NamingStyles.AddRange(secondPreferences.NamingStyles),
38-
firstPreferences.NamingRules.AddRange(secondPreferences.NamingRules)) } };
35+
36+
var mergedPreferences = new NamingStylePreferences(
37+
firstPreferences.SymbolSpecifications.AddRange(secondPreferences.SymbolSpecifications),
38+
firstPreferences.NamingStyles.AddRange(secondPreferences.NamingStyles),
39+
firstPreferences.Rules.NamingRules.AddRange(secondPreferences.Rules.NamingRules));
40+
41+
return new OptionsCollection(_languageName) { { NamingStyleOptions.NamingPreferences, mergedPreferences } };
3942
}
4043

4144
internal OptionsCollection ClassNamesArePascalCase

0 commit comments

Comments
 (0)