Add `Node` union
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
Piste de recherche
Examinez les types de nœuds AST existants et comparez les conceptions proposées de Node propriétaire et de NodeRef de référence. Résolvez les exigences de nommage et de propriété avant d’implémenter l’enum, les méthodes de conversion et les vérifications de types. La tâche est terminée lorsque les types de nœuds pris en charge et l’API requise sont convenus et couverts par des tests.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Add a new Node union that is an enum over all node types. This can be useful when implementing methods that can operate on any node. For example, Ruff's formatter has (roughly) the API format(node: AnyNode) -> String
I haven't figured out the full requirements yet, and I don't know yet if we'll need both the owned and reference versions:
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
enum Node {
IfStmt(ast::IfStmt),
ConstantExpr(ast::ConstantExpr),
...
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, is_macro)]
enum NodeRef<'a> {
IfStmt(&'a ast::IfStmt),
ConstantExpr(&'a ast::ConstantExpr)
...
}
Note: An alternative naming more in line with
PathandPathBufwould be to name the typesNodeBuf(owned) andNode(reference)
The enums should have the following basic methods:
if_stmt(self) -> Option<ast::IfStmt>as_if_stmt(&self) -> Option<&ast::IfStmt>const is_if_stmt(&self) -> bool
Node could also implement AsRef that returns a NodeRef
I may have time to work on this sometime soon but I wanted to put this up for discussion first to get feedback.
- Langage dominant
- Rust
- Étoiles
- 117
- Forks
- 38
- Merge moyen
- 4 j 7 h
- PR mergées (30 j)
- 1
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
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.
Autres issues de RustPython/Parser
-
Maintenance status Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 25/100
RustPython/Parser#140 · 3 commentaires ·
-
`unic` is unmaintained Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 48/100
RustPython/Parser#139 · 3 commentaires ·
-
cargo audit paste Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 30/100
RustPython/Parser#137 · 1 commentaire ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 50/100
RustPython/Parser#133 ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
RustPython/Parser#130 ·
Toutes les issues de RustPython/Parser
Issues similaires
-
Accept -c in more positions Ouvertearea: compat bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
area: dogs bug priority: P3 silent failure test-code
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
MystenLabs/sui#28056 · 1 commentaire ·
-
type/bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Luminous-Dynamics/mycelix#2577 ·