mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
runtime as
type check: part 2
This commit is contained in:
parent
2d187fb951
commit
48857090fc
@ -17,7 +17,7 @@ pub:
|
||||
}
|
||||
|
||||
// Internal function, used by V (`nums := []int`)
|
||||
fn new_array(mylen int, cap int, elm_size int) array {
|
||||
fn __new_array(mylen int, cap int, elm_size int) array {
|
||||
cap_ := if cap == 0 { 1 } else { cap }
|
||||
arr := array{
|
||||
len: mylen
|
||||
@ -27,14 +27,21 @@ fn new_array(mylen int, cap int, elm_size int) array {
|
||||
}
|
||||
return arr
|
||||
}
|
||||
fn new_array(mylen int, cap int, elm_size int) array {
|
||||
cap_ := if cap == 0 { 1 } else { cap }
|
||||
arr := array{
|
||||
len: mylen
|
||||
cap: cap_
|
||||
element_size: elm_size
|
||||
data: vcalloc(cap_ * elm_size)
|
||||
}
|
||||
return arr
|
||||
|
||||
fn __new_array(mylen int, cap int, elm_size int) array {
|
||||
return new_array(mylen, cap, elm_size)
|
||||
}
|
||||
|
||||
// TODO
|
||||
pub fn make(len int, cap int, elm_size int) array {
|
||||
return new_array(len, cap, elm_size)
|
||||
return __new_array(len, cap, elm_size)
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -966,7 +966,7 @@ pub fn (s string) ustring() ustring {
|
||||
// runes will have at least s.len elements, save reallocations
|
||||
// TODO use VLA for small strings?
|
||||
|
||||
runes: new_array(0, s.len, sizeof(int))
|
||||
runes: __new_array(0, s.len, sizeof(int))
|
||||
}
|
||||
for i := 0; i < s.len; i++ {
|
||||
char_len := utf8_char_len(s.str[i])
|
||||
@ -984,7 +984,7 @@ __global g_ustring_runes []int
|
||||
|
||||
pub fn (s string) ustring_tmp() ustring {
|
||||
if g_ustring_runes.len == 0 {
|
||||
g_ustring_runes = new_array(0, 128, sizeof(int))
|
||||
g_ustring_runes = __new_array(0, 128, sizeof(int))
|
||||
}
|
||||
mut res := ustring{
|
||||
s: s
|
||||
@ -1032,7 +1032,7 @@ fn (u ustring) ge(a ustring) bool {
|
||||
pub fn (u ustring) add(a ustring) ustring {
|
||||
mut res := ustring{
|
||||
s: u.s + a.s
|
||||
runes: new_array(0, u.s.len + a.s.len, sizeof(int))
|
||||
runes: __new_array(0, u.s.len + a.s.len, sizeof(int))
|
||||
}
|
||||
mut j := 0
|
||||
for i := 0; i < u.s.len; i++ {
|
||||
|
@ -2913,16 +2913,16 @@ fn (mut g Gen) as_cast(node ast.AsCast) {
|
||||
styp := g.typ(node.typ)
|
||||
expr_type_sym := g.table.get_type_symbol(node.expr_type)
|
||||
if expr_type_sym.kind == .sum_type {
|
||||
/*
|
||||
g.write('/* as */ *($styp*)')
|
||||
g.expr(node.expr)
|
||||
g.write('.obj')
|
||||
/*
|
||||
*/
|
||||
g.write('/* as */ *($styp*)__as_cast(')
|
||||
g.expr(node.expr)
|
||||
g.write('.obj, ')
|
||||
g.expr(node.expr)
|
||||
g.write('.typ, /*expected:*/$node.typ)')
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user