示例#1
0
 protected override void SetValueForParameterOnEntry(IParameterSymbol parameter, AnalysisEntity analysisEntity, ArgumentInfo <TAbstractAnalysisValue> assignedValueOpt)
 {
     Debug.Assert(Equals(analysisEntity.SymbolOpt, parameter));
     if (assignedValueOpt != null)
     {
         SetAbstractValueForAssignment(analysisEntity, assignedValueOpt.Operation, assignedValueOpt.Value);
     }
     else
     {
         SetAbstractValue(analysisEntity, GetDefaultValueForParameterOnEntry(parameter, analysisEntity));
     }
 }
 protected override void SetValueForParameterOnEntry(IParameterSymbol parameter, AnalysisEntity analysisEntity, ArgumentInfo <TAbstractAnalysisValue>?assignedValueOpt)
 {
     // Only set the value for non-interprocedural case.
     // For interprocedural case, we have already initialized values for the underlying locations
     // of arguments from the input analysis data.
     Debug.Assert(Equals(analysisEntity.SymbolOpt, parameter));
     if (DataFlowAnalysisContext.InterproceduralAnalysisDataOpt == null &&
         TryGetPointsToAbstractValueAtEntryBlockEnd(analysisEntity, out PointsToAbstractValue pointsToAbstractValue))
     {
         SetValueForParameterPointsToLocationOnEntry(parameter, pointsToAbstractValue);
     }
 }
 protected override void SetValueForParameterOnEntry(IParameterSymbol parameter, AnalysisEntity analysisEntity, ArgumentInfo <TAbstractAnalysisValue> assignedValueOpt)
 {
     Debug.Assert(Equals(analysisEntity.SymbolOpt, parameter));
     if (TryGetPointsToAbstractValueAtEntryBlockEnd(analysisEntity, out PointsToAbstractValue pointsToAbstractValue))
     {
         SetValueForParameterPointsToLocationOnEntry(parameter, pointsToAbstractValue);
     }
 }