public ContextWrapperBase(ParserRuleContext context, IParseTreeVisitorResults inspValues, IUnreachableCaseInspectionFactoryProvider factoryFactory)
 {
     _context            = context;
     _rangeFilterFactory = factoryFactory.CreateIRangeClauseFilterFactory();
     _valueFactory       = factoryFactory.CreateIParseTreeValueFactory();
     _inspValues         = inspValues;
 }
Beispiel #2
0
        public RangeClauseFilter(string typeName, IParseTreeValueFactory valueFactory, IRangeClauseFilterFactory filterFactory, TryConvertParseTreeValue <T> tConverter)
        {
            _valueFactory   = valueFactory;
            _filterFactory  = filterFactory;
            _valueConverter = tConverter;

            _ranges            = new List <Tuple <T, T> >();
            _singleValues      = new HashSet <T>();
            _isClause          = new Dictionary <string, List <T> >();
            _relationalOps     = new HashSet <string>();
            _variableRanges    = new HashSet <string>();
            _variableSingles   = new HashSet <string>();
            _hasExtents        = false;
            _falseValue        = ConvertToContainedGeneric(false);
            _trueValue         = ConvertToContainedGeneric(true);
            TypeName           = typeName;
            _cachedDescriptor  = string.Empty;
            _descriptorIsDirty = true;
        }
Beispiel #3
0
        private void SetEvaluationTypeName(ParserRuleContext context, IParseTreeVisitorResults inspValues, IRangeClauseFilterFactory factory)
        {
            var selectStmt = (VBAParser.SelectCaseStmtContext)context;

            if (TryDetectTypeHint(selectStmt.selectExpression().GetText(), out string evalTypName))
            {
                EvaluationTypeName = evalTypName;
                return;
            }

            var typeName = string.Empty;

            if (inspValues.TryGetValue(selectStmt.selectExpression(), out IParseTreeValue result))
            {
                EvaluationTypeName = result.TypeName;
            }

            if (InspectionCanEvaluateTypeName(EvaluationTypeName))
            {
                return;
            }
            EvaluationTypeName = DeriveTypeFromCaseClauses(inspValues, selectStmt);
        }