From f8f74d8587ddbe289f73610cf030aa94f550b477 Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Wed, 24 Mar 2021 13:16:36 +0200 Subject: [PATCH] builtin: add panic_optional_not_set and use it in cgen for fncall()? in main --- vlib/builtin/builtin.c.v | 4 ++++ vlib/v/gen/c/cgen.v | 2 +- vlib/v/markused/markused.v | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/vlib/builtin/builtin.c.v b/vlib/builtin/builtin.c.v index 420fc4416b..20da38f99c 100644 --- a/vlib/builtin/builtin.c.v +++ b/vlib/builtin/builtin.c.v @@ -47,6 +47,10 @@ fn panic_debug(line_no int, file string, mod string, fn_name string, s string) { } } +pub fn panic_optional_not_set(s string) { + panic('optional not set ($s)') +} + // panic prints a nice error message, then exits the process with exit code of 1. // It also shows a backtrace on most platforms. pub fn panic(s string) { diff --git a/vlib/v/gen/c/cgen.v b/vlib/v/gen/c/cgen.v index 11e0806359..3fe3fe010e 100644 --- a/vlib/v/gen/c/cgen.v +++ b/vlib/v/gen/c/cgen.v @@ -5570,7 +5570,7 @@ fn (mut g Gen) or_block(var_name string, or_block ast.OrExpr, return_type table. paline, pafile, pamod, pafn := g.panic_debug_info(or_block.pos) g.writeln('panic_debug($paline, tos3("$pafile"), tos3("$pamod"), tos3("$pafn"), *${cvar_name}.err.msg );') } else { - g.writeln('\tv_panic(_STR("optional not set (%.*s\\000)", 2, ${cvar_name}.err.msg));') + g.writeln('\tpanic_optional_not_set(*${cvar_name}.err.msg);') } } else if !isnil(g.fn_decl) && g.fn_decl.is_test { g.gen_failing_error_propagation_for_test_fn(or_block, cvar_name) diff --git a/vlib/v/markused/markused.v b/vlib/v/markused/markused.v index ba6091e9dc..6046387979 100644 --- a/vlib/v/markused/markused.v +++ b/vlib/v/markused/markused.v @@ -137,6 +137,7 @@ pub fn mark_used(mut the_table table.Table, pref &pref.Preferences, ast_files [] if pref.is_debug { all_fn_root_names << 'panic_debug' } + all_fn_root_names << 'panic_optional_not_set' if pref.is_test { all_fn_root_names << 'main.cb_assertion_ok' all_fn_root_names << 'main.cb_assertion_failed'