fix casting arguments to parameter type
This commit is contained in:
parent
29a92afcf2
commit
8c82a83778
2 changed files with 6 additions and 1 deletions
|
@ -12,6 +12,7 @@ long fibonacci(long x) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
return 1 || -0.1;
|
double x = 3.5;
|
||||||
|
return factorial(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2803,8 +2803,12 @@ function parse_expression
|
||||||
:call_args_loop
|
:call_args_loop
|
||||||
if *1p == SYMBOL_RPAREN goto call_args_loop_end
|
if *1p == SYMBOL_RPAREN goto call_args_loop_end
|
||||||
n = token_next_semicolon_comma_rbracket(p)
|
n = token_next_semicolon_comma_rbracket(p)
|
||||||
|
*1out = EXPRESSION_CAST ; generate cast to proper argument type
|
||||||
arg_type = out + 4
|
arg_type = out + 4
|
||||||
|
out += 8
|
||||||
|
b = out + 4
|
||||||
out = parse_expression(p, n, out)
|
out = parse_expression(p, n, out)
|
||||||
|
*4arg_type = type_create_copy(*4b)
|
||||||
b = types + param_type
|
b = types + param_type
|
||||||
if *1b == 0 goto arg_is_varargs ; reached the end of arguments (so presumably this function has varargs)
|
if *1b == 0 goto arg_is_varargs ; reached the end of arguments (so presumably this function has varargs)
|
||||||
; set argument type to parameter type. this is necessary because:
|
; set argument type to parameter type. this is necessary because:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue