Package ro.redeul.google.go.lang.psi.resolve

Source Code of ro.redeul.google.go.lang.psi.resolve.VisitingReferenceSolver

package ro.redeul.google.go.lang.psi.resolve;

import com.intellij.psi.PsiElement;
import com.intellij.psi.ResolveState;
import org.jetbrains.annotations.NotNull;
import ro.redeul.google.go.lang.psi.GoPsiElement;
import ro.redeul.google.go.lang.psi.visitors.GoElementVisitorWithData;

public abstract class VisitingReferenceSolver<
        R extends ReferenceWithSolver<?, S, R>,
        S extends VisitingReferenceSolver<R, S>> extends DefaultReferenceSolver<R, S> {

    GoElementVisitorWithData<ResolveState> visitor = null;

    protected void solveWithVisitor(GoElementVisitorWithData<ResolveState> visitor) {
        this.visitor = visitor;
    }

    @Override
    public boolean execute(@NotNull PsiElement element, @NotNull ResolveState state) {
        if ( element instanceof GoPsiElement ) {
            GoPsiElement psiElement = (GoPsiElement) element;
            visitor.setData(state);
            psiElement.accept(visitor);
            return shouldContinueSolving();
        }

        return true;
    }
}
TOP

Related Classes of ro.redeul.google.go.lang.psi.resolve.VisitingReferenceSolver

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.