Simon Friis Vindum
67a06cb772
Rust: Support loop in CFG
2024-09-12 09:29:19 +02:00
Simon Friis Vindum
857edb791c
Rust: Fix control flow tree for function and block expression
2024-09-11 11:18:56 +02:00
Simon Friis Vindum
809d040528
Make more classes private and final
2024-09-11 09:37:39 +02:00
Simon Friis Vindum
6d972bea2c
Rust: Add a few control flow tree classes
2024-09-11 09:08:54 +02:00
Simon Friis Vindum
91d5171d90
Add base setup for control flow graph construction
2024-09-11 09:08:53 +02:00
Arthur Baars
a5d1d9e167
Make implementation more complete
...
Use Unimplemented to mark AstNodes that need implementing
2024-09-10 14:13:05 +02:00
Arthur Baars
b2451c6667
Improve schema
2024-09-10 12:26:54 +02:00
Arthur Baars
42b1112be6
Rust: add default Element::toString
2024-09-09 15:05:04 +02:00
Arthur Baars
20ca8801e6
Revert "Rust: PrintAstNode: tolerate elements without toString"
...
This reverts commit 85e51bf0ec .
2024-09-09 15:01:32 +02:00
Arthur Baars
86215b4f02
Rename IfLet to IfStmt
2024-09-09 13:33:17 +02:00
Arthur Baars
85e51bf0ec
Rust: PrintAstNode: tolerate elements without toString
2024-09-09 13:29:49 +02:00
Arthur Baars
b40476423b
Rust: schema.py add '| child' markers
2024-09-09 13:29:45 +02:00
Paolo Tranquilli
10a23c0843
Merge branch 'rust-experiment' into redsun82/rust-doctest-gen
2024-09-09 12:20:55 +02:00
Arthur Baars
1a9b2329f4
Add SlicePat::{slice, suffix}
2024-09-06 19:27:35 +02:00
Arthur Baars
406d03edfc
Rename IfLet::else_branch to IfLet::else_
2024-09-06 18:40:03 +02:00
Arthur Baars
e8277015ab
Add subclasses for Array
2024-09-06 18:23:01 +02:00
Arthur Baars
69b05e835c
Add fields for OffsetOf
2024-09-06 18:17:15 +02:00
Arthur Baars
75113367c9
Add InlineAsm::expr
2024-09-06 18:14:14 +02:00
Arthur Baars
bc6da117d2
Fix type of Closure::arg_types
2024-09-06 17:59:24 +02:00
Paolo Tranquilli
18c423eb55
Rust: fix formatting of code snippet in docstring
2024-09-06 14:27:57 +02:00
Paolo Tranquilli
8c5cc2efdc
Rust: generate test code from schema docstrings
...
This generates test source files from code blocks in class docstrings.
By default the test code is generated as is, but it can optionally:
* be wrapped in a function providing an adequate context using
`@rust.doc_test_function(name, *, lifetimes=(), return_type="()", **kwargs)`,
with `kwargs` providing both generic and normal params depending on
capitalization
* be skipped altogether using `@rust.skip_doc_test`
So for example an annotation like
```python
@rust.doc_test_function("foo",
lifetimes=("a",),
T="Eq",
x="&'a T",
y="&'a T",
return_type="&'a T")
```
will result in the following wrapper:
```rust
fn foo<'a, T: Eq>(x: &'a T, y: &'a T) -> &'a T {
// example code here
}
```
2024-09-06 14:24:42 +02:00
Arthur Baars
a33c7703cd
Add Label class
2024-09-06 12:42:43 +02:00
Arthur Baars
e14b626917
Add 'BlockBase' class
2024-09-06 12:15:35 +02:00
Arthur Baars
ce2fdb3463
Address comments
2024-09-06 11:47:08 +02:00
Arthur Baars
46d6bbb458
Rust: update generated code
2024-09-05 16:59:29 +02:00
Arthur Baars
d93330bc4c
Rust: make printAst work
2024-09-05 14:49:36 +02:00
Paolo Tranquilli
885e89a927
Rust: first running tests
2024-08-30 17:45:51 +02:00
Paolo Tranquilli
4f0fe1ce3a
Rust: bazel packaging
2024-08-30 13:05:46 +02:00
Paolo Tranquilli
590a146b49
Rust: some basic extraction of function names (with locations!)
2024-08-29 17:58:50 +02:00