Skip to content

Commit d5855ec

Browse files
committed
v3: use builtin helper implementations
1 parent 75a0c51 commit d5855ec

5 files changed

Lines changed: 19 additions & 17 deletions

File tree

vlib/v3/gen/c/cleanc.v

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1979,13 +1979,13 @@ fn (mut g FlatGen) builtin_compat_decls() {
19791979
g.writeln('#define array_delete array__delete')
19801980
g.writeln('#define array_ensure_cap array__ensure_cap')
19811981
g.writeln('#define map__get_or_set map__get_and_set')
1982-
g.writeln('static inline void v_panic(string s) { fprintf(stderr, "V panic: %.*s\\n", s.len, s.str); exit(1); }')
1983-
g.writeln("static inline bool u8__is_letter(u8 c) { return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); }")
1984-
g.writeln("static inline bool u8__is_capital(u8 c) { return c >= 'A' && c <= 'Z'; }")
1985-
g.writeln('static inline bool string__is_capital(string s) { return s.len > 0 && u8__is_capital(s.str[0]); }')
1986-
g.writeln("static inline string string__to_lower_ascii(string s) { u8* out = (u8*)malloc((size_t)s.len + 1); for (int i = 0; i < s.len; i++) { u8 c = s.str[i]; out[i] = c >= 'A' && c <= 'Z' ? c + 32 : c; } out[s.len] = 0; return (string){.str = out, .len = s.len, .is_lit = 0}; }")
1987-
g.writeln("static inline i32 rune__to_lower(i32 c) { return c >= 'A' && c <= 'Z' ? c + 32 : c; }")
1988-
g.writeln('static inline string data_to_hex_string(const void* data, int len) { static const char* hex = "0123456789abcdef"; int n = len > 0 ? len : 0; u8* out = (u8*)malloc((size_t)n * 2 + 1); const u8* bytes = (const u8*)data; for (int i = 0; i < n; i++) { out[i * 2] = (u8)hex[(bytes[i] >> 4) & 15]; out[i * 2 + 1] = (u8)hex[bytes[i] & 15]; } out[n * 2] = 0; return (string){.str = out, .len = n * 2, .is_lit = 0}; }')
1982+
g.writeln('void panic(string s);')
1983+
g.writeln('bool u8__is_letter(u8 c);')
1984+
g.writeln('bool u8__is_capital(u8 c);')
1985+
g.writeln('bool string__is_capital(string s);')
1986+
g.writeln('string string__to_lower_ascii(string s);')
1987+
g.writeln('i32 rune__to_lower(i32 c);')
1988+
g.writeln('string data_to_hex_string(u8* data, int len);')
19891989
g.writeln('#ifndef V_COMMIT_HASH')
19901990
g.writeln('#define V_COMMIT_HASH ""')
19911991
g.writeln('#endif')
@@ -2130,9 +2130,6 @@ fn (mut g FlatGen) late_compat_decls() {
21302130
if 'strconv.AtoF64Param' in g.struct_decl_infos {
21312131
g.writeln('static inline Optional strconv__atof64(string s, strconv__AtoF64Param param) { (void)param; char buf[128]; int n = s.len < 127 ? s.len : 127; if (n < 0) n = 0; if (s.str != NULL && n > 0) memcpy(buf, s.str, (size_t)n); buf[n] = 0; return (Optional){.ok = true, .value = (int)strtod(buf, NULL)}; }')
21322132
}
2133-
if 'strconv.PrepNumber' in g.struct_decl_infos {
2134-
g.writeln('static inline multi_return_int_strconv__PrepNumber strconv__parser(string s) { (void)s; return (multi_return_int_strconv__PrepNumber){.arg0 = 0, .arg1 = (strconv__PrepNumber){}}; }')
2135-
}
21362133
if !g.needs_late_compat_decls() {
21372134
return
21382135
}

vlib/v3/gen/c/fn.v

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -768,7 +768,7 @@ fn (mut g FlatGen) gen_call(id flat.NodeId, node flat.Node) {
768768
return
769769
}
770770
'panic' {
771-
g.write('v_panic(')
771+
g.write('panic(')
772772
if node.children_count > 1 {
773773
arg_id := g.a.child(&node, 1)
774774
arg_type := g.tc.resolve_type(arg_id)
@@ -2194,6 +2194,10 @@ fn (g &FlatGen) node_has_unresolved_generics(id flat.NodeId) bool {
21942194
if node.kind == .fn_decl || node.kind == .c_fn_decl || node.kind == .fn_literal {
21952195
return false
21962196
}
2197+
if node.kind in [.int_literal, .float_literal, .bool_literal, .char_literal, .string_literal,
2198+
.nil_literal, .none_expr] {
2199+
return false
2200+
}
21972201
if g.has_unresolved_generic_text(node.value) || g.has_unresolved_generic_text(node.typ) {
21982202
return true
21992203
}

vlib/v3/gen/c/interface.v

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ fn (mut g FlatGen) gen_interface_dispatch(iface_name string, cn string, method s
329329
g.writeln('\treturn i->code;')
330330
}
331331
else {
332-
g.writeln('\tv_panic(_str_${sid});')
332+
g.writeln('\tpanic(_str_${sid});')
333333
g.writeln('\treturn (${ret_ct}){0};')
334334
}
335335
}
@@ -409,7 +409,7 @@ fn (mut g FlatGen) gen_interface_dispatch(iface_name string, cn string, method s
409409
g.writeln('\t\tdefault: break;')
410410
g.writeln('\t}')
411411
}
412-
g.writeln('\tv_panic(_str_${sid});')
412+
g.writeln('\tpanic(_str_${sid});')
413413
if ret_ct != 'void' {
414414
g.writeln('\treturn (${ret_ct}){0};')
415415
}

vlib/v3/gen/c/stmt.v

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1020,7 +1020,7 @@ fn (mut g FlatGen) gen_assign_or_expr(node flat.Node, lhs_idx int, or_node flat.
10201020
fn_opt_ct := g.optional_type_name(g.cur_fn_ret)
10211021
g.writeln('return (${fn_opt_ct}){.ok = false, .err = err};')
10221022
} else {
1023-
g.writeln('v_panic(IError__str(err));')
1023+
g.writeln('panic(IError__str(err));')
10241024
}
10251025
} else {
10261026
for j in 0 .. or_body.children_count {
@@ -1075,7 +1075,7 @@ fn (mut g FlatGen) gen_decl_or_expr(lhs flat.Node, or_node flat.Node) {
10751075
fn_opt_ct := g.optional_type_name(g.cur_fn_ret)
10761076
g.writeln('return (${fn_opt_ct}){.ok = false, .err = err};')
10771077
} else {
1078-
g.writeln('v_panic(IError__str(err));')
1078+
g.writeln('panic(IError__str(err));')
10791079
}
10801080
} else if or_body.children_count > 0 {
10811081
for i in 0 .. or_body.children_count {
@@ -1257,7 +1257,7 @@ fn (mut g FlatGen) gen_or_expr_stmt(node flat.Node) {
12571257
fn_opt_ct := g.optional_type_name(g.cur_fn_ret)
12581258
g.writeln('return (${fn_opt_ct}){.ok = false, .err = err};')
12591259
} else {
1260-
g.writeln('v_panic(IError__str(err));')
1260+
g.writeln('panic(IError__str(err));')
12611261
}
12621262
} else {
12631263
for i in 0 .. or_body.children_count {

vlib/v3/markused/markused.v

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,8 @@ pub fn mark_used(a &flat.FlatAst, tc &types.TypeChecker) map[string]bool {
132132
'strings.Builder.free', 'strconv.format_int', 'strconv.format_uint', 'bool.str', 'ptr_str',
133133
'strconv__f32_to_str_l', 'strconv__f64_to_str_l', 'sync.new_channel_st', 'sync.Channel.push',
134134
'sync.Channel.pop', 'sync.Channel.close', 'new_channel_st', 'Channel.push', 'Channel.pop',
135-
'Channel.close'] {
135+
'Channel.close', 'panic', 'u8.is_letter', 'u8.is_capital', 'string.is_capital',
136+
'string.to_lower_ascii', 'rune.to_lower', 'data_to_hex_string'] {
136137
queue << seed
137138
used[seed] = true
138139
}

0 commit comments

Comments
 (0)