package typeChecker;
import java.util.LinkedList;
import java.util.List;
import nodeAST.ASTNode;
import nodeAST.Expression;
import nodeAST.Ident;
import nodeAST.syntactic.Question;
import nodeAST.syntactic.QuestionBody;
import types.Type;
import visitor.ASTVisitor;
public class DuplicateLabels extends ASTVisitor {
protected List<Ident> listIdent;
protected List<Ident> duplicates;
public DuplicateLabels() {
}
public void check(ASTNode root) {
this.listIdent=new LinkedList<>();
this.duplicates=new LinkedList<>();
root.accept(this);
if(duplicates.size()!=0) {
String message= "WARNING: The following Labels are duplicated: \n";
for(Ident i: duplicates)
message+=i.toString()+"\n";
System.err.println(message);
}
}
@Override
public void visit(Question question, Ident ident,
QuestionBody questionBody, Type type, Expression expr) {
ident=question.getIdent();
if(this.listIdent.contains(ident))
this.duplicates.add(ident);
listIdent.add(ident);
}
}