Plugins and overloads don't interact well
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Métriques de merge des PR
- Métriques de PR en attente
Description
While working on our own plugin for self-checking proper types and isinstance() I have tried to use get_function_hook() to emit some additional errors for overloaded functions. However this didn't work for three reasons:
- The hook is called for every item in the overload, not for the overload as a whole.
- The overload logic relies on empty
Messagesas a sign of successful match - The errors emitted during overload selection are discarded afterwards, thus discarding the plugin generated errors
This issue can be fixed in three ways:
- Calling the hook on the overload as a whole after selecting the overload variant and type checking it (this however will be a breaking API change)
- Use newly added error codes to only abandon a variant if the error is due to bad argument type (this is however still bad because
check_call()may have anaccept()call possibly triggering almost arbitrary error including a nested function call with bad argument type). - Use a boolean attribute somewhere that will be set by
check_argument_types()and will be reset after return from everyaccept().
I am leaning towards the last option, since it is most principled IMO.
cc @Michael0x2a
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par suivre get_function_hook() à travers la sélection des surcharges, check_call(), check_argument_types() et accept(). Comparez la manière dont la correspondance des surcharges utilise des Messages vides et dont les erreurs des plugins sont ignorées. La tâche est terminée lorsque les erreurs générées par les plugins survivent à la sélection des surcharges sans rejeter incorrectement les variantes de surcharge valides, tout en conservant un comportement sélectionné cohérent.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- compilers, devtools
- Type d'issue
- Bug
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100