v2: minor fixes
parent
99217da6ca
commit
f782388148
|
@ -368,10 +368,10 @@ pub fn (b []byte) hex() string {
|
||||||
mut ptr := &hex[0]
|
mut ptr := &hex[0]
|
||||||
for i := 0; i < b.len; i++ {
|
for i := 0; i < b.len; i++ {
|
||||||
// QTODO
|
// QTODO
|
||||||
ptr += C.sprintf(ptr as charptr, '%02x', b[i])
|
ptr += C.sprintf(ptr, '%02x', b[i])
|
||||||
}
|
}
|
||||||
return hex as string
|
//return hex as string
|
||||||
//return string(hex)
|
return string(hex)
|
||||||
}
|
}
|
||||||
|
|
||||||
// copy copies the `src` byte array elements to the `dst` byte array.
|
// copy copies the `src` byte array elements to the `dst` byte array.
|
||||||
|
|
|
@ -64,7 +64,7 @@ fn print_backtrace_skipping_top_frames_mac(skipframes int) bool {
|
||||||
$if macos {
|
$if macos {
|
||||||
buffer := [100]byteptr
|
buffer := [100]byteptr
|
||||||
nr_ptrs := C.backtrace(buffer, 100)
|
nr_ptrs := C.backtrace(buffer, 100)
|
||||||
C.backtrace_symbols_fd(&buffer[skipframes], nr_ptrs - skipframes, 1)
|
backtrace_symbols_fd(&buffer[skipframes], nr_ptrs - skipframes, 1)
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
|
@ -157,7 +157,7 @@ pub fn (c &Checker) call_expr(call_expr ast.CallExpr) table.TypeRef {
|
||||||
c.error('too few arguments in call to `$fn_name`', call_expr.pos)
|
c.error('too few arguments in call to `$fn_name`', call_expr.pos)
|
||||||
}
|
}
|
||||||
else if call_expr.args.len > f.args.len {
|
else if call_expr.args.len > f.args.len {
|
||||||
c.error('too many arguments in call to `$fn_name`', call_expr.pos)
|
c.error('too many arguments in call to `$fn_name` ($call_expr.args.len instead of $f.args.len)', call_expr.pos)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for i, arg in f.args {
|
for i, arg in f.args {
|
||||||
|
@ -206,6 +206,7 @@ pub fn (c &Checker) selector_expr(selector_expr ast.SelectorExpr) table.TypeRef
|
||||||
return c.table.type_ref(table.int_type_idx)
|
return c.table.type_ref(table.int_type_idx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.string {}
|
||||||
else {
|
else {
|
||||||
c.error('`$typ.typ.name` is not a struct', selector_expr.pos)
|
c.error('`$typ.typ.name` is not a struct', selector_expr.pos)
|
||||||
}
|
}
|
||||||
|
|
|
@ -466,13 +466,35 @@ pub fn (p mut Parser) name_expr() (ast.Expr,table.TypeRef) {
|
||||||
p.check_name()
|
p.check_name()
|
||||||
return node,typ
|
return node,typ
|
||||||
}
|
}
|
||||||
// fn call
|
// fn call or type cast
|
||||||
if p.peek_tok.kind == .lpar {
|
if p.peek_tok.kind == .lpar {
|
||||||
|
name := p.tok.lit
|
||||||
|
// type cast. TODO: finish
|
||||||
|
if name in p.table.type_idxs {
|
||||||
|
// ['byte', 'string', 'int']
|
||||||
|
// SKIP FOR NOW
|
||||||
|
mut par_d := 0
|
||||||
|
for {
|
||||||
|
if p.tok.kind == .lpar {
|
||||||
|
par_d++
|
||||||
|
}
|
||||||
|
if p.tok.kind == .rpar {
|
||||||
|
par_d--
|
||||||
|
if par_d == 0 {
|
||||||
|
p.next()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
p.next()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
println('calling $p.tok.lit')
|
println('calling $p.tok.lit')
|
||||||
x,ti2 := p.call_expr() // TODO `node,typ :=` should work
|
x,ti2 := p.call_expr() // TODO `node,typ :=` should work
|
||||||
node = x
|
node = x
|
||||||
typ = ti2
|
typ = ti2
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// struct init
|
// struct init
|
||||||
else if p.peek_tok.kind == .lcbr && (p.tok.lit[0].is_capital() || p.tok.lit in ['array', 'string', 'ustring', 'mapnode', 'map']) && !p.tok.lit[p.tok.lit.len - 1].is_capital() {
|
else if p.peek_tok.kind == .lcbr && (p.tok.lit[0].is_capital() || p.tok.lit in ['array', 'string', 'ustring', 'mapnode', 'map']) && !p.tok.lit[p.tok.lit.len - 1].is_capital() {
|
||||||
// || p.table.known_type(p.tok.lit)) {
|
// || p.table.known_type(p.tok.lit)) {
|
||||||
|
|
Loading…
Reference in New Issue