Paolo Tranquilli
6bbf1e3bc1
Codegen: use one generated test file per directory
...
This collapses all generated test QL sources into a single one per
directory, using query predicates to run the different tests.
This should improve the time required to run generated tests.
2025-06-25 11:44:54 +02:00
Paolo Tranquilli
0d292b785c
Rust: remove reduntant Item superclass from Adt subclasses
2025-06-20 15:45:18 +02:00
Paolo Tranquilli
14d48e9d58
Add black pre-commit hook
...
This switched `codegen` from the `autopep8` formatting to the `black`
one, and applies it to `bulk_mad_generator.py` as well. We can enroll
more python scripts to it in the future.
2025-06-10 12:25:39 +02:00
Paolo Tranquilli
fc9e066ecd
Codegen: implement db_table_name in dbschemegen
2025-03-19 15:14:14 +01:00
Paolo Tranquilli
841214f0f4
Codegen: introduce property-only pragmas
2025-03-19 15:14:14 +01:00
Tom Hvitved
e78b79fa45
Update misc/codegen/lib/ql.py
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-02-03 09:11:13 +01:00
Tom Hvitved
ec33457ad4
Codegen: Improve return type of self-typed properties
2025-02-03 09:11:09 +01:00
Cornelius Riemenschneider
53ca5083a9
Upgrade bazel to 8.0.0.
...
Previously, we were using 8.0.0rc1.
In particular, this upgrade means we need to explicitly
import more rules, as they've been moved out of the core bazel repo.
2024-12-10 12:05:37 +01:00
Paolo Tranquilli
b57a37479b
Rust: make File usable in codegen
2024-12-02 15:15:46 +01:00
Paolo Tranquilli
261e0a1a53
Codegen/Rust: allow renaming in QL
...
This adds a `ql.name` codegen pragma to change the name of a property on
the QL side. This is useful to give more meaningful names than what we
get from the generated rust AST.
2024-11-25 17:04:03 +01:00
Tom Hvitved
c8736e8a3d
Rust: Auto-generate CfgNodes.qll
2024-11-21 10:21:11 +01:00
Paolo Tranquilli
bd08bc7923
Rust: address review
2024-10-15 14:21:11 +02:00
Tom Hvitved
b284a2a7c0
Rust: Add Callable as a base class of Function and ClosureExpr
2024-10-11 12:00:30 +02:00
Paolo Tranquilli
c364fd7e56
Codegen: allow annotations to replace bases and drop fields
2024-10-10 14:33:06 +02:00
Arthur Baars
04e3b39ffb
Merge pull request #17537 from github/redsun82/rust-doctest-gen
...
Rust: take test code also from property descriptions
2024-09-23 11:41:32 +02:00
Arthur Baars
05173fa7ac
Merge pull request #17539 from github/redsun82/rust-codegen-detach
...
Rust/Codegen: allow to "detach" property emission
2024-09-23 11:40:11 +02:00
Paolo Tranquilli
c74b6be136
Rust/Codegen: allow to "detach" property emission
...
By using the `rust.detach` pragma on a property, we make that property
not appear in the generated struct as a field, and provide instead
a `generated::Class::emit_property` function that can be used to emit
the corresponding TRAP entry independently.
2024-09-20 16:06:22 +02:00
Paolo Tranquilli
2a95068a0a
Rust: take test code also from property descriptions
2024-09-20 15:12:13 +02:00
Paolo Tranquilli
4e59fa9035
Codegen: remove unneeded code
2024-09-20 12:47:45 +02:00
Paolo Tranquilli
f7afcd038a
Codegen: move use_for_null to pragmas
2024-09-20 12:47:45 +02:00
Paolo Tranquilli
d2ebe00492
Codegen: move group to parametrized pragmas
2024-09-20 12:47:44 +02:00
Paolo Tranquilli
2533f18a6e
Codegen: move ql.hideable to pragmas
2024-09-20 12:47:44 +02:00
Paolo Tranquilli
8d291ab938
Codegen: move qltest.test_with to parametrized pragmas
2024-09-20 12:47:44 +02:00
Paolo Tranquilli
3e2f886595
Codegen: allow inheritable pragmas
2024-09-20 12:47:43 +02:00
Paolo Tranquilli
db00cb6827
Codegen: move class synth decorators to pragmas
2024-09-20 11:09:22 +02:00
Paolo Tranquilli
9d6ee09f65
Codegen: move rust.doc_test_signature to parametrized pragmas
2024-09-20 11:09:21 +02:00
Paolo Tranquilli
70997e8189
Codegen: move default_doc_name to parametrized pragma
2024-09-20 11:09:21 +02:00
Paolo Tranquilli
9f1d50ebd1
Codegen: allow parametrized pragmas
2024-09-20 11:09:21 +02:00
Paolo Tranquilli
74c0fa7154
Codegen: allow annotations to add class decorations
2024-09-20 08:40:34 +02:00
Paolo Tranquilli
cc5882a3c3
Codegen: allow full annotation of classes
2024-09-20 06:55:17 +02:00
Paolo Tranquilli
97cca76970
Revert "Codegen: allow to include .py files in schema.py"
2024-09-19 16:58:20 +02:00
Arthur Baars
f38f818578
Merge pull request #17516 from github/redsun82/codegen-annotate
...
Codegen: allow to attach docstrings after the definition
2024-09-19 15:35:16 +02:00
Paolo Tranquilli
c117a53fb0
Codegen: allow to attach docstrings after the definition
2024-09-19 12:43:34 +02:00
Paolo Tranquilli
ec9bb1da56
Codegen: allow to include .py files in schema.py
2024-09-19 12:18:52 +02:00
Paolo Tranquilli
0d8d9a3447
Merge branch 'main' into redsun82/rust-default-doc-signature
2024-09-17 08:29:01 +02:00
Paolo Tranquilli
1ce4707ff9
Merge branch 'main' into redsun82/rust-typed-labels
2024-09-16 16:44:55 +02:00
Tom Hvitved
964e97c842
Update misc/codegen/lib/ql.py
...
Co-authored-by: Paolo Tranquilli <redsun82@github.com >
2024-09-16 15:48:13 +02:00
Paolo Tranquilli
10e42237f3
Codegen: fix test
2024-09-16 14:46:42 +02:00
Tom Hvitved
9c0cafeeb8
Codegen: Make public AST classes final
2024-09-16 13:39:53 +02:00
Paolo Tranquilli
f1233b14e8
Rust: fix generated hierarchy
2024-09-16 10:06:01 +02:00
Paolo Tranquilli
faf1eeeb0d
Rust: introduce typed labels
2024-09-13 13:57:14 +02:00
Paolo Tranquilli
beb27bf5e3
Rust: fix QL compilation and schema includes ordering
2024-09-12 15:05:30 +02:00
Paolo Tranquilli
3cd8aaf4b0
Rust: simplify rust doc test annotation
2024-09-09 08:59:17 +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
Paolo Tranquilli
7e1290aa74
Rust: reuse shared rust trap library
2024-08-30 16:08:37 +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
Paolo Tranquilli
f40901f391
Rust: archiving + skeleton def translator
2024-08-28 17:15:49 +02:00
Paolo Tranquilli
2d34fec0a2
Codegen: remove unneeded has_description property
2023-11-24 06:56:55 +01:00
Paolo Tranquilli
9264b2a6d6
Codegen: add internal to properties, rename ql_internal->internal
2023-11-24 06:56:55 +01:00