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)import java.util.Deque; 809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)import java.util.HashMap; 909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)import java.util.LinkedList; 1009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)import java.util.Map; 1109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 1209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)public class ContextTrackingState { 1309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) private final ValidatorContext context; 1409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 1509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) ContextTrackingState(ValidatorContext context) { 1609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.context = context; 1709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 1809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 1909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) final Map<String, TypeRecord> typeRecordsByTypeName = new HashMap<>(); 2009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) final Deque<TypeRecord> typeRecords = new LinkedList<>(); 2109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) final Deque<FunctionRecord> functionRecords = new LinkedList<>(); 2209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 2309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) TypeRecord getCurrentTypeRecord() { 2409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return typeRecords.peekLast(); 2509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 2609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 2709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) FunctionRecord getCurrentFunctionRecord() { 2809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return functionRecords.peekLast(); 2909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 3009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 3109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) ValidatorContext getContext() { 3209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return context; 3309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 3409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 3509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) Map<String, TypeRecord> getTypeRecordsByTypeName() { 3609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return typeRecordsByTypeName; 3709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 3809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 39197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch String getNodeText(Node node) { 4009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return getContext().getNodeText(node); 4109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 4209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 4309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void pushTypeRecord(TypeRecord record) { 4409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) typeRecords.addLast(record); 4509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 4609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 4709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void popTypeRecord() { 4809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) typeRecords.removeLast(); 4909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 5009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 5109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void pushFunctionRecord(FunctionRecord record) { 5209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) functionRecords.addLast(record); 5309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 5409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 5509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void popFunctionRecord() { 5609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) functionRecords.removeLast(); 5709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 5809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 59