package dev.peerat.parser.java.value; import java.util.Collection; import java.util.List; import java.util.function.Function; import java.util.function.Predicate; import dev.peerat.parser.Token; import dev.peerat.parser.java.JavaElement; import dev.peerat.parser.visitor.TokenVisitor; import dev.peerat.parser.visitor.Visitor; import dev.peerat.parser.visitor.VisitorBag; public class MethodCallValue extends Value{ private Value base; private Token generic; private Token token; private List parameters; public MethodCallValue(Value base, Token generic, Token token, List parameters){ this.base = base; this.generic = generic; this.token = token; this.parameters = parameters; } public Value base(){ return this.base; } public Token getGeneric(){ return this.generic; } public Token getToken(){ return token; } public List getParameters(){ return this.parameters; } @Override public E find(Predicate finder) { // TODO Auto-generated method stub return null; } @Override public void findAll(Predicate finder, Collection collector) { // TODO Auto-generated method stub } @Override public VisitorBag visit(Visitor visitor){ if(visitor.canVisit(getClass())) return visitor.visit(this); VisitorBag bag = new VisitorBag(); if(base != null) bag.merge(base.visit(visitor)); System.out.println("go on "+parameters); for(Value value : parameters) bag.merge(value.visit(visitor)); return bag; } @Override public VisitorBag visit(TokenVisitor visitor){ VisitorBag bag = new VisitorBag(); return bag; } @Override public String toString(){ return "[MethodCallValue] "+base+".<"+generic+">"+token+"("+parameters+")"; } }