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); } }