diff --git a/compiler/erg_compiler/codegen.rs b/compiler/erg_compiler/codegen.rs index e2bdb07d..1c8197e1 100644 --- a/compiler/erg_compiler/codegen.rs +++ b/compiler/erg_compiler/codegen.rs @@ -151,6 +151,7 @@ fn is_python_global(name: &str) -> bool { | "enumerate" | "eval" | "exec" + | "exit" | "filter" | "float" | "format" @@ -259,6 +260,7 @@ fn convert_to_python_name(name: Str) -> Str { "input!" => Str::ever("input"), "log" => Str::ever("print"), // TODO: log != print (prints after executing) "open!" => Str::ever("open"), + "panic" => Str::ever("exit"), "print!" => Str::ever("print"), "py" | "pyimport" => Str::ever("__import__"), "quit" | "exit" => Str::ever("quit"), diff --git a/compiler/erg_compiler/context/initialize/mod.rs b/compiler/erg_compiler/context/initialize/mod.rs index d2eac81f..a4bf9734 100644 --- a/compiler/erg_compiler/context/initialize/mod.rs +++ b/compiler/erg_compiler/context/initialize/mod.rs @@ -1621,17 +1621,21 @@ impl Context { None, module(mono_q_tp("Path")), ); + let t_panic = nd_func(vec![param_t("err_message", Str)], None, NoneType); let t_pyimport = quant(t_pyimport, set! {static_instance("Path", Str)}); let t_quit = func(vec![], None, vec![param_t("code", Int)], NoneType); + let t_exit = t_quit.clone(); self.register_builtin_impl("abs", t_abs, Immutable, Private); self.register_builtin_impl("assert", t_assert, Const, Private); // assert casting に悪影響が出る可能性があるため、Constとしておく self.register_builtin_impl("classof", t_classof, Immutable, Private); self.register_builtin_impl("compile", t_compile, Immutable, Private); self.register_builtin_impl("cond", t_cond, Immutable, Private); self.register_builtin_impl("discard", t_discard, Immutable, Private); + self.register_builtin_impl("exit", t_exit, Immutable, Private); self.register_builtin_impl("if", t_if, Immutable, Private); self.register_builtin_impl("log", t_log, Immutable, Private); self.register_builtin_impl("import", t_import, Immutable, Private); + self.register_builtin_impl("panic", t_panic, Immutable, Private); if cfg!(feature = "debug") { self.register_builtin_impl("py", t_pyimport.clone(), Immutable, Private); }