From e2f36d017bb123ae7f0e3fcce0b9a0ddbf269f05 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Tue, 2 Jan 2024 21:25:24 +0800 Subject: [PATCH] ... --- src/ceval.cpp | 9 +++------ src/repl.cpp | 2 +- src/vm.cpp | 3 +++ tests/41_exception.py | 9 ++++++++- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/ceval.cpp b/src/ceval.cpp index 4c34cec9..246ca9ea 100644 --- a/src/ceval.cpp +++ b/src/ceval.cpp @@ -856,11 +856,9 @@ __NEXT_STEP:; #undef CEVAL_STEP /**********************************************************************/ UNREACHABLE(); - }catch(HandledException& e){ - PK_UNUSED(e); + }catch(HandledException){ continue; - }catch(UnhandledException& e){ - PK_UNUSED(e); + }catch(UnhandledException){ PyObject* e_obj = POPX(); Exception& _e = PK_OBJ_GET(Exception, e_obj); _pop_frame(); @@ -874,8 +872,7 @@ __NEXT_STEP:; PUSH(e_obj); if(frame.index < base_id) throw ToBeRaisedException(); need_raise = true; - }catch(ToBeRaisedException& e){ - PK_UNUSED(e); + }catch(ToBeRaisedException){ need_raise = true; } } diff --git a/src/repl.cpp b/src/repl.cpp index 5cb140b9..da66c21d 100644 --- a/src/repl.cpp +++ b/src/repl.cpp @@ -30,7 +30,7 @@ namespace pkpy { try{ vm->exec(line, "", mode); - }catch(NeedMoreLines& ne){ + }catch(NeedMoreLines ne){ buffer += line; buffer += '\n'; need_more_lines = ne.is_compiling_class ? 3 : 2; diff --git a/src/vm.cpp b/src/vm.cpp index 271ae2d9..3087ac83 100644 --- a/src/vm.cpp +++ b/src/vm.cpp @@ -178,6 +178,9 @@ namespace pkpy{ msg = msg + e.what() + "\n"; _stderr(msg.data, msg.size); } + catch(NeedMoreLines){ + throw; + } catch(...) { Str msg = "An unknown exception occurred! It could be a bug. Please report it to @blueloveTH on GitHub.\n"; _stderr(msg.data, msg.size); diff --git a/tests/41_exception.py b/tests/41_exception.py index d8fd0d30..ab85fbf0 100644 --- a/tests/41_exception.py +++ b/tests/41_exception.py @@ -113,5 +113,12 @@ except MyException as e: ok = True except Exception: exit(1) +assert ok -assert ok \ No newline at end of file +ok = False +try: + eval('1+') +except SyntaxError as e: + assert type(e) is SyntaxError + ok = True +assert ok