public override PropertySetAnalysisContext ForkForInterproceduralAnalysis(
            IMethodSymbol invokedMethod,
            ControlFlowGraph invokedCfg,
            IOperation operation,
            PointsToAnalysisResult pointsToAnalysisResultOpt,
            CopyAnalysisResult copyAnalysisResultOpt,
            ValueContentAnalysisResult valueContentAnalysisResultOpt,
            InterproceduralPropertySetAnalysisData interproceduralAnalysisData)
        {
            Debug.Assert(pointsToAnalysisResultOpt != null);
            Debug.Assert(copyAnalysisResultOpt == null);

            return(new PropertySetAnalysisContext(
                       ValueDomain,
                       WellKnownTypeProvider,
                       invokedCfg,
                       invokedMethod,
                       InterproceduralAnalysisConfiguration,
                       PessimisticAnalysis,
                       pointsToAnalysisResultOpt,
                       valueContentAnalysisResultOpt,
                       GetOrComputeAnalysisResult,
                       ControlFlowGraph,
                       interproceduralAnalysisData,
                       this.TypeToTrackMetadataName,
                       this.ConstructorMapper,
                       this.PropertyMappers,
                       this.HazardousUsageEvaluators,
                       this.HazardousUsageTypesToNames));
        }
Ejemplo n.º 2
0
 private PropertySetAnalysisContext(
     AbstractValueDomain <PropertySetAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     PointsToAnalysisResult pointsToAnalysisResult,
     ValueContentAnalysisResult valueContentAnalysisResultOpt,
     Func <PropertySetAnalysisContext, PropertySetAnalysisResult> getOrComputeAnalysisResult,
     ControlFlowGraph parentControlFlowGraphOpt,
     InterproceduralPropertySetAnalysisData interproceduralAnalysisDataOpt,
     string typeToTrackMetadataName,
     ConstructorMapper constructorMapper,
     PropertyMapperCollection propertyMappers,
     HazardousUsageEvaluatorCollection hazardousUsageEvaluators,
     ImmutableDictionary <INamedTypeSymbol, string> hazardousUsageTypesToNames)
     : base(valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol, interproceduralAnalysisConfig, pessimisticAnalysis,
            predicateAnalysis: false, exceptionPathsAnalysis: false, copyAnalysisResultOpt: null, pointsToAnalysisResult,
            getOrComputeAnalysisResult, parentControlFlowGraphOpt, interproceduralAnalysisDataOpt, interproceduralAnalysisPredicateOpt: null)
 {
     this.ValueContentAnalysisResultOpt = valueContentAnalysisResultOpt;
     this.TypeToTrackMetadataName       = typeToTrackMetadataName;
     this.ConstructorMapper             = constructorMapper;
     this.PropertyMappers            = propertyMappers;
     this.HazardousUsageEvaluators   = hazardousUsageEvaluators;
     this.HazardousUsageTypesToNames = hazardousUsageTypesToNames;
 }
 private PropertySetAnalysisContext(
     AbstractValueDomain <PropertySetAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     AnalyzerOptions analyzerOptions,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     PointsToAnalysisResult pointsToAnalysisResult,
     ValueContentAnalysisResult valueContentAnalysisResultOpt,
     Func <PropertySetAnalysisContext, PropertySetAnalysisResult> tryGetOrComputeAnalysisResult,
     ControlFlowGraph parentControlFlowGraphOpt,
     InterproceduralPropertySetAnalysisData interproceduralAnalysisDataOpt,
     ImmutableHashSet <string> typeToTrackMetadataNames,
     ConstructorMapper constructorMapper,
     PropertyMapperCollection propertyMappers,
     HazardousUsageEvaluatorCollection hazardousUsageEvaluators,
     ImmutableDictionary <(INamedTypeSymbol, bool), string> hazardousUsageTypesToNames)