Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Analyzers/Core/CodeFixes/Naming/NamingExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,6 @@ public static async Task<ImmutableArray<NamingRule>> GetNamingRulesAsync(
this Document document, CancellationToken cancellationToken)
{
var options = await document.GetNamingStylePreferencesAsync(cancellationToken).ConfigureAwait(false);
return options.CreateRules().NamingRules.AddRange(FallbackNamingRules.Default);
return options.Rules.NamingRules.AddRange(FallbackNamingRules.Default);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -707,7 +707,7 @@ public static async Task<bool> AnyAsync<T, TArg>(this ImmutableArray<T> array, F
return default;
}

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

return value;
return value!;
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2946,7 +2946,7 @@ private static NamingStylePreferences MultipleCamelCaseLocalRules()
return new NamingStylePreferences(
[.. styles.Select(t => t.specification)],
[.. styles.Select(t => t.style)],
[.. styles.Select(t => CreateRule(t.specification, t.style))]);
[.. styles.Select(t => new NamingRule(t.specification, t.style, ReportDiagnostic.Error))]);

// Local functions

Expand Down Expand Up @@ -2980,7 +2980,7 @@ private static NamingStylePreferences NamesEndWithSuffixPreferences()
return new NamingStylePreferences(
[.. specificationStyles.Select(t => t.specification)],
[.. specificationStyles.Select(t => t.style)],
[.. specificationStyles.Select(t => CreateRule(t.specification, t.style))]);
[.. specificationStyles.Select(t => new NamingRule(t.specification, t.style, ReportDiagnostic.Error))]);

// Local functions

Expand Down Expand Up @@ -3038,14 +3038,6 @@ [new SymbolKindOrTypeKind(SymbolKind.Parameter)],
return new NamingStylePreferences(
symbolSpecifications,
namingStyles,
namingRules: [CreateRule(symbolSpecifications[0], namingStyles[0]), CreateRule(symbolSpecifications[1], namingStyles[1])]);
namingRules: [new NamingRule(symbolSpecifications[0], namingStyles[0], ReportDiagnostic.Error), new NamingRule(symbolSpecifications[1], namingStyles[1], ReportDiagnostic.Error)]);
}

