diff --git a/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyForIndexersHelper.cs b/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyForIndexersHelper.cs index b175f2f90ea0efca2d926138199ed1d62facbde3..5f78608c9888b73939f897b672625005fbc9cab8 100644 --- a/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyForIndexersHelper.cs +++ b/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyForIndexersHelper.cs @@ -6,7 +6,6 @@ using Microsoft.CodeAnalysis.CSharp.CodeStyle; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Diagnostics; -using Microsoft.CodeAnalysis.Options; namespace Microsoft.CodeAnalysis.CSharp.UseExpressionBody { @@ -52,10 +51,9 @@ protected override IndexerDeclarationSyntax WithBody(IndexerDeclarationSyntax de throw new InvalidOperationException(); } - protected override IndexerDeclarationSyntax WithGenerateBody( - SemanticModel semanticModel, IndexerDeclarationSyntax declaration, OptionSet options, ParseOptions parseOptions) + protected override IndexerDeclarationSyntax WithGenerateBody(SemanticModel semanticModel, IndexerDeclarationSyntax declaration) { - return WithAccessorList(semanticModel, declaration, options, parseOptions); + return WithAccessorList(semanticModel, declaration); } protected override bool CreateReturnStatementForExpression(SemanticModel semanticModel, IndexerDeclarationSyntax declaration) => true; diff --git a/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyForPropertiesHelper.cs b/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyForPropertiesHelper.cs index 363338eb25d92a29d35539f4a5c0594ab127d224..62608d7676937ad4d9bcc715d2060364a4b4d599 100644 --- a/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyForPropertiesHelper.cs +++ b/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyForPropertiesHelper.cs @@ -6,7 +6,6 @@ using Microsoft.CodeAnalysis.CSharp.CodeStyle; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Diagnostics; -using Microsoft.CodeAnalysis.Options; namespace Microsoft.CodeAnalysis.CSharp.UseExpressionBody { @@ -52,11 +51,9 @@ protected override PropertyDeclarationSyntax WithBody(PropertyDeclarationSyntax throw new InvalidOperationException(); } - protected override PropertyDeclarationSyntax WithGenerateBody( - SemanticModel semanticModel, PropertyDeclarationSyntax declaration, - OptionSet options, ParseOptions parseOptions) + protected override PropertyDeclarationSyntax WithGenerateBody(SemanticModel semanticModel, PropertyDeclarationSyntax declaration) { - return WithAccessorList(semanticModel, declaration, options, parseOptions); + return WithAccessorList(semanticModel, declaration); } protected override bool CreateReturnStatementForExpression(SemanticModel semanticModel, PropertyDeclarationSyntax declaration) => true; diff --git a/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyHelper.cs b/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyHelper.cs index 4d8411ae6123aaef48f66bce50ba63eafa4235b9..8c57dd95c4ea915a66d8c16da1ed088d201d3c96 100644 --- a/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyHelper.cs +++ b/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyHelper.cs @@ -20,7 +20,7 @@ internal abstract class UseExpressionBodyHelper public abstract bool CanOfferUseExpressionBody(OptionSet optionSet, SyntaxNode declaration, bool forAnalyzer); public abstract (bool canOffer, bool fixesError) CanOfferUseBlockBody(OptionSet optionSet, SyntaxNode declaration, bool forAnalyzer); - public abstract SyntaxNode Update(SemanticModel semanticModel, SyntaxNode declaration, OptionSet options, ParseOptions parseOptions, bool useExpressionBody); + public abstract SyntaxNode Update(SemanticModel semanticModel, SyntaxNode declaration, bool useExpressionBody); public abstract Location GetDiagnosticLocation(SyntaxNode declaration); diff --git a/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyHelper`1.cs b/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyHelper`1.cs index 4998ada35655bf00ad1a1ddc7deb0d153be1511d..ca07045c15af1617a0dfdc046655d4c9a5fe871a 100644 --- a/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyHelper`1.cs +++ b/src/Features/CSharp/Portable/UseExpressionBody/Helpers/UseExpressionBodyHelper`1.cs @@ -69,8 +69,8 @@ public override bool CanOfferUseExpressionBody(OptionSet optionSet, SyntaxNode d public override (bool canOffer, bool fixesError) CanOfferUseBlockBody(OptionSet optionSet, SyntaxNode declaration, bool forAnalyzer) => CanOfferUseBlockBody(optionSet, (TDeclaration)declaration, forAnalyzer); - public sealed override SyntaxNode Update(SemanticModel semanticModel, SyntaxNode declaration, OptionSet options, ParseOptions parseOptions, bool useExpressionBody) - => Update(semanticModel, (TDeclaration)declaration, options, parseOptions, useExpressionBody); + public sealed override SyntaxNode Update(SemanticModel semanticModel, SyntaxNode declaration, bool useExpressionBody) + => Update(semanticModel, (TDeclaration)declaration, useExpressionBody); public override Location GetDiagnosticLocation(SyntaxNode declaration) => GetDiagnosticLocation((TDeclaration)declaration); @@ -94,14 +94,14 @@ protected virtual Location GetDiagnosticLocation(TDeclaration declaration) var expressionBody = this.GetExpressionBody(declaration); if (expressionBody == null) { - // They don't have an expression body. See if we could convert the block they + // They don't have an expression body. See if we could convert the block they // have into one. var options = declaration.SyntaxTree.Options; var conversionPreference = forAnalyzer ? preference : ExpressionBodyPreference.WhenPossible; return TryConvertToExpressionBody(declaration, options, conversionPreference, - out var expressionWhenOnSingleLine, out var semicolonWhenOnSingleLine); + expressionWhenOnSingleLine: out _, semicolonWhenOnSingleLine: out _); } } @@ -165,7 +165,7 @@ protected virtual Location GetDiagnosticLocation(TDeclaration declaration) var expressionBodyOpt = this.GetExpressionBody(declaration); var canOffer = expressionBodyOpt?.TryConvertToBlock( - SyntaxFactory.Token(SyntaxKind.SemicolonToken), false, out var block) == true; + SyntaxFactory.Token(SyntaxKind.SemicolonToken), false, block: out _) == true; if (!canOffer) { return (canOffer, fixesError: false); @@ -194,7 +194,7 @@ protected virtual Location GetDiagnosticLocation(TDeclaration declaration) else if (languageVersion < LanguageVersion.CSharp6) { // If they're using expression bodies prior to C# 6, then always mark this as something - // that can be fixed by the analyzer. This way we'll also get 'fix all' working to fix + // that can be fixed by the analyzer. This way we'll also get 'fix all' working to fix // all these cases. return (canOffer, fixesError: true); } @@ -206,9 +206,7 @@ protected virtual Location GetDiagnosticLocation(TDeclaration declaration) return (canOffer, fixesError: false); } - public TDeclaration Update( - SemanticModel semanticModel, TDeclaration declaration, OptionSet options, - ParseOptions parseOptions, bool useExpressionBody) + public TDeclaration Update(SemanticModel semanticModel, TDeclaration declaration, bool useExpressionBody) { if (useExpressionBody) { @@ -231,7 +229,7 @@ protected virtual Location GetDiagnosticLocation(TDeclaration declaration) { return WithSemicolonToken( WithExpressionBody( - WithGenerateBody(semanticModel, declaration, options, parseOptions), + WithGenerateBody(semanticModel, declaration), expressionBody: null), default); } @@ -249,11 +247,9 @@ protected virtual Location GetDiagnosticLocation(TDeclaration declaration) protected abstract TDeclaration WithExpressionBody(TDeclaration declaration, ArrowExpressionClauseSyntax expressionBody); protected abstract TDeclaration WithBody(TDeclaration declaration, BlockSyntax body); - protected virtual TDeclaration WithGenerateBody( - SemanticModel semanticModel, TDeclaration declaration, OptionSet options, ParseOptions parseOptions) + protected virtual TDeclaration WithGenerateBody(SemanticModel semanticModel, TDeclaration declaration) { var expressionBody = GetExpressionBody(declaration); - var semicolonToken = GetSemicolonToken(declaration); if (expressionBody.TryConvertToBlock( GetSemicolonToken(declaration), @@ -266,13 +262,12 @@ protected virtual Location GetDiagnosticLocation(TDeclaration declaration) return declaration; } - protected TDeclaration WithAccessorList( - SemanticModel semanticModel, TDeclaration declaration, OptionSet options, ParseOptions parseOptions) + protected TDeclaration WithAccessorList(SemanticModel semanticModel, TDeclaration declaration) { var expressionBody = GetExpressionBody(declaration); var semicolonToken = GetSemicolonToken(declaration); - // When converting an expression-bodied property to a block body, always attempt to + // When converting an expression-bodied property to a block body, always attempt to // create an accessor with a block body (even if the user likes expression bodied // accessors. While this technically doesn't match their preferences, it fits with // the far more likely scenario that the user wants to convert this property into diff --git a/src/Features/CSharp/Portable/UseExpressionBody/UseExpressionBodyCodeFixProvider.cs b/src/Features/CSharp/Portable/UseExpressionBody/UseExpressionBodyCodeFixProvider.cs index f030def6cacee47484b4e8a97253e5c7bdda4e57..82b472d1c2f098431fc0dbc58a13e3cf71790875 100644 --- a/src/Features/CSharp/Portable/UseExpressionBody/UseExpressionBodyCodeFixProvider.cs +++ b/src/Features/CSharp/Portable/UseExpressionBody/UseExpressionBodyCodeFixProvider.cs @@ -56,17 +56,16 @@ public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) SyntaxEditor editor, CancellationToken cancellationToken) { var semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false); - var options = await document.GetOptionsAsync(cancellationToken).ConfigureAwait(false); var accessorLists = new HashSet(); foreach (var diagnostic in diagnostics) { cancellationToken.ThrowIfCancellationRequested(); - AddEdits(semanticModel, editor, diagnostic, options, accessorLists, cancellationToken); + AddEdits(semanticModel, editor, diagnostic, accessorLists, cancellationToken); } // Ensure that if we changed any accessors that the accessor lists they're contained - // in are formatted properly as well. Do this as a last pass so that we see all + // in are formatted properly as well. Do this as a last pass so that we see all // individual changes made to the child accessors if we're doing a fix-all. foreach (var accessorList in accessorLists) { @@ -76,16 +75,15 @@ public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) private void AddEdits( SemanticModel semanticModel, SyntaxEditor editor, Diagnostic diagnostic, - OptionSet options, HashSet accessorLists, + HashSet accessorLists, CancellationToken cancellationToken) { var declarationLocation = diagnostic.AdditionalLocations[0]; var helper = _helpers.Single(h => h.DiagnosticId == diagnostic.Id); var declaration = declarationLocation.FindNode(cancellationToken); var useExpressionBody = diagnostic.Properties.ContainsKey(nameof(UseExpressionBody)); - var parseOptions = declaration.SyntaxTree.Options; - var updatedDeclaration = helper.Update(semanticModel, declaration, options, parseOptions, useExpressionBody) + var updatedDeclaration = helper.Update(semanticModel, declaration, useExpressionBody) .WithAdditionalAnnotations(Formatter.Annotation); editor.ReplaceNode(declaration, updatedDeclaration); diff --git a/src/Features/CSharp/Portable/UseExpressionBody/UseExpressionBodyCodeRefactoringProvider.cs b/src/Features/CSharp/Portable/UseExpressionBody/UseExpressionBodyCodeRefactoringProvider.cs index 5fd9054e88b64a70a6de1f56b0381240367d0816..4c9e5dce8300b576485bced534f2e08fddb5a8db 100644 --- a/src/Features/CSharp/Portable/UseExpressionBody/UseExpressionBodyCodeRefactoringProvider.cs +++ b/src/Features/CSharp/Portable/UseExpressionBody/UseExpressionBodyCodeRefactoringProvider.cs @@ -83,7 +83,7 @@ public override async Task ComputeRefactoringsAsync(CodeRefactoringContext conte context.RegisterRefactoring(new MyCodeAction( helper.UseExpressionBodyTitle.ToString(), c => UpdateDocumentAsync( - document, root, declaration, optionSet, helper, + document, root, declaration, helper, useExpressionBody: true, cancellationToken: c))); succeeded = true; } @@ -94,7 +94,7 @@ public override async Task ComputeRefactoringsAsync(CodeRefactoringContext conte context.RegisterRefactoring(new MyCodeAction( helper.UseBlockBodyTitle.ToString(), c => UpdateDocumentAsync( - document, root, declaration, optionSet, helper, + document, root, declaration, helper, useExpressionBody: false, cancellationToken: c))); succeeded = true; } @@ -117,12 +117,11 @@ private SyntaxNode GetDeclaration(SyntaxNode node, UseExpressionBodyHelper helpe private async Task UpdateDocumentAsync( Document document, SyntaxNode root, SyntaxNode declaration, - OptionSet options, UseExpressionBodyHelper helper, bool useExpressionBody, + UseExpressionBodyHelper helper, bool useExpressionBody, CancellationToken cancellationToken) { - var parseOptions = root.SyntaxTree.Options; var semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false); - var updatedDeclaration = helper.Update(semanticModel, declaration, options, parseOptions, useExpressionBody); + var updatedDeclaration = helper.Update(semanticModel, declaration, useExpressionBody); var parent = declaration is AccessorDeclarationSyntax ? declaration.Parent diff --git a/src/Features/CSharp/Portable/UseExpressionBodyForLambda/UseExpressionBodyForLambdaCodeStyleProvider.cs b/src/Features/CSharp/Portable/UseExpressionBodyForLambda/UseExpressionBodyForLambdaCodeStyleProvider.cs index 957a44842b6955c6d0bad57ccd94b5e6b4e3746f..9f6090b407346ff3f25a26ed22be0f75df3b67b1 100644 --- a/src/Features/CSharp/Portable/UseExpressionBodyForLambda/UseExpressionBodyForLambdaCodeStyleProvider.cs +++ b/src/Features/CSharp/Portable/UseExpressionBodyForLambda/UseExpressionBodyForLambdaCodeStyleProvider.cs @@ -134,15 +134,6 @@ private static LambdaExpressionSyntax Update(SemanticModel semanticModel, Lambda : WithBlockBody(semanticModel, originalDeclaration, currentDeclaration); } - private static LambdaExpressionSyntax UpdateWorker( - SemanticModel semanticModel, bool useExpressionBody, - LambdaExpressionSyntax originalDeclaration, LambdaExpressionSyntax currentDeclaration) - { - return useExpressionBody - ? WithExpressionBody(currentDeclaration) - : WithBlockBody(semanticModel, originalDeclaration, currentDeclaration); - } - private static LambdaExpressionSyntax WithExpressionBody(LambdaExpressionSyntax declaration) { if (!TryConvertToExpressionBody(