mirror of
https://github.com/polserver/polserver
synced 2026-08-13 08:23:08 -04:00
* Add cppdap debugger library and simple server (#508) * Add cppdap library * Add cppdap server * fixup cmake scripts for windows * Enable caching of cppdap on GitHub actions * Fix CMake for cppdap target * Wait 1s for session close before thread ends * Address review comments - Remove unnecessary use of wait_for - Fix wait_for method * Do not use SocketClientThread for cppdap clients * Address review comments - Cleanup object ownership * Add authorization and event handling (#510) * Add authorization and event handling [WIP] * Use std::weak_ptr; Only allow one debugger conn * Only attach debugger if dbg file exists * Cleanup weak_ptr; Fix listeners; Add handler stubs * Address review comments - PolLock on uoexec and weakptr access - Use make_shared when creating client thread * Add ExecutorDebugListener on_destroy callback * Use cppdap sockets instead of clib sockets * Update cppdap repository to 2703cf4 * Implement server address binding * Update cppdap repository to eeca5ce * Fix warnings * Use weak_from_this * Fix stalled executors on disconnect * Fix stalled executors on re-attach * Clear uoexec weakptr on all debugger detaches * Move server to gamestate * move DapDebugServer into Network namespace * move DapDebugServer into GameState for storage * Move DapDebugServer into NetworkManager * Fix missing memory include * Add more events (#513) * Add more events * Implement dbg_step_out * Fix breakpoint clearing * Add even more events (#515) * add launch request * Add custom `processes` command * fixup loop * Refactoring to move handlers to member functions * Add VariablesRequest and ScopesRequest * use std::varaint for Handles * add pollocks * refactor Handles to new file * move custom messages to proto.h * move clientthread * some formatting / cleanup * Add missing PolLock * move dap variables creation to Handles * appobj members * rename ClientThread to DebugClientThread * rename LaunchRequest args to arg * Fix compiler error on size_t * Add support for EvaluateRequest and SetVariableRequest (#519) * Update grammar for evaluateUnit * Cleanup various compiler code * Add support for EvaluateRequest Only supports values, variables, element access, member access * Add report clearing to reinitialize state * Add support for SetVariableRequest * Fix CI build errors * Move ExpressionEvaluator to Bscript * Fix formatting * Fix include * Refactor global and frame variable references * Encapsulate Executor debugging environment; Fix step over (#524) * Fix step over * Some cleanup of executor - Remove unused debug states - Rename members for consistency * move debugging environment to new class * Move instruction inspection to class * Cleanup slashes on Windows; Add Executor state to processes response (#527) * Fix backspaces in script names on Windows * Fix compilation warnings with data loss * Use boost::icontains for string comparison * Add Executor state to processes response * Updates for libfmt * Fix tests; Fix cppdap build for Mac universal binary (#607) * fix tests * fix cppdap build for mac universal binary * Update cppdap to 2a4c7cf * Add tests; Modify launch behavior to not stop at entry (redo) (#609) * Remove unused setExceptionBreakpoints handler * Add debugger tests * Launching a script should not set attaching state * Add launch tests * Do not check for connection in debugger tests * Rename `program` to `script` in protocol structs * Fix launch stopAtEntry; quote string var values * Fix compilation error on Windows * Add configfiles doc entry * Various fixes for finishing touches; Add core-changes (#610) * switch cmake projects * simple docs * cmake move make_directory * Fix launch request with relative, absolute, package paths * make relative paths as absolute in source request * Add true, false, uninit to ExpressionEvaluator * Re-add setExceptionBreakpoints to avoid unhandled message errors * Better debug thread logging with instance numbers * launched scripts should terminate on disconnect (according to DAP spec) * Properly handle exited event in client thread * Add core-changes * Address Discord comments - Mention vscode-escript in core-changes - Re-add "cppdap already built" in cmake * change cmake escriptgrammarlib visibility to public
93 lines
2.4 KiB
C++
93 lines
2.4 KiB
C++
#ifndef POLSERVER_REPORT_H
|
|
#define POLSERVER_REPORT_H
|
|
|
|
|
|
#include "bscript/compiler/ast/Node.h"
|
|
|
|
namespace Pol::Bscript::Compiler
|
|
{
|
|
class SourceLocation;
|
|
|
|
class Report
|
|
{
|
|
public:
|
|
explicit Report( bool display_warnings, bool display_errors = true );
|
|
Report( const Report& ) = delete;
|
|
Report& operator=( const Report& ) = delete;
|
|
|
|
template <typename Str, typename... Args>
|
|
inline void error( const SourceLocation& source_location, Str const& format, Args&&... args )
|
|
{
|
|
if ( display_errors )
|
|
{
|
|
auto msg = fmt::format( format, args... );
|
|
report_error( source_location, msg.c_str() );
|
|
}
|
|
else
|
|
{
|
|
++errors;
|
|
}
|
|
}
|
|
|
|
template <typename Str, typename... Args>
|
|
inline void error( const SourceFileIdentifier& ident, Str const& format, Args&&... args )
|
|
{
|
|
SourceLocation loc( &ident, 0, 0 );
|
|
error( loc, format, args... );
|
|
}
|
|
|
|
template <typename Str, typename... Args>
|
|
inline void error( const Node& node, Str const& format, Args&&... args )
|
|
{
|
|
error( node.source_location, format, args... );
|
|
}
|
|
|
|
// Report.fatal: use this when it's not possible to continue after a user-facing error.
|
|
//
|
|
template <typename Str, typename... Args>
|
|
[[noreturn]] inline void fatal( const SourceLocation& source_location, Str const& format,
|
|
Args&&... args )
|
|
{
|
|
auto msg = fmt::format( format, args... );
|
|
report_error( source_location, msg.c_str() );
|
|
throw std::runtime_error( msg.c_str() );
|
|
}
|
|
|
|
template <typename Str, typename... Args>
|
|
inline void warning( const SourceLocation& source_location, Str const& format, Args&&... args )
|
|
{
|
|
if ( display_warnings )
|
|
{
|
|
auto msg = fmt::format( format, args... );
|
|
report_warning( source_location, msg.c_str() );
|
|
}
|
|
else
|
|
{
|
|
++warnings;
|
|
}
|
|
}
|
|
|
|
template <typename Str, typename... Args>
|
|
inline void warning( const Node& node, Str const& format, Args&&... args )
|
|
{
|
|
warning( node.source_location, format, args... );
|
|
}
|
|
|
|
[[nodiscard]] unsigned error_count() const;
|
|
[[nodiscard]] unsigned warning_count() const;
|
|
|
|
void reset();
|
|
|
|
private:
|
|
void report_error( const SourceLocation&, const char* msg );
|
|
void report_warning( const SourceLocation&, const char* msg );
|
|
|
|
const bool display_warnings;
|
|
const bool display_errors;
|
|
unsigned errors;
|
|
unsigned warnings;
|
|
};
|
|
|
|
} // namespace Pol::Bscript::Compiler
|
|
|
|
#endif // POLSERVER_REPORT_H
|