private static SerializableNamingRule CreateRule(SymbolSpecification specification, NamingStyle style)
=> new()
{
SymbolSpecificationID = specification.ID,
NamingStyleID = style.ID,
EnforcementLevel = ReportDiagnostic.Error
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,5 +57,8 @@
<ItemGroup>
<Compile Include="..\..\VisualStudio\Core\Def\CodeCleanup\AbstractCodeCleanUpFixer_Helper.cs" Link="Formatting\AbstractCodeCleanUpFixer_Helper.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="Diagnostics\NamingStyles\" />
</ItemGroup>
<Import Project="$(RepositoryEngineeringDir)targets\ILAsm.targets" />
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ internal static NamingStyleSetting FromParseResult(NamingStyleOption namingStyle
{
Style = namingStyleOption.NamingScheme.AsNamingStyle(),
Type = namingStyleOption.ApplicableSymbolInfo.AsSymbolSpecification(),
Severity = namingStyleOption.Severity,
Severity = namingStyleOption.Severity.Value,
Location = new SettingLocation(LocationKind.EditorConfig, namingStyleOption.Section.FilePath)
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,8 @@ protected override void UpdateOptions(TieredAnalyzerConfigOptions options, Immut
options.GetInitialLocationAndValue<NamingStylePreferences>(NamingStyleOptions.NamingPreferences, out var location, out var namingPreferences);

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

AddRange(namingStyles);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,17 +67,17 @@ static bool AreSameNamingStyle(NamingStyle left, NamingStyle right)
public static NamingStyle AsNamingStyle(this NamingScheme namingScheme)
=> new(
Guid.NewGuid(),
namingScheme.OptionName,
namingScheme.Prefix,
namingScheme.Suffix,
namingScheme.WordSeparator,
namingScheme.Capitalization);
namingScheme.OptionName.Value,
namingScheme.Prefix.Value,
namingScheme.Suffix.Value,
namingScheme.WordSeparator.Value,
namingScheme.Capitalization.Value);

public static SymbolSpecification AsSymbolSpecification(this ApplicableSymbolInfo applicableSymbolInfo)
=> new(
Guid.NewGuid(),
applicableSymbolInfo.OptionName,
applicableSymbolInfo.SymbolKinds,
applicableSymbolInfo.Accessibilities,
applicableSymbolInfo.Modifiers);
applicableSymbolInfo.OptionName.Value,
applicableSymbolInfo.SymbolKinds.Value,
applicableSymbolInfo.Accessibilities.Value,
applicableSymbolInfo.Modifiers.Value);
}
Original file line number Diff line number Diff line change
Expand Up @@ -81,21 +81,12 @@ static SourceText WithChanges(SourceText sourceText, TextSpan span, string newTe

private static void AppendNamingStylePreferencesToEditorConfig(IEnumerable<NamingRule> namingRules, StringBuilder editorconfig, string? language = null)
{
var symbolSpecifications = namingRules.Select(x => x.SymbolSpecification).ToImmutableArray();
var namingStyles = namingRules.Select(x => x.NamingStyle).ToImmutableArray();
var serializedNamingRules = namingRules.Select(x => new SerializableNamingRule()
{
EnforcementLevel = x.EnforcementLevel,
NamingStyleID = x.NamingStyle.ID,
SymbolSpecificationID = x.SymbolSpecification.ID
}).ToImmutableArray();

language ??= LanguageNames.CSharp;

NamingStylePreferencesEditorConfigSerializer.AppendNamingStylePreferencesToEditorConfig(
symbolSpecifications,
namingStyles,
serializedNamingRules,
[.. namingRules.Select(static x => x.SymbolSpecification)],
[.. namingRules.Select(static x => x.NamingStyle)],
[.. namingRules],
language,
editorconfig);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ private static void GetRecommendedNames(
NamingStylePreferences namingStyleOptions,
CancellationToken cancellationToken)
{
var rules = namingStyleOptions.CreateRules().NamingRules.AddRange(FallbackNamingRules.CompletionFallbackRules);
var rules = namingStyleOptions.Rules.NamingRules.AddRange(FallbackNamingRules.CompletionFallbackRules);

var supplementaryRules = FallbackNamingRules.CompletionSupplementaryRules;
var semanticFactsService = context.GetRequiredLanguageService<ISemanticFactsService>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,13 @@ internal OptionsCollection MergeStyles(OptionsCollection first, OptionsCollectio
{
var firstPreferences = (NamingStylePreferences)first.First().Value;
var secondPreferences = (NamingStylePreferences)second.First().Value;
return new OptionsCollection(_languageName) { { NamingStyleOptions.NamingPreferences, new NamingStylePreferences(
firstPreferences.SymbolSpecifications.AddRange(secondPreferences.SymbolSpecifications),
firstPreferences.NamingStyles.AddRange(secondPreferences.NamingStyles),
firstPreferences.NamingRules.AddRange(secondPreferences.NamingRules)) } };

var mergedPreferences = new NamingStylePreferences(
firstPreferences.SymbolSpecifications.AddRange(secondPreferences.SymbolSpecifications),
firstPreferences.NamingStyles.AddRange(secondPreferences.NamingStyles),
firstPreferences.Rules.NamingRules.AddRange(secondPreferences.Rules.NamingRules));

return new OptionsCollection(_languageName) { { NamingStyleOptions.NamingPreferences, mergedPreferences } };
}

internal OptionsCollection ClassNamesArePascalCase
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ Solution UpdateOptions(Solution oldSolution)
NamingStylePreferencesEditorConfigSerializer.WriteNamingStylePreferencesToEditorConfig(
preferences.SymbolSpecifications,
preferences.NamingStyles,
preferences.NamingRules,
preferences.Rules.NamingRules,
language,
entryWriter: (name, value) => lazyBuilder[name] = value,
triviaWriter: null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,10 +204,9 @@ class MyClass2;
AssertEx.EqualOrDiff("""
<NamingPreferencesInfo SerializationVersion="5">
<SymbolSpecifications>
<SymbolSpecification ID="0" Name="symbols1">
<SymbolSpecification ID="0" Name="symbols0">
<ApplicableSymbolKindList>
<MethodKind>Ordinary</MethodKind>
<SymbolKind>Field</SymbolKind>
</ApplicableSymbolKindList>
<ApplicableAccessibilityList>
<AccessibilityKind>NotApplicable</AccessibilityKind>
Expand All @@ -220,9 +219,10 @@ class MyClass2;
</ApplicableAccessibilityList>
<RequiredModifierList />
</SymbolSpecification>
<SymbolSpecification ID="1" Name="symbols0">
<SymbolSpecification ID="1" Name="symbols1">
<ApplicableSymbolKindList>
<MethodKind>Ordinary</MethodKind>
<SymbolKind>Field</SymbolKind>
</ApplicableSymbolKindList>
<ApplicableAccessibilityList>
<AccessibilityKind>NotApplicable</AccessibilityKind>
Expand All @@ -237,12 +237,12 @@ class MyClass2;
</SymbolSpecification>
</SymbolSpecifications>
<NamingStyles>
<NamingStyle ID="2" Name="style1" Prefix="" Suffix="" WordSeparator="" CapitalizationScheme="PascalCase" />
<NamingStyle ID="3" Name="style0" Prefix="" Suffix="" WordSeparator="" CapitalizationScheme="PascalCase" />
<NamingStyle ID="2" Name="style0" Prefix="" Suffix="" WordSeparator="" CapitalizationScheme="PascalCase" />
<NamingStyle ID="3" Name="style1" Prefix="" Suffix="" WordSeparator="" CapitalizationScheme="PascalCase" />
</NamingStyles>
<NamingRules>
<SerializableNamingRule SymbolSpecificationID="1" NamingStyleID="3" EnforcementLevel="Error" />
<SerializableNamingRule SymbolSpecificationID="0" NamingStyleID="2" EnforcementLevel="Error" />
<SerializableNamingRule SymbolSpecificationID="1" NamingStyleID="3" EnforcementLevel="Error" />
</NamingRules>
</NamingPreferencesInfo>
""",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ private void SetFocusToSelectedRow()
internal override void OnSave()
{
var symbolSpecifications = ArrayBuilder<SymbolSpecification>.GetInstance();
var namingRules = ArrayBuilder<SerializableNamingRule>.GetInstance();
var namingRules = ArrayBuilder<NamingRule>.GetInstance();
var namingStyles = ArrayBuilder<NamingStyle>.GetInstance();

foreach (var item in _viewModel.CodeStyleItems)
Expand All @@ -149,12 +149,10 @@ internal override void OnSave()
continue;
}

var rule = new SerializableNamingRule()
{
EnforcementLevel = item.SelectedNotificationPreference.Notification.Severity,
NamingStyleID = item.SelectedStyle.ID,
SymbolSpecificationID = item.SelectedSpecification.ID
};
var rule = new NamingRule(
item.SelectedSpecification,
item.SelectedStyle.NamingStyle,
item.SelectedNotificationPreference.Notification.Severity);

namingRules.Add(rule);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ internal class NamingStyleOptionPageViewModel : AbstractNotifyPropertyChanged
public NamingStyleOptionPageViewModel(NamingStylePreferences info)
{
var viewModels = new List<NamingRuleViewModel>();
foreach (var namingRule in info.NamingRules)
foreach (var namingRule in info.Rules.NamingRules)
{
var viewModel = new NamingRuleViewModel()
{
Expand All @@ -48,8 +48,8 @@ public NamingStyleOptionPageViewModel(NamingStylePreferences info)
NotificationPreferences = new List<NotificationOptionViewModel>(_notifications)
};

viewModel.SelectedSpecification = viewModel.Specifications.Single(s => s.ID == namingRule.SymbolSpecificationID);
viewModel.SelectedStyle = viewModel.NamingStyles.Single(s => s.ID == namingRule.NamingStyleID);
viewModel.SelectedSpecification = viewModel.Specifications.Single(s => s.ID == namingRule.SymbolSpecification.ID);
viewModel.SelectedStyle = viewModel.NamingStyles.Single(s => s.ID == namingRule.NamingStyle.ID);
viewModel.SelectedNotificationPreference = viewModel.NotificationPreferences.Single(n => n.Notification.Severity == namingRule.EnforcementLevel);

viewModels.Add(viewModel);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ internal static EditorConfigFile<EditorConfigOption> CreateParseResults(string e
foreach (var (headerText, span, isGlobal) in sections)
{
var section = new Section(editorconfigFilePath, isGlobal, span, headerText, $"[{headerText}]");
var parseResult = new EditorConfigOption(section, null);
var parseResult = new EditorConfigOption<object?>(section, Span: null, Value: null);
list.Add(parseResult);
}

Expand Down
Loading