public async Task<InconsistentAccessibilityInfo> GetInconsistentAccessibilityInfoAsync(Document document, Diagnostic diagnostic, CancellationToken cancellationToken) { var result = new InconsistentAccessibilityInfo(); var syntaxRoot = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false); var indexerThatRaisedError = syntaxRoot.FindNode(diagnostic.Location.SourceSpan).AncestorsAndSelf().OfType<IndexerDeclarationSyntax>().FirstOrDefault(); if (indexerThatRaisedError != null) { result.TypeToChangeAccessibility = indexerThatRaisedError.Type; result.CodeActionMessage = string.Format(CodeActionMessage.ToString(), result.TypeToChangeAccessibility, indexerThatRaisedError.ParameterList.Parameters.ToString()); result.NewAccessibilityModifiers = indexerThatRaisedError.Modifiers.CloneAccessibilityModifiers(); } return result; }
public async Task<InconsistentAccessibilityInfo> GetInconsistentAccessibilityInfoAsync(Document document, Diagnostic diagnostic, CancellationToken cancellationToken) { var result = new InconsistentAccessibilityInfo(); var syntaxRoot = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false); var methodThatRaisedError = syntaxRoot.FindNode(diagnostic.Location.SourceSpan).DescendantNodesAndSelf().OfType<MethodDeclarationSyntax>().FirstOrDefault(); if (methodThatRaisedError != null) { result.TypeToChangeAccessibility = methodThatRaisedError.ReturnType; result.CodeActionMessage = string.Format(CodeActionMessage.ToString(), methodThatRaisedError.ReturnType, methodThatRaisedError.GetIdentifier().ValueText); result.NewAccessibilityModifiers = methodThatRaisedError.Modifiers.CloneAccessibilityModifiers(); } return result; }
public async Task<InconsistentAccessibilityInfo> GetInconsistentAccessibilityInfoAsync(Document document, Diagnostic diagnostic, CancellationToken cancellationToken) { var result = new InconsistentAccessibilityInfo(); var syntaxRoot = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false); var methodThatRaisedError = syntaxRoot.FindNode(diagnostic.Location.SourceSpan).DescendantNodesAndSelf().OfType<BaseMethodDeclarationSyntax>().FirstOrDefault(); if (methodThatRaisedError != null) { var parameterTypeFromMessage = ExtractParameterTypeFromDiagnosticMessage(diagnostic); var parameterTypeLastIdentifier = parameterTypeFromMessage; var parameterTypeDotIndex = parameterTypeLastIdentifier.LastIndexOf('.'); if (parameterTypeDotIndex > 0) { parameterTypeLastIdentifier = parameterTypeLastIdentifier.Substring(parameterTypeDotIndex + 1); } result.TypeToChangeAccessibility = FindTypeSyntaxFromParametersList(methodThatRaisedError.ParameterList.Parameters, parameterTypeLastIdentifier); result.CodeActionMessage = string.Format(CodeActionMessage.ToString(), parameterTypeFromMessage, methodThatRaisedError.GetIdentifier().ValueText); result.NewAccessibilityModifiers = methodThatRaisedError.CloneAccessibilityModifiers(); } return result; }