提交 63ad39f3 编写于 作者: C CyrusNajmabadi

Simplify code.

上级 1fc5ab7d
......@@ -44,22 +44,16 @@ private void CompilationStartAction(CompilationStartAnalysisContext context)
{
var idToCachedResult = new ConcurrentDictionary<Guid, ConcurrentDictionary<string, string>>(
concurrencyLevel: 2, capacity: 0);
var preferencesToRules = new ConcurrentDictionary<NamingStylePreferences, NamingStyleRules>(
concurrencyLevel: 2, capacity: 0, comparer: ReferenceEqualityComparer.Instance);
context.RegisterSymbolAction(c => SymbolAction(c, idToCachedResult, preferencesToRules), _symbolKinds);
context.RegisterSymbolAction(c => SymbolAction(c, idToCachedResult), _symbolKinds);
}
private static readonly Func<Guid, ConcurrentDictionary<string, string>> s_createCache =
_ => new ConcurrentDictionary<string, string>(concurrencyLevel: 2, capacity: 0);
private static readonly Func<NamingStylePreferences, NamingStyleRules> s_createRules =
p => p.GetNamingStyleRules();
private void SymbolAction(
SymbolAnalysisContext context,
ConcurrentDictionary<Guid, ConcurrentDictionary<string, string>> idToCachedResult,
ConcurrentDictionary<NamingStylePreferences, NamingStyleRules> preferencesToRules)
ConcurrentDictionary<Guid, ConcurrentDictionary<string, string>> idToCachedResult)
{
var namingPreferences = context.GetNamingStylePreferencesAsync().GetAwaiter().GetResult();
if (namingPreferences == null)
......@@ -67,7 +61,7 @@ private void CompilationStartAction(CompilationStartAnalysisContext context)
return;
}
var namingStyleRules = preferencesToRules.GetOrAdd(namingPreferences, s_createRules);
var namingStyleRules = namingPreferences.Rules;
if (!namingStyleRules.TryGetApplicableRule(context.Symbol, out var applicableRule) ||
applicableRule.EnforcementLevel == DiagnosticSeverity.Hidden)
......
......@@ -23,6 +23,8 @@ internal class NamingStylePreferences : IEquatable<NamingStylePreferences>
public readonly ImmutableArray<MutableNamingStyle> NamingStyles;
public readonly ImmutableArray<SerializableNamingRule> NamingRules;
private readonly Lazy<NamingStyleRules> _lazyRules;
internal NamingStylePreferences(
ImmutableArray<SymbolSpecification> symbolSpecifications,
ImmutableArray<MutableNamingStyle> namingStyles,
......@@ -31,6 +33,8 @@ internal class NamingStylePreferences : IEquatable<NamingStylePreferences>
SymbolSpecifications = symbolSpecifications;
NamingStyles = namingStyles;
NamingRules = namingRules;
_lazyRules = new Lazy<NamingStyleRules>(CreateRules, isThreadSafe: true);
}
internal NamingStylePreferences()
......@@ -45,19 +49,15 @@ internal NamingStylePreferences()
public static string DefaultNamingPreferencesString => _defaultNamingPreferencesString;
internal MutableNamingStyle GetNamingStyle(Guid namingStyleID)
{
return NamingStyles.Single(s => s.ID == namingStyleID);
}
=> NamingStyles.Single(s => s.ID == namingStyleID);
internal SymbolSpecification GetSymbolSpecification(Guid symbolSpecificationID)
{
return SymbolSpecifications.Single(s => s.ID == symbolSpecificationID);
}
=> SymbolSpecifications.Single(s => s.ID == symbolSpecificationID);
public NamingStyleRules GetNamingStyleRules()
{
return new NamingStyleRules(NamingRules.Select(r => r.GetRule(this)).ToImmutableArray());
}
public NamingStyleRules Rules => _lazyRules.Value;
public NamingStyleRules CreateRules()
=> new NamingStyleRules(NamingRules.Select(r => r.GetRule(this)).ToImmutableArray());
internal XElement CreateXElement()
{
......@@ -156,15 +156,15 @@ public bool Equals(NamingStylePreferences other)
{
return true;
}
else if(leftIsNull)
else if (leftIsNull)
{
return false;
}
else if(rightIsNull)
else if (rightIsNull)
{
return false;
}
return left.Equals(right);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册