/* * Copyright (c) 2023, Dan Klishch * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace JSSpecCompiler { class ParseError : public RefCounted { public: ParseError(String&& message, XML::Node const* node) : m_message(move(message)) , m_node(node) { } static NonnullRefPtr create(String message, XML::Node const* node); static NonnullRefPtr create(StringView message, XML::Node const* node); static NonnullRefPtr create(ErrorOr message, XML::Node const* node); String to_string() const; XML::Offset offset() const; private: String m_message; XML::Node const* m_node; // TODO: Support chained parse errors }; template using ParseErrorOr = ErrorOr>; }