30 const std::string& source_file,
34 const std::string& msg,
35 const std::vector<std::string>& include_chain,
36 std::shared_ptr<bpp::bpp_program> program,
38 bool is_warning =
false);
41 const std::vector<AST::ParserError>& errors,
42 const std::string& source_file,
43 const std::vector<std::string>& include_chain,
44 std::shared_ptr<bpp::bpp_program> program,
55 std::shared_ptr<bpp::bpp_program>
program;
59 template <bpp::detail::ErrorReportableListener Listener, bpp::detail::ASTNodePtrORToken T>
63 program = listener->get_program();
68 line = error_ctx->getPosition().line;
69 column = error_ctx->getPosition().column;
70 if (error_ctx->getEndPosition().line == error_ctx->getPosition().line) {
71 text_length = error_ctx->getEndPosition().column - error_ctx->getPosition().column;
74 line = error_ctx.getLine();
75 column = error_ctx.getCharPositionInLine();
76 text_length =
static_cast<uint32_t
>(error_ctx.getValue().length());
80 line = error_ctx.getLine();
81 column = error_ctx.getCharPositionInLine();
82 auto param = error_ctx.getValue();
84 if (param.type.has_value()) {
85 text_length += 1 +
static_cast<uint32_t
>(param.type.value().getValue().length());
87 text_length += 1 +
static_cast<uint32_t
>(param.name.getValue().length());
89 text_length =
static_cast<uint32_t
>(param.name.getValue().length());
97 template <bpp::detail::ErrorReportableListener Listener, bpp::detail::ASTNodePtrORToken T>
98 ErrorOrWarning(Listener* listener,
const T& error_ctx,
const std::string& msg) : std::runtime_error(msg) {
130 template <bpp::detail::ErrorReportableListener Listener, bpp::detail::ASTNodePtrORToken T>
148 explicit Warning(
const std::string& msg) =
delete;
150 template <bpp::detail::ErrorReportableListener Listener, bpp::detail::ASTNodePtrORToken T>
151 Warning(Listener* listener,
const T& error_ctx,
const std::string& msg) :
ErrorOrWarning(listener, error_ctx, msg) {
158std::string
utf8_substr(
const std::string& str, uint32_t start, uint32_t length);
Definition SyntaxError.h:48
uint32_t text_length
Definition SyntaxError.h:53
uint32_t line
Definition SyntaxError.h:51
bool lsp_mode
Definition SyntaxError.h:56
ErrorOrWarning(const std::string &msg)=delete
void set_from_listener(Listener *listener, T error_ctx)
Definition SyntaxError.h:60
std::shared_ptr< bpp::bpp_program > program
Definition SyntaxError.h:55
ErrorOrWarning(Listener *listener, const T &error_ctx, const std::string &msg)
Definition SyntaxError.h:98
uint32_t column
Definition SyntaxError.h:52
bool is_warning
Definition SyntaxError.h:57
void print() const
Definition SyntaxError.h:102
std::vector< std::string > include_chain
Definition SyntaxError.h:54
std::string source_file
Definition SyntaxError.h:50
An exception thrown when a syntax error is encountered This exception can be constructed from any lis...
Definition SyntaxError.h:125
SyntaxError(Listener *listener, const T &error_ctx, const std::string &msg)
Definition SyntaxError.h:131
SyntaxError(const std::string &msg)=delete
A compiler warning that is not fatal to compilation This type should never be thrown....
Definition SyntaxError.h:145
Warning(const std::string &msg)=delete
Warning(Listener *listener, const T &error_ctx, const std::string &msg)
Definition SyntaxError.h:151
Definition InternalError.h:11
uint32_t utf8_length(const std::string &str)
Definition SyntaxError.cpp:173
std::string equal_width_padding(const std::string &str, char padding_char)
Definition SyntaxError.cpp:187
void print_parser_errors(const std::vector< AST::ParserError > &errors, const std::string &source_file, const std::vector< std::string > &include_chain, std::shared_ptr< bpp::bpp_program > program, bool lsp_mode)
Definition SyntaxError.cpp:117
void print_syntax_error_or_warning(const std::string &source_file, uint32_t line, uint32_t column, uint32_t text_length, const std::string &msg, const std::vector< std::string > &include_chain, std::shared_ptr< bpp::bpp_program > program, bool lsp_mode, bool is_warning)
Print a syntax error or warning message to stderr.
Definition SyntaxError.cpp:22
std::string utf8_substr(const std::string &str, uint32_t start, uint32_t length)
Definition SyntaxError.cpp:144