@@ -367,10 +367,17 @@ Arg** ARG2LIST(Allocator &al, Arg *x) {
367
367
if (n_##x > 0 ) { \
368
368
for (size_t i = 0 ; i < n_##x; i++) { \
369
369
_m_##x.push_back (al, m_##x[i]->_arg ); \
370
- if (m_##x[i]->default_value && !kw) { \
371
- defaults.push_back (al, m_##x[i]->defaults ); \
372
- } else if (m_##x[i]->default_value ){ \
373
- kw_defaults.push_back (al, m_##x[i]->defaults ); \
370
+ if (m_##x[i]->default_value ) { \
371
+ if (kw == 0 ) { \
372
+ defaults.push_back (al, m_##x[i]->defaults ); \
373
+ } else { \
374
+ kw_defaults.push_back (al, m_##x[i]->defaults ); \
375
+ } \
376
+ } else { \
377
+ if (kw == 1 ) { \
378
+ kw_defaults.push_back (al, \
379
+ (expr_t *)make_ConstantNone_t (al, l, nullptr )); \
380
+ } \
374
381
} \
375
382
} \
376
383
r->arguments .m_ ##x = _m_##x.p ; \
@@ -394,25 +401,25 @@ static inline Args *FUNC_ARGS_01(Allocator &al, Location &l, Fn_Arg *parameters)
394
401
if (parameters != nullptr ) {
395
402
Arg** m_posonlyargs = parameters->posonlyargs .p ;
396
403
size_t n_posonlyargs = parameters->posonlyargs .n ;
397
- FUNC_ARGS_ (posonlyargs, false );
404
+ FUNC_ARGS_ (posonlyargs, 0 );
398
405
}
399
406
if (parameters != nullptr && parameters->args_val ) {
400
407
Arg** m_args = parameters->args ->args .p ;
401
408
size_t n_args = parameters->args ->args .n ;
402
- FUNC_ARGS_ (args, false );
409
+ FUNC_ARGS_ (args, 0 );
403
410
404
411
if (parameters->args ->var_kw_val ) {
405
412
Arg** m_vararg = parameters->args ->var_kw ->vararg .p ;
406
413
size_t n_vararg = parameters->args ->var_kw ->vararg .n ;
407
- FUNC_ARGS_ (vararg, false );
414
+ FUNC_ARGS_ (vararg, 0 );
408
415
409
416
Arg** m_kwonlyargs = parameters->args ->var_kw ->kwonlyargs .p ;
410
417
size_t n_kwonlyargs = parameters->args ->var_kw ->kwonlyargs .n ;
411
- FUNC_ARGS_ (kwonlyargs, true );
418
+ FUNC_ARGS_ (kwonlyargs, 1 );
412
419
413
420
Arg** m_kwarg = parameters->args ->var_kw ->kwarg .p ;
414
421
size_t n_kwarg = parameters->args ->var_kw ->kwarg .n ;
415
- FUNC_ARGS_ (kwarg, true );
422
+ FUNC_ARGS_ (kwarg, 2 );
416
423
}
417
424
}
418
425
r->arguments .m_kw_defaults = kw_defaults.p ;
0 commit comments