package org.fugazi.ql.type_checker.issue; import org.fugazi.ql.ast.AbstractASTNode; import org.fugazi.ql.type_checker.issue.warning.DuplicateLabelWarning; import java.util.ArrayList; import java.util.List; public class ASTIssueHandler { private final List<ASTNodeIssue> errors; private final List<ASTNodeIssue> warnings; public ASTIssueHandler() { this.errors = new ArrayList<ASTNodeIssue>(); this.warnings = new ArrayList<ASTNodeIssue>(); } public List<ASTNodeIssue> getErrors() { return this.errors; } public List<ASTNodeIssue> getWarnings() { return this.warnings; } /** * ======================= * Error checks * ======================= */ public boolean hasErrors() { return !this.errors.isEmpty(); } public boolean hasWarnings() { return !this.warnings.isEmpty(); } /** * ======================= * Errors registration * ======================= */ public void registerNewError(ASTNodeIssueType _type, AbstractASTNode _errorNode, String _message) { this.errors.add(new ASTNodeIssue( _type, _errorNode, _message )); } public void registerNewWarning(AbstractASTNode _errorNode, String _message) { this.warnings.add(new ASTNodeIssue( new DuplicateLabelWarning(), _errorNode, _message )); } /** * ======================= * Errors clearing * ======================= */ // necessary for reusing public void clearErrorsAndWarnings() { this.warnings.clear(); this.errors.clear(); } }