diff --git a/include/pocketpy/error.h b/include/pocketpy/error.h index e31bcddb..076b6cbd 100644 --- a/include/pocketpy/error.h +++ b/include/pocketpy/error.h @@ -91,8 +91,7 @@ struct Exception { struct TopLevelException: std::exception{ Exception* ptr; TopLevelException(Exception* ptr): ptr(ptr) {} - - PyObject* self() const { return ptr->self(); } + Str summary() const { return ptr->summary(); } const char* what() const noexcept override { diff --git a/src/pocketpy.cpp b/src/pocketpy.cpp index 6f736d18..7854c139 100644 --- a/src/pocketpy.cpp +++ b/src/pocketpy.cpp @@ -1680,7 +1680,7 @@ CodeObject_ VM::compile(std::string_view source, const Str& filename, CompileMod try{ return compiler.compile(); }catch(TopLevelException e){ - _error(e.self()); + _error(e.ptr->self()); return nullptr; } } @@ -1690,7 +1690,7 @@ Str VM::precompile(std::string_view source, const Str& filename, CompileMode mod try{ return compiler.precompile(); }catch(TopLevelException e){ - _error(e.self()); + _error(e.ptr->self()); return nullptr; } } diff --git a/src/pocketpy_c.cpp b/src/pocketpy_c.cpp index 7904e742..53a95e71 100644 --- a/src/pocketpy_c.cpp +++ b/src/pocketpy_c.cpp @@ -45,7 +45,7 @@ static PyVar stack_item(VM* vm, int index){ #define PK_PROTECTED(__B) \ try{ __B } \ catch(TopLevelException e) { \ - vm->__c.error = e.self(); \ + vm->__c.error = e.ptr->self(); \ return false; \ } catch(const std::exception& re){ \ PyObject* e_t = vm->_t(vm->tp_exception); \