| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
|
| |
|
|
|
|
|
|
| |
I feel that before merging all this, I ought at least to demonstrate
that it can be applied to at least one real type!
We can unconditionally `#[derive(Deftly)]`. That is simpler, and
harmless if no actual deftly derives are applied.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The test case documents are often not in canonical form. We don't
want to change them to be in canonical form because we want to test
parsing edge cases. So, we provide a mangling scheme with in-document
notes, and annotate all the documents.
Apply suitable annotations to all the documents.
Test that the encoded forms are as expected.
This reverts commit 05e7b8b60061a7e8a8d004a822cc213d3ea22d47.
|
| |
|
|
|
|
|
| |
Make this whole module conditional on the encode feature.
Apply the derives. Provide the necessary manual implementations for
the types where we use `with`.
|
| |
|
|
|
| |
Signature encoding is not yet supported. We need to consider how this
will work.
|
| |
|
|
|
|
|
|
| |
We want to recognise `#[deftly(netdoc(debug))]` because otherwise we
have to make lots of these attributes conditional.
So, implement it for *all* the derives, providing a nugatory debug
statement.
|
| | |
|
| |
|
|
| |
What is being written to here is StderrLock, not a String.
|
| |
|
|
|
|
| |
While testing I discovered that the `#[deftly(netdoc(debug))]`
feature (which dumps parsing progress to stderr) didn't compile if the
derive was invoked from elsewhere.
|
| |
|
|
| |
This makes it possible to use $F_KEYWORD_REPORT within another concat.
|
| |
|
|
|
|
| |
Code motion fromk NetdocParseableFields to NetdocFieldsDeriveCommon.
This uses the derive-deftly imported doc comment feature.
|
| |
|
|
| |
Code motion from NetdocParseable to NetdocEntireDeriveCommon.
|
| |
|
|
| |
Code motion from ItemValueParseable to NetdocItemDeriveCommon.
|
| |
|
|
|
|
|
|
| |
Code motion from NetdocParseable to NetdocEntireDeriveCommon.
Code motion from NetdocParseableFields to NetdocFieldsDeriveCommon.
Again, the encoder wants exactly this logic.
|
| |
|
|
|
|
|
| |
Code motion from NetdocSomeItemsParseableCommon to
NetdocSomeItemsDeriveCommon.
Encoding wants exactly the same logic.
|
| |
|
|
|
|
|
| |
There is nothing actually in any of these yet. But it is most
convenient to lay out the structure now.
We'll move code into these modules in forthcoming commits.
|
| |
|
|
|
|
|
|
| |
This is only used for structs which contain items, not item value
structs.
We need a name that reflects this, especially as we are going to add a
bunch more modules full of common macro elements.
|
| | |
|
| |
|
|
| |
Now we use all the imports. We're still adding much code, though.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This is a bit subtle. Ignored is used where we want to see and accept
a value (for example, an Item or an Object), but we don't want to emit
it.
Update the docs and implement the various traits. We need an
uninhabited helper type which implements ItemValueEncodable and
ItemObjectEncodable but *not* ItemArgument. That prevents the use of
Ignored for an argument, which would be wrong because what would we
emit to keep the argument parser in step?
|
| |
|
|
|
|
|
| |
Per the type-level docs for NotPresent: it's is a placeholder type
mostly used when the document variety doesn't have this field.
When encoding it, we emit nothing.
|
| |
|
|
|
|
|
|
| |
This is quite like the one for parse2, but separate for Reasons.
Also add a bit of explanation to parse2's multiplicity.rs, about why
there are all these different FooSetMethods traits, which the encoder
doesn't need.
|
| |
|
|
| |
And implement them for Void and tuples, as applicable.
|
| |
|
|
|
| |
Adding these all at the beginning helped me with churn in this branch.
The allow(unused) will go away again shortly.
|
| |
|
|
|
|
|
| |
When we implemented this we documented it for ItemValueParseable but
forgot to do so for NetdocParseable.
Add some xrefs to the traits to try to stop similar mistakes.
|
| |
|
|
|
|
|
|
|
| |
Fixes part of #2193.
(Edits from nickm: I selected the cases here that I could verify
were correct from immediate context.)
Edited-by: Nick Mathewson <[email protected]>
|
| |
|
|
|
|
|
|
|
| |
This commit implements directory authority certificates using the
`parse2` approaches.
For now, those are in a module `doc::authcert::tmp`, with the eventual
goal of moving it into its super module after removing/deprecating the
legacy types.
|
| | |
|
| |\
| |
| |
| |
| | |
Make Protocols type inherently interned; add notes about usage.
See merge request tpo/core/arti!3524
|
| | |
| |
| |
| | |
(It's now done in tor_protover.)
|
| | | |
|
| | | |
|
| |\ \
| | |
| | |
| | |
| | | |
tor-netdoc: Store n_authorities in usize
See merge request tpo/core/arti!3522
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
Previously, this value was stored in a u16. However, because this
number is usually always derived from some sort of list type, such as
`Vec`, it makes more sense to use usize for this, as it avoid
unnecessary casting and error checking.
|
| | | |
| | |
| | |
| | |
| | | |
This provides a way to explicitly consume the encoder and finish the
item, without use of mem::drop.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The new derive is going to want this. So it would need to be at least
`#[doc(hidden)]`. But it makes sense to expose it.
But, it had a weird signature. Make its signature like that of `.arg_empty()`.
(Note that an ItemEncoder contains just a `&mut NetdocEncoder`.)
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
These cannot be encoded. So that is logically incoherent.
(Perhaps String ought not to be NormalItemArgument, but let's not
tackle that now.)
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
talking about the "keyword argument syntax" makes it sound a bit like
its' the *keyword* that is wrong.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
NormalItemArgument is for types where we use the Display as the netdoc
argument formatter. But what if gives the empty string?
Previously we would allow `add_arg` to handle the error. That would
record it in the NetdocEncoder. That's kind of OK, but it will
prevent the caller from aborting early (and from elaborating the error).
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
This code sometimes expands to `let item = item;`. That's OK.
In derive-deftly 1.5.x the two `item` wrongly had different hygiene
span so the warning didn't trigger.
|
| | |/
|/|
| |
| |
| |
| |
| |
| |
| | |
This has:
* Fixes to hygiene spans from the new modules feature, needed for
my WIP netdoc encoder derive.
* A substantially richer `${error }` construct.
|
| | |
| |
| |
| |
| | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3502/diffs?commit_id=f9a6d90ec6d5abf2958534d2c100c84f325e3634#2525aaf11b44162850101813478c4734160e11fa_920_919
|
| | |
| |
| |
| |
| |
| | |
The error is not really discarded (which would seem to mean ignoring
it). The erorr *value* is discarded and is replaced with a less
informative error value.
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The path in `with` must always be a module, not a function, because we
need to use it for encoding too.
In the case of `rest`, it's probably sensible to require a different
function name, given that the semantics are subtly different to those
of `rest` without `with`, since the latter can only get a single word
but with `rest` you get the whole line.
|
| | | |
|