package fr.inria.diversify.transformation.query;
import fr.inria.diversify.diversification.InputProgram;
import fr.inria.diversify.statistic.SystemInformation;
import fr.inria.diversify.transformation.ReplaceNewListTransformation;
import fr.inria.diversify.transformation.Transformation;
import spoon.reflect.code.CtConstructorCall;
import spoon.reflect.code.CtLiteral;
import spoon.reflect.declaration.CtElement;
import spoon.reflect.reference.CtTypeReference;
import spoon.reflect.visitor.Query;
import spoon.reflect.visitor.filter.TypeFilter;
import spoon.support.reflect.code.CtLocalVariableImpl;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
/**
* Created by lguerin on 5/29/15.
*/
public class ReplaceNewListQuery extends TransformationQuery{
public ReplaceNewListQuery(InputProgram inputProgram) {
super(inputProgram);
}
@Override
public Transformation query() throws QueryException {
ReplaceNewListTransformation transformation = new ReplaceNewListTransformation();
List<CtElement> newClasses = getInputProgram().getAllElement(CtConstructorCall.class);
for(int i=0;i<newClasses.size();i++){
if(newClasses.get(i).getParent() instanceof CtLocalVariableImpl ){
if(((CtLocalVariableImpl) newClasses.get(i).getParent()).getType().toString().startsWith("java.util.List")){
transformation.setTransplantationPoint((CtConstructorCall)newClasses.get(i));
return transformation;
}
}
}
return null;
}
}