private DisposeAnalysisContext(
     AbstractValueDomain <DisposeAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     bool exceptionPathsAnalysis,
     PointsToAnalysisResult pointsToAnalysisResultOpt,
     Func <DisposeAnalysisContext, DisposeAnalysisResult> tryGetOrComputeAnalysisResult,
     ImmutableHashSet <INamedTypeSymbol> disposeOwnershipTransferLikelyTypes,
     bool disposeOwnershipTransferAtConstructor,
     bool disposeOwnershipTransferAtMethodCall,
     bool trackInstanceFields,
     ControlFlowGraph parentControlFlowGraphOpt,
     InterproceduralDisposeAnalysisData interproceduralAnalysisDataOpt,
     InterproceduralAnalysisPredicate interproceduralAnalysisPredicateOpt)
     : base(valueDomain, wellKnownTypeProvider, controlFlowGraph,
            owningSymbol, interproceduralAnalysisConfig, pessimisticAnalysis,
            predicateAnalysis: false,
            exceptionPathsAnalysis,
            copyAnalysisResultOpt: null,
            pointsToAnalysisResultOpt,
            valueContentAnalysisResultOpt: null,
            tryGetOrComputeAnalysisResult,
            parentControlFlowGraphOpt,
            interproceduralAnalysisDataOpt,
            interproceduralAnalysisPredicateOpt)
 {
     DisposeOwnershipTransferLikelyTypes   = disposeOwnershipTransferLikelyTypes;
     DisposeOwnershipTransferAtConstructor = disposeOwnershipTransferAtConstructor;
     DisposeOwnershipTransferAtMethodCall  = disposeOwnershipTransferAtMethodCall;
     TrackInstanceFields = trackInstanceFields;
 }
예제 #2
0
        public override DisposeAnalysisContext ForkForInterproceduralAnalysis(
            IMethodSymbol invokedMethod,
            ControlFlowGraph invokedControlFlowGraph,
            IOperation operation,
            PointsToAnalysisResult pointsToAnalysisResultOpt,
            CopyAnalysisResult copyAnalysisResultOpt,
            InterproceduralDisposeAnalysisData interproceduralAnalysisData)
        {
            Debug.Assert(pointsToAnalysisResultOpt != null);
            Debug.Assert(copyAnalysisResultOpt == null);

            return(new DisposeAnalysisContext(ValueDomain, WellKnownTypeProvider, invokedControlFlowGraph, invokedMethod, InterproceduralAnalysisConfiguration, PessimisticAnalysis,
                                              ExceptionPathsAnalysis, pointsToAnalysisResultOpt, GetOrComputeAnalysisResult, DisposeOwnershipTransferLikelyTypes, DisposeOwnershipTransferAtConstructor,
                                              TrackInstanceFields, ControlFlowGraph, interproceduralAnalysisData, InterproceduralAnalysisPredicateOpt));
        }