quipu mercurial repository
Révision | 6875227bcd00b467806f2c645e96600a04c5f5df (tree) |
---|---|
l'heure | 2020-04-09 08:43:05 |
Auteur | Agustina Arzille <avarzille@rise...> |
Commiter | Agustina Arzille |
Better reporting of generic function names
@@ -456,14 +456,16 @@ | ||
456 | 456 | return (meth_call (interp, argv, argc)); |
457 | 457 | |
458 | 458 | case 3: |
459 | - // Flag method. | |
460 | - if (argc != 3 || !fct_p (argv[1]) || !fct_p (argv[2])) | |
459 | + // Flag generic function. | |
460 | + if (argc != 4 || !fct_p (argv[2]) || !fct_p (argv[3])) | |
461 | 461 | qp_return (NIL); |
462 | + else if (symbol_p (argv[1])) | |
463 | + as_fct(argv[3])->name = argv[1]; | |
462 | 464 | |
463 | - as_fct(argv[2])->set_flag (function::genericfn_flag | | |
464 | - (as_fct(argv[1])->vo_full & function::kwargs_flag)); | |
465 | - as_fct(argv[2])->max_argc = as_fct(argv[1])->max_argc; | |
466 | - qp_return (argv[2]); | |
465 | + as_fct(argv[3])->set_flag (function::genericfn_flag | | |
466 | + (as_fct(argv[2])->vo_full & function::kwargs_flag)); | |
467 | + as_fct(argv[3])->max_argc = as_fct(argv[2])->max_argc; | |
468 | + qp_return (argv[3]); | |
467 | 469 | |
468 | 470 | case 4: |
469 | 471 | return (meth_next (interp, argv + 1, argc - 1)); |
@@ -475,7 +477,7 @@ | ||
475 | 477 | return (meth_query (interp, argv + 1, argc - 1)); |
476 | 478 | |
477 | 479 | case 7: |
478 | - { | |
480 | + { // Add method to generic function. | |
479 | 481 | if (!genericfn_p (argv[1])) |
480 | 482 | interp->raise ("arg-error", "first argument " |
481 | 483 | "is not a generic function"); |
@@ -532,8 +532,8 @@ | ||
532 | 532 | (defct %meth-cmptypes (x y) |
533 | 533 | (%meth-ctl 1 x y)) |
534 | 534 | |
535 | -(defct %meth-flag (nargs fn) | |
536 | - (%meth-ctl 3 nargs fn)) | |
535 | +(defct %meth-flag (name meth gfn) | |
536 | + (%meth-ctl 3 name meth gfn)) | |
537 | 537 | |
538 | 538 | (defct %meth-get-argname (arg opt) |
539 | 539 | (if (array-p arg) |
@@ -620,7 +620,7 @@ | ||
620 | 620 | (fct (,gval ,gmeth) |
621 | 621 | (if (%meth-test ,gval ,gmeth) |
622 | 622 | ,gval |
623 | - (%meth-flag ,gmeth | |
623 | + (%meth-flag ,qn ,gmeth | |
624 | 624 | (let ,gval (tuple %meth-cmptypes) |
625 | 625 | (fct ,fct-args |
626 | 626 | ,call-expr))))) |