public IPostfixLookupItem CreateItem(PostfixTemplateContext context)
        {
            if (context.IsAutoCompletion)
            {
                foreach (var expressionContext in context.Expressions)
                {
                    var castExpression = CastExpressionNavigator.GetByOp(expressionContext.Expression);
                    if (castExpression == null)
                    {
                        continue;               // available in auto over cast expressions
                    }
                    var expression = ParenthesizedExpressionNavigator.GetByExpression(castExpression);
                    if (expression != null)
                    {
                        continue;           // not already parenthesized
                    }
                    return(new ParenthesesItem(expressionContext));
                }

                return(null);
            }

            var contexts = CommonUtils.FindExpressionWithValuesContexts(context);

            if (contexts.Length == 0)
            {
                return(null);
            }

            return(new ParenthesesItem(contexts));
        }
Beispiel #2
0
        public PostfixTemplateInfo TryCreateInfo(CSharpPostfixTemplateContext context)
        {
            if (context.IsPreciseMode)
            {
                foreach (var expressionContext in context.Expressions)
                {
                    var castExpression = CastExpressionNavigator.GetByOp(expressionContext.Expression);
                    if (castExpression == null)
                    {
                        continue;               // available in auto over cast expressions
                    }
                    var expression = ParenthesizedExpressionNavigator.GetByExpression(castExpression);
                    if (expression != null)
                    {
                        continue;           // not already parenthesized
                    }
                    return(new PostfixTemplateInfo("par", expressionContext));
                }

                return(null);
            }

            var expressions = CSharpPostfixUtis.FindExpressionWithValuesContexts(context);

            if (expressions.Length != 0)
            {
                return(new PostfixTemplateInfo("par", expressions));
            }

            return(null);
        }