summaryrefslogtreecommitdiff
path: root/crates/tor-netdoc
Commit message (Collapse)AuthorAgeFilesLines
...
* netdoc parse2: Support with for Item parsingIan Jackson2025-09-291-2/+23
| | | | Tests will come in a moment.
* netdoc parse2: New single_item attribute, testsIan Jackson2025-09-291-6/+55
|
* netdoc parse2: New single_item attributeIan Jackson2025-09-292-2/+30
| | | | | | Many of the existing netdoc structs have items that are just the single argument. We don't want to turn them all into singleton tuples. Provide a macro feature for this instead.
* netdoc parse2: Break out ITEM_VALUE_FROM_UNPARSEDIan Jackson2025-09-291-2/+6
| | | | This is going to get more complicated.
* netdoc parse2: NetdocParseableFields: Fix default, and testIan Jackson2025-09-292-2/+9
|
* netdoc parse2: NetdocParseableFields: introduce use of $fpatnameIan Jackson2025-09-291-5/+4
| | | | We're going to want to do more complex things here.
* netdoc parse2: Run selector-based trait check for intro item tooIan Jackson2025-09-291-2/+6
|
* netdoc parse2: Tests for new Object handlingIan Jackson2025-09-291-1/+85
|
* netdoc parse2: Fix Object handling (fmt)Ian Jackson2025-09-291-2/+4
|
* netdoc parse2: Fix Object handlingIan Jackson2025-09-297-42/+133
| | | | | | | | | | Use the standard multiplicity technique rather than the ad-hoc impl on Option. This allows us to support an ad-hoc parsing function for a field that's `Option`. Disentangle the `label` field attribute, which did both setting the label, and expecting a different parsing approach: replace it with `with`.
* netdoc parse2: Fix label for PublicKeyIan Jackson2025-09-291-1/+1
| | | | | This mistake escaped because this wasn't actually checked by the code, but it's going to be checked in a moment.
* netdoc parse2: Fix "rest" item arguments, and testIan Jackson2025-09-293-5/+28
| | | | | The previous code didn't compile at all, and this went unnoticed because it wasn't used by the poc.
* netdoc parse2: Actually use ArgumentSetSelector, and testIan Jackson2025-09-293-6/+12
| | | | Without this, parsing of Option and Vec argument fields doesn't work.
* netdoc parse2: tests: Initial tests of ItemValueParseable macroIan Jackson2025-09-291-1/+76
| | | | | This macro has some problems which I'm going to fix. Add a test case for the parts that are currently working.
* netdoc parse2: Fix typo in todo commentIan Jackson2025-09-291-1/+1
|
* netdoc parse2: Don't duplicate the error sourceIan Jackson2025-09-291-1/+1
| | | | `problem` is the `#[source]`.
* netdoc parse2: Fix invalid keyword error problem reportIan Jackson2025-09-291-1/+1
| | | | `#[from]` is not `#[source]`. We need to print the inner error.
* netdoc parse2: tests: Better error messages from error tests (fmt)Ian Jackson2025-09-291-2/+10
| | | | Worsify formatting as demanded by rustdoc.
* netdoc parse2: tests: Better error messages from error testsIan Jackson2025-09-291-2/+2
|
* netdoc parse2: tests: Use ==== for dividers in outputIan Jackson2025-09-291-1/+1
| | | | Otherwise it's easy to get confuseed by ---- dividers for Objects.
* netdoc parse2: poc: Make test functions throw anyhow::ResultIan Jackson2025-09-291-5/+4
| | | | For reasons, TestResult doesn't print error sources.
* netdoc parse2: Fix keyword parsing to hate nul, not digit zero (!)Ian Jackson2025-09-291-1/+1
|
* netdoc parse2: Use $P::Result throughoutIan Jackson2025-09-292-5/+6
| | | | | This is needed when using these macros in a namespace with a local redefinition of `Result`.
* netdoc parse2: Fix a compile_error! invocationIan Jackson2025-09-291-1/+1
| | | | I triggered this error and it didn't work right.
* Bump MSRV from 1.85 to 1.85.1Nick Mathewson2025-09-091-1/+1
| | | | Closes #2107
* Produce better error messages from bad field types (fmt)Ian Jackson2025-09-022-4/+16
| | | | Worsify formatting as demanded by rustfmt.
* Produce better error messages from bad field typesIan Jackson2025-09-022-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With this change, this diff > --- a/crates/tor-netdoc/src/parse2/poc/netstatus.rs > +++ b/crates/tor-netdoc/src/parse2/poc/netstatus.rs > @@ -24,5 +24,4 @@ pub enum NdaNetworkStatusVersion { > /// `params` value > #[derive(Clone, Debug, Default, Deftly)] > -#[derive_deftly(ItemValueParseable)] > #[non_exhaustive] > pub struct NdiParams { gives the errors below. So the first reported error points to the errant field, albeit with the slightly mendacious phrasing "this call". Previously there was only the 2nd message. Disagnosing that requires hunting through the document struct looking for fields of the right type, which can be seriously awkward when there are type aliases involved as there often are in tor-netdoc. > error[E0277]: the trait bound `parse2::poc::netstatus::NdiParams: parse2::traits::ItemValueParseable` is not satisfied > --> crates/tor-netdoc/src/parse2/poc/netstatus/flavoured.rs:27:10 > | > 27 | #[derive(Deftly, Clone, Debug)] > | ^^^^^^ the trait `parse2::traits::ItemValueParseable` is not implemented for `parse2::poc::netstatus::NdiParams` > ... > 55 | pub params: NdiParams, > | ------ required by a bound introduced by this call > | > = help: the following other types implement trait `parse2::traits::ItemValueParseable`: > () > (T0, T1) > (T0, T1, T2) > (T0, T1, T2, T3) > (T0, T1, T2, T3, T4) > (T0, T1, T2, T3, T4, T5) > (T0, T1, T2, T3, T4, T5, T6) > (T0, T1, T2, T3, T4, T5, T6, T7) > and 16 others > note: required by a bound in `parse2::multiplicity::ItemSetMethods::check_item_value_parseable` > --> crates/tor-netdoc/src/parse2/multiplicity.rs:109:59 > | > 109 | fn check_item_value_parseable(self) where Self::Each: ItemValueParseable {} > | ^^^^^^^^^^^^^^^^^^ required by this bound in `ItemSetMethods::check_item_value_parseable` > > error[E0277]: the trait bound `parse2::poc::netstatus::NdiParams: parse2::traits::ItemValueParseable` is not satisfied > --> crates/tor-netdoc/src/parse2/derive.rs:438:34 > | > 438 | let item = ItemValueParseable::from_unparsed(item)?; > | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `parse2::traits::ItemValueParseable` is not implemented for `parse2::poc::netstatus::NdiParams` > | > ::: crates/tor-netdoc/src/parse2/poc/netstatus/flavoured.rs:27:10 > | > 27 | #[derive(Deftly, Clone, Debug)] > | ------ in this derive macro expansion > | > = help: the following other types implement trait `parse2::traits::ItemValueParseable`: > () > (T0, T1) > (T0, T1, T2) > (T0, T1, T2, T3) > (T0, T1, T2, T3, T4) > (T0, T1, T2, T3, T4, T5) > (T0, T1, T2, T3, T4, T5, T6) > (T0, T1, T2, T3, T4, T5, T6, T7) > and 16 others > = note: this error originates in the macro `derive_deftly_template_NetdocParseable` which comes from the expansion of the derive macro `Deftly` (in Nightly builds, run with -Z macro-backtrace for more info)
* tor-netdoc: parse2: Bind a `selector` localIan Jackson2025-09-021-1/+2
| | | | We're going to reuse this.
* Update to derive-deftly 1.3.0Ian Jackson2025-09-021-1/+1
|
* tor-netdoc: parse2: derive: Remove an unneeded nested ${concat }Ian Jackson2025-09-021-1/+1
| | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3186#note_3249820
* tor-netdoc: parse2: Speak of non-structural *items* rather than fieldsIan Jackson2025-09-021-1/+1
|
* tor-netdoc: parse2: Explicitly define "structural item"Ian Jackson2025-09-021-0/+7
|
* tor-netdoc: parse2: Report unexpected subdoc multiplicity at the intro itemIan Jackson2025-09-022-3/+5
|
* tor-netdoc: multiplicity: Introduce can_accumulateIan Jackson2025-09-021-2/+20
| | | | | | We're going to use this to check that we can accept a sub-document before we parse it. That will make the error come out in the right place.
* tor-netdoc: parse2 tests: Add test case for flatteningIan Jackson2025-09-021-2/+42
|
* tor-netdoc: parse2 tests: Use sval in one place rather than open-codingIan Jackson2025-09-021-1/+1
|
* tor-netdoc: parse2: Provide flattening and NetdocParseableFieldsIan Jackson2025-09-024-8/+155
|
* tor-netdoc: parse2: Preparatory rework for flatteningIan Jackson2025-09-021-8/+10
| | | | | Change from two loops over fields and two ${when}, to one loop with ${select1}. There will be another arm in a moment.
* tor-netdoc: parse2: Specify `for struct` in one of the derivesIan Jackson2025-09-021-1/+1
| | | | None of these things support enums or unions.
* tor-netdoc: parse2: tests: Include the test doc in more error msgsIan Jackson2025-09-021-5/+6
|
* Remove semver.md filesNick Mathewson2025-08-281-6/+0
|
* Bump the minor version of every published crate except for `arti`.Nick Mathewson2025-08-281-13/+13
| | | | | | | | Per policy, we bump the minor version of every tor-*, arti-* crate on each release. We have updated our MSRV, so we're treating this as a breaking change for our non-(arti/tor)-prefixed crates too.
* Run "fixup-features"Nick Mathewson2025-08-271-2/+2
|
* Merge branch 'upgrade_deps' into 'main'Alexander Hansen Færøy2025-08-271-1/+1
|\ | | | | | | | | Upgrade various dependencies in preparation for next release See merge request tpo/core/arti!3188
| * Update phf dependency to 0.13.1Nick Mathewson2025-08-261-1/+1
| |
* | tor-netdoc: parse2: multiplicity: Remove now-obsolete trait itemsIan Jackson2025-08-261-12/+0
| |
* | tor-netdoc: parse2: Know that we always accumulate into Option<Field>Ian Jackson2025-08-262-2/+2
| |
* | tor-netdoc: parse2: Always accumulate into Option<Field> (fmt)Ian Jackson2025-08-261-1/+5
| |
* | tor-netdoc: parse2: Always accumulate into Option<Field>Ian Jackson2025-08-261-13/+22
| |
* | tor-netdoc: parse2: Break out F_EFFECTIVE_TYPEIan Jackson2025-08-261-7/+13
| | | | | | | | We're going to want to reuse this.