public override async Task ComputeRefactoringsAsync(CodeRefactoringContext context) { var(document, textSpan, cancellationToken) = context; var syntaxTree = (await document.GetSyntaxTreeAsync(cancellationToken).ConfigureAwait(false)) !; if (!MakeLocalFunctionStaticHelper.IsStaticLocalFunctionSupported(((CSharpParseOptions)syntaxTree.Options).LanguageVersion)) { return; } var localFunction = await context.TryGetRelevantNodeAsync <LocalFunctionStatementSyntax>().ConfigureAwait(false); if (localFunction == null) { return; } if (localFunction.Modifiers.Any(SyntaxKind.StaticKeyword)) { return; } var semanticModel = (await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false)) !; if (MakeLocalFunctionStaticHelper.CanMakeLocalFunctionStaticByRefactoringCaptures(localFunction, semanticModel, out var captures)) { context.RegisterRefactoring(new MyCodeAction( c => MakeLocalFunctionStaticCodeFixHelper.MakeLocalFunctionStaticAsync(document, localFunction, captures, c))); } }
public override async Task ComputeRefactoringsAsync(CodeRefactoringContext context) { var(document, textSpan, cancellationToken) = context; var syntaxTree = (await document.GetSyntaxTreeAsync(cancellationToken).ConfigureAwait(false)) !; if (!MakeLocalFunctionStaticHelper.IsStaticLocalFunctionSupported(syntaxTree)) { return; } var localFunction = await context.TryGetRelevantNodeAsync <LocalFunctionStatementSyntax>().ConfigureAwait(false); if (localFunction == null) { return; } if (localFunction.Modifiers.Any(SyntaxKind.StaticKeyword)) { return; } var semanticModel = (await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false)) !; if (MakeLocalFunctionStaticHelper.TryGetCaputuredSymbolsAndCheckApplicability(localFunction, semanticModel, out var captures)) { context.RegisterRefactoring(new MyCodeAction( CSharpAnalyzersResources.Make_local_function_static, c => MakeLocalFunctionStaticCodeFixHelper.MakeLocalFunctionStaticAsync(document, localFunction, captures, c))); } }
public override Task RegisterCodeFixesAsync(CodeFixContext context) { var diagnostic = context.Diagnostics.First(); return(WrapFixAsync( context.Document, ImmutableArray.Create(diagnostic), (document, localFunction, captures) => { context.RegisterCodeFix( new MyCodeAction( c => MakeLocalFunctionStaticCodeFixHelper.MakeLocalFunctionStaticAsync( document, localFunction, captures, c ) ), diagnostic ); return Task.CompletedTask; }, context.CancellationToken )); }
protected override Task FixAllAsync(Document document, ImmutableArray <Diagnostic> diagnostics, SyntaxEditor editor, CancellationToken cancellationToken) => WrapFixAsync( document, diagnostics, (d, localFunction, captures) => MakeLocalFunctionStaticCodeFixHelper.MakeLocalFunctionStaticAsync( d, localFunction, captures, editor, cancellationToken), cancellationToken);
public override Task RegisterCodeFixesAsync(CodeFixContext context) { var diagnostic = context.Diagnostics.First(); return(WrapFixAsync( context.Document, ImmutableArray.Create(diagnostic), (document, localFunction, captures) => { context.RegisterCodeFix( CodeAction.Create( CSharpCodeFixesResources.Pass_in_captured_variables_as_arguments, c => MakeLocalFunctionStaticCodeFixHelper.MakeLocalFunctionStaticAsync(document, localFunction, captures, context.Options, c), nameof(CSharpCodeFixesResources.Pass_in_captured_variables_as_arguments)), diagnostic); return Task.CompletedTask; }, context.CancellationToken)); }