public DisposeDataFlowOperationVisitor( INamedTypeSymbol iDisposable, INamedTypeSymbol taskType, ImmutableHashSet <INamedTypeSymbol> collectionTypes, ImmutableHashSet <INamedTypeSymbol> disposeOwnershipTransferLikelyTypes, DisposeAbstractValueDomain valueDomain, ISymbol owningSymbol, bool trackInstanceFields, DataFlowAnalysisResult <PointsToBlockAnalysisResult, PointsToAbstractValue> pointsToAnalysisResult, DataFlowAnalysisResult <NullBlockAnalysisResult, NullAbstractValue> nullAnalysisResultOpt) : base(valueDomain, owningSymbol, pessimisticAnalysis, nullAnalysisResultOpt: nullAnalysisResultOpt, pointsToAnalysisResultOpt: pointsToAnalysisResult) { Debug.Assert(iDisposable != null); Debug.Assert(collectionTypes.All(ct => ct.TypeKind == TypeKind.Interface)); Debug.Assert(disposeOwnershipTransferLikelyTypes != null); Debug.Assert(pointsToAnalysisResult != null); _iDisposable = iDisposable; _taskType = taskType; _collectionTypes = collectionTypes; _disposeOwnershipTransferLikelyTypes = disposeOwnershipTransferLikelyTypes; if (trackInstanceFields) { _trackedInstanceFieldLocationsOpt = new Dictionary <IFieldSymbol, PointsToAbstractValue>(); } }
public DisposeDataFlowOperationVisitor( DisposeAbstractValueDomain valueDomain, ISymbol owningSymbol, WellKnownTypeProvider wellKnownTypeProvider, ImmutableHashSet <INamedTypeSymbol> disposeOwnershipTransferLikelyTypes, bool trackInstanceFields, DataFlowAnalysisResult <PointsToBlockAnalysisResult, PointsToAbstractValue> pointsToAnalysisResult) : base(valueDomain, owningSymbol, wellKnownTypeProvider, pessimisticAnalysis, predicateAnalysis: false, copyAnalysisResultOpt: null, pointsToAnalysisResultOpt: pointsToAnalysisResult) { Debug.Assert(wellKnownTypeProvider.IDisposable != null); Debug.Assert(wellKnownTypeProvider.CollectionTypes.All(ct => ct.TypeKind == TypeKind.Interface)); Debug.Assert(disposeOwnershipTransferLikelyTypes != null); Debug.Assert(pointsToAnalysisResult != null); _disposeOwnershipTransferLikelyTypes = disposeOwnershipTransferLikelyTypes; if (trackInstanceFields) { _trackedInstanceFieldLocationsOpt = new Dictionary <IFieldSymbol, PointsToAbstractValue>(); } }
public DisposeDataFlowOperationVisitor( INamedTypeSymbol iDisposable, INamedTypeSymbol iCollection, INamedTypeSymbol genericICollection, ImmutableHashSet <INamedTypeSymbol> disposeOwnershipTransferLikelyTypes, DisposeAbstractValueDomain valueDomain, INamedTypeSymbol containingTypeSymbol, DataFlowAnalysisResult <PointsToBlockAnalysisResult, PointsToAbstractValue> pointsToAnalysisResult, DataFlowAnalysisResult <NullBlockAnalysisResult, NullAbstractValue> nullAnalysisResultOpt) : base(valueDomain, containingTypeSymbol, nullAnalysisResultOpt: nullAnalysisResultOpt, pointsToAnalysisResultOpt: pointsToAnalysisResult) { Debug.Assert(iDisposable != null); Debug.Assert(disposeOwnershipTransferLikelyTypes != null); Debug.Assert(pointsToAnalysisResult != null); _iDisposable = iDisposable; _iCollection = iCollection; _genericICollection = genericICollection; _disposeOwnershipTransferLikelyTypes = disposeOwnershipTransferLikelyTypes; }