From a442056e2420626bea71bb6a68c6c1b77002b715 Mon Sep 17 00:00:00 2001 From: Jan Krecke Date: Sun, 25 Dec 2022 13:58:15 +0900 Subject: [PATCH] changed unraisable exception type to base exception - print exception type to screen to match cpython behaviour - included sample script to illustrate behaviour at sys.exit() --- examples/atexit_example.py | 7 +++++++ vm/src/stdlib/sys.rs | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 examples/atexit_example.py diff --git a/examples/atexit_example.py b/examples/atexit_example.py new file mode 100644 index 000000000..0324d5b50 --- /dev/null +++ b/examples/atexit_example.py @@ -0,0 +1,7 @@ +import atexit +import sys + +def myexit(): + sys.exit(2) + +atexit.register(myexit) diff --git a/vm/src/stdlib/sys.rs b/vm/src/stdlib/sys.rs index af64aab04..5eda6e803 100644 --- a/vm/src/stdlib/sys.rs +++ b/vm/src/stdlib/sys.rs @@ -549,12 +549,12 @@ mod sys { } assert!(unraisable .exc_type - .fast_issubclass(vm.ctx.exceptions.exception_type)); + .fast_issubclass(vm.ctx.exceptions.base_exception_type)); // TODO: print module name and qualname if !vm.is_none(&unraisable.exc_value) { - write!(stderr, ": "); + write!(stderr, "{}: ", unraisable.exc_type); if let Ok(str) = unraisable.exc_value.str(vm) { write!(stderr, "{}", str.as_str()); } else {