Example #1
0
        public void AddComparablePredicateFilter(string variable, string variableTypeName)
        {
            if (variable is null || variable.Length == 0 || variableTypeName is null || variableTypeName.Length == 0)
            {
                return;
            }

            if (!ComparablePredicateFilters.ContainsKey(variable))
            {
                ComparablePredicateFilters.Add(variable, ExpressionFilterFactory.Create(variableTypeName));
                ComparablePredicateFiltersInverse.Add(variable, ExpressionFilterFactory.Create(variableTypeName));
            }
        }
Example #2
0
        private IExpressionFilter BuildRangeClauseFilter(IEnumerable <VBAParser.CaseClauseContext> caseClauses)
        {
            var rangeClauseFilter = ExpressionFilterFactory.Create(SelectExpressionTypeName);

            if (!(GetVariableDeclarationTypeName is null))
            {
                foreach (var caseClause in caseClauses)
                {
                    foreach (var rangeClause in caseClause.rangeClause())
                    {
                        var expression = GetRangeClauseExpression(rangeClause);
                        if (!expression.LHS.ParsesToConstantValue)
                        {
                            var typeName = GetVariableDeclarationTypeName(expression.LHS.Token, rangeClause);
                            rangeClauseFilter.AddComparablePredicateFilter(expression.LHS.Token, typeName);
                        }
                    }
                }
            }
            return(rangeClauseFilter);
        }