mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-02-20 17:29:11 +00:00
Fix DEFCNT for lambda functions
This commit is contained in:
parent
f03c373ab3
commit
50f066e527
@ -121,6 +121,11 @@ export def main(range)
|
||||
lambda = &(x,y) x * y
|
||||
puti(lambda(2,3));putln
|
||||
end
|
||||
|
||||
def dummy(zz)#0
|
||||
puts("dummy func"); putln
|
||||
end
|
||||
|
||||
puti(array[0]);putc(' ')
|
||||
puti(array[1]);putc(' ')
|
||||
puti(array[2]);putc(' ')
|
||||
|
@ -1485,7 +1485,6 @@ int parse_lambda(void)
|
||||
* Parse parameters and return value count
|
||||
*/
|
||||
cfnparms = 0;
|
||||
func_tag = tag_new(DEF_TYPE);
|
||||
if (scan() == OPEN_PAREN_TOKEN)
|
||||
{
|
||||
do
|
||||
@ -1527,13 +1526,19 @@ int parse_lambda(void)
|
||||
lambda_seq[lambda_cnt] = parse_expr(NULL, NULL);
|
||||
scan_rewind(tokenstr);
|
||||
}
|
||||
lambda_cparams[lambda_cnt] = cfnparms;
|
||||
lambda_tag[lambda_cnt] = func_tag;
|
||||
sprintf(lambda_id[lambda_cnt], "_LAMBDA%04d", lambda_num++);
|
||||
if (idglobal_lookup(lambda_id[lambda_cnt], strlen(lambda_id[lambda_cnt])) >= 0)
|
||||
{
|
||||
func_tag = lambda_tag[lambda_cnt];
|
||||
idfunc_set(lambda_id[lambda_cnt], strlen(lambda_id[lambda_cnt]), DEF_TYPE | funcparms_type(cfnparms), func_tag); // Override any predef type & tag
|
||||
}
|
||||
else
|
||||
{
|
||||
func_tag = tag_new(DEF_TYPE);
|
||||
lambda_tag[lambda_cnt] = func_tag;
|
||||
lambda_cparams[lambda_cnt] = cfnparms;
|
||||
idfunc_add(lambda_id[lambda_cnt], strlen(lambda_id[lambda_cnt]), DEF_TYPE | funcparms_type(cfnparms), func_tag);
|
||||
}
|
||||
lambda_cnt++;
|
||||
idlocal_restore();
|
||||
return (func_tag);
|
||||
|
Loading…
x
Reference in New Issue
Block a user