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) {
|
||||
return 1 || -0.1;
|
||||
double x = 3.5;
|
||||
return factorial(x);
|
||||
}
|
||||
|
||||
|
|
|
@ -2803,8 +2803,12 @@ function parse_expression
|
|||
:call_args_loop
|
||||
if *1p == SYMBOL_RPAREN goto call_args_loop_end
|
||||
n = token_next_semicolon_comma_rbracket(p)
|
||||
*1out = EXPRESSION_CAST ; generate cast to proper argument type
|
||||
arg_type = out + 4
|
||||
out += 8
|
||||
b = out + 4
|
||||
out = parse_expression(p, n, out)
|
||||
*4arg_type = type_create_copy(*4b)
|
||||
b = types + param_type
|
||||
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:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue