Rust: make Adt be generated

This commit is contained in:
Paolo Tranquilli
2025-06-20 14:35:08 +02:00
parent 3590ccaa69
commit 52c0028f85
14 changed files with 72 additions and 40 deletions

View File

@@ -16,7 +16,8 @@ class LoopingExpr(LabelableExpr):
loop_body: optional["BlockExpr"] | child
class Adt(Item):
@annotate(Adt, replace_bases={AstNode: Item})
class _:
"""
An ADT (Abstract Data Type) definition, such as `Struct`, `Enum`, or `Union`.
"""
@@ -1039,7 +1040,7 @@ class _:
"""
@annotate(Enum, replace_bases={Item: Adt})
@annotate(Enum)
class _:
"""
An enum declaration.
@@ -1834,7 +1835,7 @@ class _:
"""
@annotate(Struct, replace_bases={Item: Adt})
@annotate(Struct)
class _:
"""
A Struct. For example:
@@ -2013,7 +2014,7 @@ class _:
"""
@annotate(Union, replace_bases={Item: Adt})
@annotate(Union)
class _:
"""
A union declaration.

9
rust/schema/ast.py generated
View File

@@ -2,6 +2,9 @@
from .prelude import *
class Adt(AstNode, ):
pass
class AsmOperand(AstNode, ):
pass
@@ -207,7 +210,7 @@ class ContinueExpr(Expr, ):
class DynTraitTypeRepr(TypeRepr, ):
type_bound_list: optional["TypeBoundList"] | child
class Enum(Item, ):
class Enum(Adt, Item, ):
attrs: list["Attr"] | child
generic_param_list: optional["GenericParamList"] | child
name: optional["Name"] | child
@@ -625,7 +628,7 @@ class StmtList(AstNode, ):
statements: list["Stmt"] | child
tail_expr: optional["Expr"] | child
class Struct(Item, VariantDef, ):
class Struct(Adt, Item, VariantDef, ):
attrs: list["Attr"] | child
field_list: optional["FieldList"] | child
generic_param_list: optional["GenericParamList"] | child
@@ -713,7 +716,7 @@ class TypeParam(GenericParam, ):
class UnderscoreExpr(Expr, ):
attrs: list["Attr"] | child
class Union(Item, VariantDef, ):
class Union(Adt, Item, VariantDef, ):
attrs: list["Attr"] | child
generic_param_list: optional["GenericParamList"] | child
name: optional["Name"] | child