109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)package org.chromium.devtools.jsdoc.checks;
209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
3197021e6b966cfb06891637935ef33fff06433d1Ben Murdochimport com.google.javascript.rhino.Node;
409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)import org.chromium.devtools.jsdoc.ValidatorContext;
609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)abstract class ContextTrackingChecker {
809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    private ContextTrackingState state;
909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
10197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    abstract void enterNode(Node node);
1109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
12197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    abstract void leaveNode(Node node);
1309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
1409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    void setState(ContextTrackingState state) {
1509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        this.state = state;
1609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    }
1709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
1809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    protected ContextTrackingState getState() {
1909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        return state;
2009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    }
2109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
2209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    protected ValidatorContext getContext() {
2309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        return state.getContext();
2409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    }
2543e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)
26197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    protected void reportErrorAtNodeStart(Node node, String errorText) {
27197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        getContext().reportErrorInNode(node, 0, errorText);
2843e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)    }
2943e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)
30197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    protected void reportErrorAtOffset(int offset, String errorText) {
31197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        getContext().reportErrorAtOffset(offset, errorText);
3243e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)    }
33197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
3409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)}
35