private static void AnalyzeLocationForOperation(OperationAnalysisContext context,
                                                        DoWhileLoopLookupKeywordStrategy doWhileStrategy, TryFinallyLookupKeywordStrategy tryFinallyStrategy)
        {
            Location location = context.Operation.TryGetLocationForKeyword(doWhileStrategy, tryFinallyStrategy);

            if (location != null)
            {
                context.ReportDiagnostic(Diagnostic.Create(Rule, location));
            }
        }
        public static Location TryGetLocationForKeyword([NotNull] this IOperation operation,
                                                        DoWhileLoopLookupKeywordStrategy doWhileLoopLookupStrategy      = DoWhileLoopLookupKeywordStrategy.PreferDoKeyword,
                                                        TryFinallyLookupKeywordStrategy tryFinallyLookupKeywordStrategy = TryFinallyLookupKeywordStrategy.PreferTryKeyword)
        {
            if (operation.IsImplicit)
            {
                return(null);
            }

            var visitor = new OperationLocationVisitor(doWhileLoopLookupStrategy, tryFinallyLookupKeywordStrategy);

            return(visitor.Visit(operation, null));
        }
 public OperationLocationVisitor(DoWhileLoopLookupKeywordStrategy doWhileStrategy,
                                 TryFinallyLookupKeywordStrategy tryFinallyStrategy)
 {
     this.doWhileStrategy    = doWhileStrategy;
     this.tryFinallyStrategy = tryFinallyStrategy;
 }