// Copyright 2015 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_PENDING_COMPILATION_ERROR_HANDLER_H_ #define V8_PENDING_COMPILATION_ERROR_HANDLER_H_ #include #include "src/base/macros.h" #include "src/globals.h" #include "src/handles.h" #include "src/messages.h" namespace v8 { namespace internal { class AstRawString; class AstValueFactory; class Isolate; class Script; // Helper class for handling pending compilation errors consistently in various // compilation phases. class PendingCompilationErrorHandler { public: PendingCompilationErrorHandler() : has_pending_error_(false), stack_overflow_(false), error_type_(kSyntaxError) {} void ReportMessageAt(int start_position, int end_position, MessageTemplate::Template message, const char* arg = nullptr, ParseErrorType error_type = kSyntaxError); void ReportMessageAt(int start_position, int end_position, MessageTemplate::Template message, const AstRawString* arg, ParseErrorType error_type = kSyntaxError); void ReportWarningAt(int start_position, int end_position, MessageTemplate::Template message, const char* arg = nullptr); bool stack_overflow() const { return stack_overflow_; } void set_stack_overflow() { has_pending_error_ = true; stack_overflow_ = true; } bool has_pending_error() const { return has_pending_error_; } bool has_pending_warnings() const { return !warning_messages_.empty(); } // Handle errors detected during parsing. void ReportErrors(Isolate* isolate, Handle