コード例 #1
0
        protected DataFlowOperationVisitor(
            AbstractValueDomain <TAbstractAnalysisValue> valueDomain,
            ISymbol owningSymbol,
            bool pessimisticAnalysis,
            DataFlowAnalysisResult <NullBlockAnalysisResult, NullAbstractValue> nullAnalysisResultOpt,
            DataFlowAnalysisResult <PointsToBlockAnalysisResult, PointsToAbstractValue> pointsToAnalysisResultOpt)
        {
            Debug.Assert(owningSymbol != null);
            Debug.Assert(owningSymbol.Kind == SymbolKind.Method ||
                         owningSymbol.Kind == SymbolKind.Field ||
                         owningSymbol.Kind == SymbolKind.Property ||
                         owningSymbol.Kind == SymbolKind.Event);

            ValueDomain                   = valueDomain;
            OwningSymbol                  = owningSymbol;
            PessimisticAnalysis           = pessimisticAnalysis;
            _nullAnalysisResultOpt        = nullAnalysisResultOpt;
            _pointsToAnalysisResultOpt    = pointsToAnalysisResultOpt;
            _valueCacheBuilder            = ImmutableDictionary.CreateBuilder <IOperation, TAbstractAnalysisValue>();
            _pendingArgumentsToReset      = new List <IArgumentOperation>();
            ThisOrMePointsToAbstractValue = GetThisOrMeInstancePointsToValue(owningSymbol.ContainingType);

            AnalysisEntityFactory = new AnalysisEntityFactory(
                (pointsToAnalysisResultOpt != null || IsPointsToAnalysis) ?
                GetPointsToAbstractValue :
                (Func <IOperation, PointsToAbstractValue>)null,
                owningSymbol.ContainingType);
        }
 protected AbstractLocationDataFlowOperationVisitor(
     AbstractValueDomain <TAbstractAnalysisValue> valueDomain,
     INamedTypeSymbol containingTypeSymbol,
     DataFlowAnalysisResult <NullAnalysis.NullBlockAnalysisResult, NullAnalysis.NullAbstractValue> nullAnalysisResultOpt,
     DataFlowAnalysisResult <PointsToAnalysis.PointsToBlockAnalysisResult, PointsToAnalysis.PointsToAbstractValue> pointsToAnalysisResultOpt)
     : base(valueDomain, containingTypeSymbol, nullAnalysisResultOpt, pointsToAnalysisResultOpt)
 {
 }
コード例 #3
0
 protected AnalysisEntityDataFlowOperationVisitor(
     AbstractValueDomain <TAbstractAnalysisValue> valueDomain,
     ISymbol owningSymbol,
     bool pessimisticAnalysis,
     DataFlowAnalysisResult <NullBlockAnalysisResult, NullAbstractValue> nullAnalysisResultOpt,
     DataFlowAnalysisResult <PointsToBlockAnalysisResult, PointsToAbstractValue> pointsToAnalysisResultOpt)
     : base(valueDomain, owningSymbol, pessimisticAnalysis, nullAnalysisResultOpt, pointsToAnalysisResultOpt)
 {
 }
 protected AnalysisEntityDataFlowOperationVisitor(
     AbstractValueDomain <TAbstractAnalysisValue> valueDomain,
     ISymbol owningSymbol,
     WellKnownTypeProvider wellKnownTypeProvider,
     bool pessimisticAnalysis,
     bool predicateAnalysis,
     DataFlowAnalysisResult <CopyBlockAnalysisResult, CopyAbstractValue> copyAnalysisResultOpt,
     DataFlowAnalysisResult <PointsToBlockAnalysisResult, PointsToAbstractValue> pointsToAnalysisResultOpt)
     : base(valueDomain, owningSymbol, wellKnownTypeProvider, pessimisticAnalysis, predicateAnalysis,
            copyAnalysisResultOpt, pointsToAnalysisResultOpt)
 {
 }
コード例 #5
0
 protected DataFlowOperationVisitor(
     AbstractValueDomain <TAbstractAnalysisValue> valueDomain,
     INamedTypeSymbol containingTypeSymbol,
     DataFlowAnalysisResult <NullBlockAnalysisResult, NullAbstractValue> nullAnalysisResultOpt,
     DataFlowAnalysisResult <PointsToBlockAnalysisResult, PointsToAbstractValue> pointsToAnalysisResultOpt)
 {
     ValueDomain                   = valueDomain;
     _nullAnalysisResultOpt        = nullAnalysisResultOpt;
     _pointsToAnalysisResultOpt    = pointsToAnalysisResultOpt;
     _valueCacheBuilder            = ImmutableDictionary.CreateBuilder <IOperation, TAbstractAnalysisValue>();
     _pendingArgumentsToReset      = new List <IArgumentOperation>();
     ThisOrMePointsToAbstractValue = GetThisOrMeInstancePointsToValue(containingTypeSymbol);
 }
 protected AnalysisEntityDataFlowOperationVisitor(
     AbstractValueDomain <TAbstractAnalysisValue> valueDomain,
     INamedTypeSymbol containingTypeSymbol,
     DataFlowAnalysisResult <NullBlockAnalysisResult, NullAbstractValue> nullAnalysisResultOpt,
     DataFlowAnalysisResult <PointsToBlockAnalysisResult, PointsToAbstractValue> pointsToAnalysisResultOpt)
     : base(valueDomain, containingTypeSymbol, nullAnalysisResultOpt, pointsToAnalysisResultOpt)
 {
     AnalysisEntityFactory = new AnalysisEntityFactory(
         (pointsToAnalysisResultOpt != null || IsPointsToAnalysis) ?
         GetPointsToAbstractValue :
         (Func <IOperation, PointsToAbstractValue>)null,
         containingTypeSymbol);
 }
コード例 #7
0
 protected AbstractLocationDataFlowOperationVisitor(
     AbstractValueDomain <TAbstractAnalysisValue> valueDomain,
     ISymbol owningSymbol,
     WellKnownTypeProvider wellKnownTypeProvider,
     bool pessimisticAnalysis,
     bool predicateAnalysis,
     DataFlowAnalysisResult <NullAnalysis.NullBlockAnalysisResult, NullAnalysis.NullAbstractValue> nullAnalysisResultOpt,
     DataFlowAnalysisResult <CopyAnalysis.CopyBlockAnalysisResult, CopyAnalysis.CopyAbstractValue> copyAnalysisResultOpt,
     DataFlowAnalysisResult <PointsToBlockAnalysisResult, PointsToAbstractValue> pointsToAnalysisResultOpt)
     : base(valueDomain, owningSymbol, wellKnownTypeProvider, pessimisticAnalysis, predicateAnalysis,
            nullAnalysisResultOpt, copyAnalysisResultOpt, pointsToAnalysisResultOpt)
 {
     Debug.Assert(pointsToAnalysisResultOpt != null);
 }
コード例 #8
0
 public AnalysisEntityMapAbstractDomain(AbstractValueDomain <TValue> valueDomain)
     : base(valueDomain)
 {
 }
コード例 #9
0
 protected AnalysisEntityMapAbstractDomain(AbstractValueDomain <TValue> valueDomain)
     : base(valueDomain)
 {
 }
コード例 #10
0
 public MapAbstractDomain(AbstractValueDomain <TValue> valueDomain)
 {
     ValueDomain = valueDomain;
 }