提交 a3124a7c 编写于 作者: C CyrusNajmabadi

Present feature to user as 'simplify default expression'.

上级 85de1be8
......@@ -79,7 +79,7 @@ public override Task RegisterCodeFixesAsync(CodeFixContext context)
private class MyCodeAction : CodeAction.DocumentChangeAction
{
public MyCodeAction(Func<CancellationToken, Task<Document>> createChangedDocument)
: base(FeaturesResources.Use_default_literal, createChangedDocument)
: base(FeaturesResources.Simplify_default_expression, createChangedDocument)
{
}
}
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading;
using Microsoft.CodeAnalysis.CodeStyle;
using Microsoft.CodeAnalysis.CSharp.CodeStyle;
using Microsoft.CodeAnalysis.CSharp.Extensions;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.CSharp.Utilities;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.Text;
......@@ -16,8 +14,8 @@ internal class CSharpUseDefaultLiteralDiagnosticAnalyzer : AbstractCodeStyleDiag
{
public CSharpUseDefaultLiteralDiagnosticAnalyzer()
: base(IDEDiagnosticIds.UseDefaultLiteralDiagnosticId,
new LocalizableResourceString(
nameof(FeaturesResources.Use_default_literal), FeaturesResources.ResourceManager, typeof(FeaturesResources)))
new LocalizableResourceString(nameof(FeaturesResources.Simplify_default_expression), FeaturesResources.ResourceManager, typeof(FeaturesResources)),
new LocalizableResourceString(nameof(FeaturesResources.default_expression_can_be_simplified), FeaturesResources.ResourceManager, typeof(FeaturesResources)))
{
}
......@@ -53,7 +51,7 @@ private void AnalyzeSyntax(SyntaxNodeAnalysisContext context)
// Create a normal diagnostic that covers the entire default expression.
context.ReportDiagnostic(
Diagnostic.Create(GetDescriptorWithSeverity(
optionSet.GetOption(CSharpCodeStyleOptions.PreferDefaultLiteral).Notification.Value),
optionSet.GetOption(CSharpCodeStyleOptions.PreferSimpleDefaultExpression).Notification.Value),
defaultExpression.GetLocation()));
// Also fade out the part of the default expression from the open paren through
......
......@@ -863,6 +863,15 @@ internal class FeaturesResources {
}
}
/// <summary>
/// Looks up a localized string similar to &apos;default&apos; expression can be simplified.
/// </summary>
internal static string default_expression_can_be_simplified {
get {
return ResourceManager.GetString("default_expression_can_be_simplified", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to delegate.
/// </summary>
......@@ -2664,6 +2673,15 @@ internal class FeaturesResources {
}
}
/// <summary>
/// Looks up a localized string similar to Simplify &apos;default&apos; expression.
/// </summary>
internal static string Simplify_default_expression {
get {
return ResourceManager.GetString("Simplify_default_expression", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Simplify Member Access.
/// </summary>
......@@ -3280,15 +3298,6 @@ internal class FeaturesResources {
}
}
/// <summary>
/// Looks up a localized string similar to Use &apos;default&apos; literal.
/// </summary>
internal static string Use_default_literal {
get {
return ResourceManager.GetString("Use_default_literal", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Use explicitly provided tuple name.
/// </summary>
......
......@@ -1241,7 +1241,10 @@ This version used in: {2}</value>
<data name="Implement_0" xml:space="preserve">
<value>Implement {0}</value>
</data>
<data name="Use_default_literal" xml:space="preserve">
<value>Use 'default' literal</value>
<data name="Simplify_default_expression" xml:space="preserve">
<value>Simplify 'default' expression</value>
</data>
<data name="default_expression_can_be_simplified" xml:space="preserve">
<value>'default' expression can be simplified</value>
</data>
</root>
\ No newline at end of file
......@@ -427,7 +427,7 @@ public Customer()
}}
";
private static readonly string s_preferDefaultLiteral = $@"
private static readonly string s_preferSimpleDefaultExpression = $@"
using System.Threading;
class Customer
......@@ -708,7 +708,7 @@ internal StyleViewModel(OptionSet optionSet, IServiceProvider serviceProvider) :
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(CSharpCodeStyleOptions.PreferPatternMatchingOverIsWithCastCheck, CSharpVSResources.Prefer_pattern_matching_over_is_with_cast_check, s_preferPatternMatchingOverIsWithCastCheck, s_preferPatternMatchingOverIsWithCastCheck, this, optionSet, expressionPreferencesGroupTitle));
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(CSharpCodeStyleOptions.PreferPatternMatchingOverAsWithNullCheck, CSharpVSResources.Prefer_pattern_matching_over_as_with_null_check, s_preferPatternMatchingOverAsWithNullCheck, s_preferPatternMatchingOverAsWithNullCheck, this, optionSet, expressionPreferencesGroupTitle));
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(CodeStyleOptions.PreferExplicitTupleNames, ServicesVSResources.Prefer_explicit_tuple_name, s_preferExplicitTupleName, s_preferExplicitTupleName, this, optionSet, expressionPreferencesGroupTitle));
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(CSharpCodeStyleOptions.PreferDefaultLiteral, ServicesVSResources.Prefer_default_literal, s_preferDefaultLiteral, s_preferDefaultLiteral, this, optionSet, expressionPreferencesGroupTitle));
CodeStyleItems.Add(new BooleanCodeStyleOptionViewModel(CSharpCodeStyleOptions.PreferSimpleDefaultExpression, ServicesVSResources.Prefer_simple_default_expression, s_preferSimpleDefaultExpression, s_preferSimpleDefaultExpression, this, optionSet, expressionPreferencesGroupTitle));
AddExpressionBodyOptions(optionSet, expressionPreferencesGroupTitle);
......
......@@ -1502,15 +1502,6 @@ internal class ServicesVSResources {
}
}
/// <summary>
/// Looks up a localized string similar to Prefer &apos;default&apos; literal.
/// </summary>
internal static string Prefer_default_literal {
get {
return ResourceManager.GetString("Prefer_default_literal", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Prefer explicit tuple name.
/// </summary>
......@@ -1565,6 +1556,15 @@ internal class ServicesVSResources {
}
}
/// <summary>
/// Looks up a localized string similar to Prefer simple &apos;default&apos; expression.
/// </summary>
internal static string Prefer_simple_default_expression {
get {
return ResourceManager.GetString("Prefer_simple_default_expression", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to prefer throwing properties.
/// </summary>
......
......@@ -912,7 +912,7 @@ Additional information: {1}</value>
<data name="Options" xml:space="preserve">
<value>Options</value>
</data>
<data name="Prefer_default_literal" xml:space="preserve">
<value>Prefer 'default' literal</value>
<data name="Prefer_simple_default_expression" xml:space="preserve">
<value>Prefer simple 'default' expression</value>
</data>
</root>
\ No newline at end of file
......@@ -134,11 +134,11 @@ internal static class CSharpCodeStyleOptions
EditorConfigStorageLocation.ForBoolCodeStyleOption("csharp_prefer_braces"),
new RoamingProfileStorageLocation($"TextEditor.CSharp.Specific.{nameof(PreferBraces)}")});
public static readonly Option<CodeStyleOption<bool>> PreferDefaultLiteral = new Option<CodeStyleOption<bool>>(
nameof(CodeStyleOptions), nameof(PreferDefaultLiteral), defaultValue: CodeStyleOptions.TrueWithSuggestionEnforcement,
public static readonly Option<CodeStyleOption<bool>> PreferSimpleDefaultExpression = new Option<CodeStyleOption<bool>>(
nameof(CodeStyleOptions), nameof(PreferSimpleDefaultExpression), defaultValue: CodeStyleOptions.TrueWithSuggestionEnforcement,
storageLocations: new OptionStorageLocation[] {
EditorConfigStorageLocation.ForBoolCodeStyleOption("csharp_prefer_default_literal"),
new RoamingProfileStorageLocation($"TextEditor.CSharp.Specific.{nameof(PreferDefaultLiteral)}")});
EditorConfigStorageLocation.ForBoolCodeStyleOption("csharp_prefer_simple_default_expression"),
new RoamingProfileStorageLocation($"TextEditor.CSharp.Specific.{nameof(PreferSimpleDefaultExpression)}")});
public static IEnumerable<Option<CodeStyleOption<bool>>> GetCodeStyleOptions()
{
......@@ -149,7 +149,7 @@ public static IEnumerable<Option<CodeStyleOption<bool>>> GetCodeStyleOptions()
yield return PreferPatternMatchingOverAsWithNullCheck;
yield return PreferPatternMatchingOverIsWithCastCheck;
yield return PreferBraces;
yield return PreferDefaultLiteral;
yield return PreferSimpleDefaultExpression;
}
public static IEnumerable<Option<CodeStyleOption<ExpressionBodyPreference>>> GetExpressionBodyOptions()
......
......@@ -21,7 +21,7 @@ internal static class DefaultExpressionSyntaxExtensions
CancellationToken cancellationToken)
{
if (parseOptions.LanguageVersion < LanguageVersion.CSharp7_1 ||
!options.GetOption(CSharpCodeStyleOptions.PreferDefaultLiteral).Value)
!options.GetOption(CSharpCodeStyleOptions.PreferSimpleDefaultExpression).Value)
{
return false;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册