for (Type t : pa.reachingObjectsOfArrayElement(pts).possibleTypes()) { ofcgb.addInvokeArgType(argArray, momc.context(), t);
/** * Gets the points-to set for a given value. The value can be, for example, a variable or a field. * * @param value A value. * @return The points-to set for the input value. */ public static PointsToSet getPointsToSetForValue(Value value) { if (pointsToAnalysis == null) { pointsToAnalysis = Scene.v().getPointsToAnalysis(); } if (value instanceof Local) { return pointsToAnalysis.reachingObjects((Local) value); } else if (value instanceof InstanceFieldRef) { InstanceFieldRef sootFieldRef = (InstanceFieldRef) value; PointsToSet refPointsToSet = pointsToAnalysis.reachingObjects((Local) sootFieldRef.getBase()); return pointsToAnalysis.reachingObjects(refPointsToSet, sootFieldRef.getField()); } else if (value instanceof StaticFieldRef) { StaticFieldRef sootFieldRef = (StaticFieldRef) value; return pointsToAnalysis.reachingObjects(sootFieldRef.getField()); } else if (value instanceof ArrayRef) { ArrayRef arrayRef = (ArrayRef) value; PointsToSet arrayPointsToSet = pointsToAnalysis.reachingObjects((Local) arrayRef.getBase()); return pointsToAnalysis.reachingObjectsOfArrayElement(arrayPointsToSet); } else { return EmptyPointsToSet.v(); } }