Rust: distinguish [a, b] from [a; b]

This splits the `ArrayExpr` class into `ArrayListExpr` and `ArrayRepeatExpr`.
This uses the `synth.from_class` machinery to integrate seamlessly into the
generated code, by hiding the extracted `ArrayExpr` behind an internal class
and replacing it with a hierarchy of those two classes under a new
`ArrayExpr` class.
This commit is contained in:
Paolo Tranquilli
2024-12-03 15:09:20 +01:00
parent 06b1d8e448
commit 353f1cafe6
49 changed files with 724 additions and 164 deletions

3
rust/schema/ast.py generated
View File

@@ -38,9 +38,10 @@ class Abi(AstNode):
class ArgList(AstNode):
args: list["Expr"] | child
class ArrayExpr(Expr):
class ArrayExprInternal(Expr):
attrs: list["Attr"] | child
exprs: list["Expr"] | child
is_semicolon: predicate
class ArrayType(TypeRef):
const_arg: optional["ConstArg"] | child