mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
cgen: use *char in all functions with *char args to avoid warnings
This commit is contained in:
@ -746,14 +746,17 @@ fn (p mut Parser) fn_args(f mut Fn) {
|
||||
|
||||
// foo *(1, 2, 3, mut bar)*
|
||||
fn (p mut Parser) fn_call_args(f mut Fn) &Fn {
|
||||
// p.gen('(')
|
||||
// println('fn_call_args() name=$f.name args.len=$f.args.len')
|
||||
// C func. # of args is not known
|
||||
// if f.name.starts_with('c_') {
|
||||
p.check(.lpar)
|
||||
if f.is_c {
|
||||
for p.tok != .rpar {
|
||||
p.bool_expression()
|
||||
ph := p.cgen.add_placeholder()
|
||||
typ := p.bool_expression()
|
||||
// Cast V byteptr to C char* (byte is unsigned in V, that led to C warnings)
|
||||
if typ == 'byte*' {
|
||||
p.cgen.set_placeholder(ph, '(char*)')
|
||||
}
|
||||
if p.tok == .comma {
|
||||
p.gen(', ')
|
||||
p.check(.comma)
|
||||
|
@ -3171,6 +3171,7 @@ fn (p mut Parser) switch_statement() {
|
||||
}
|
||||
p.cgen.start_tmp()
|
||||
typ := p.bool_expression()
|
||||
is_str := typ == 'string'
|
||||
expr := p.cgen.end_tmp()
|
||||
p.check(.lcbr)
|
||||
mut i := 0
|
||||
@ -3198,13 +3199,16 @@ fn (p mut Parser) switch_statement() {
|
||||
mut got_comma := false
|
||||
for {
|
||||
if got_comma {
|
||||
p.gen(') || ')
|
||||
if is_str {
|
||||
p.gen(')')
|
||||
}
|
||||
p.gen(' || ')
|
||||
}
|
||||
if typ == 'string' {
|
||||
p.gen('string_eq($expr, ')
|
||||
}
|
||||
else {
|
||||
p.gen('($expr == ')
|
||||
p.gen('$expr == ')
|
||||
}
|
||||
if p.tok == .key_case || p.tok == .key_default {
|
||||
p.check(p.tok)
|
||||
@ -3222,7 +3226,10 @@ fn (p mut Parser) switch_statement() {
|
||||
else {
|
||||
p.check(.arrow)
|
||||
}
|
||||
p.gen(')) {')
|
||||
if is_str {
|
||||
p.gen(')')
|
||||
}
|
||||
p.gen(') {')
|
||||
p.genln('/* case */')
|
||||
p.statements()
|
||||
all_cases_return = all_cases_return && p.returns
|
||||
|
Reference in New Issue
Block a user