David Tolnay
b4d5c26f4e
Update to latest syn and quote
2016-10-08 15:36:02 -07:00
David Tolnay
6ccb6c9130
Clean up syn workarounds
2016-09-28 09:29:12 -07:00
David Tolnay
effa298871
Fix differences in the generated code
2016-09-27 09:56:35 -07:00
David Tolnay
7d09b1475c
Fix clippy lints in serde_codegen
2016-09-27 00:46:03 -07:00
David Tolnay
0c18c151e2
Revamp serde_codegen_internals error handling
2016-09-27 00:11:37 -07:00
David Tolnay
8e865f62c4
Fix conflicts with the __serde_state commit
2016-09-26 22:13:53 -07:00
David Tolnay
6cbf0d32da
Merge branch origin/master into origin/syn
...
Conflicts:
serde_codegen/src/ser.rs
2016-09-26 22:11:14 -07:00
Erick Tryzelaar
f47a50e996
Make serde state variable unique by naming it __serde_state
...
Closes #557
2016-09-26 21:44:30 -07:00
David Tolnay
1eca7766ba
Bump syn dependency
2016-09-24 09:54:10 -07:00
David Tolnay
c34baa1e5f
No more syntex for serde_derive
2016-09-11 19:55:13 -07:00
David Tolnay
2212bfbf2c
Result needs to be fully qualified
...
Without this:
```
error[E0244]: wrong number of type arguments
--> src/api/accounts.rs:19:10
|
19 | #[derive(Serialize, Deserialize, Debug)]
| ^^^^^^^^^^ expected 1 type arguments, found 2
```
2016-09-07 16:37:26 -07:00
Homu
1ff2053262
Auto merge of #536 - serde-rs:mutempty, r=oli-obk
...
Fix "variable does not need to be mutable" warning
Fixes #534 .
cc @EliDupree
2016-09-06 01:10:43 +09:00
David Tolnay
e03dedabe4
Use peekable iterator to check for nonzero serialized fields
2016-09-05 08:22:17 -07:00
David Tolnay
d1ce4d62c9
Change to expression so that syntex keeps the semicolon
2016-09-02 18:07:26 -07:00
David Tolnay
869ebd9e4e
Remove if !false { ... } from generated serialization code
2016-09-02 17:22:58 -07:00
David Tolnay
14446af537
Fix "variable does not need to be mutable" warning
2016-09-02 11:42:33 -07:00
Oliver Schneider
1c55f58093
Merge pull request #479 from serde-rs/nestser
...
Remove unnecessary nesting from generated impls
2016-08-04 09:08:59 +02:00
David Tolnay
69de46f9e0
Remove unnecessary nesting from generated Serialize implementations
2016-08-03 20:40:57 -07:00
David Tolnay
d0502b93ef
Fix clippy lint about looping over iter()
2016-08-03 19:32:51 -07:00
Oliver Schneider
42c41922ce
adjust tests for new interface
2016-07-15 12:59:30 +02:00
Oliver Schneider
16ba32dbe1
stateful map/seq serialization
2016-07-14 15:36:47 +02:00
Oliver Schneider
60938913b2
face -> palm
2016-07-13 19:18:01 +02:00
Oliver Schneider
26528fbbb4
silence lint about a: ref a patterns
2016-07-12 16:53:38 +02:00
Oliver Schneider
6adcaa55e5
json needs more info
2016-07-12 16:53:20 +02:00
Oliver Schneider
fb575225bc
simplify!
2016-07-12 16:16:48 +02:00
Oliver Schneider
3766633f4a
adjust codegen to work with the revamped map/seq serializer
2016-07-12 15:44:19 +02:00
David Tolnay
149c87d7c2
Record expansion info
2016-07-03 10:53:33 -07:00
David Tolnay
2d5a26dfc0
Rename serde_internals to serde_codegen_internals
2016-06-30 19:53:57 -07:00
David Tolnay
c6b6e2a5d9
Rename serde_item to serde_internals
2016-06-30 19:42:55 -07:00
David Tolnay
5c6a0e12e9
Factor attr parsing into serde_item crate
2016-06-19 20:15:49 -07:00
David Tolnay
ac69524258
Gather attrs at the beginning
2016-06-15 02:38:47 -07:00
David Tolnay
28589620f6
Error on duplicate attributes
2016-06-14 20:39:21 -07:00
David Tolnay
3119cc8857
Simplify implementation of #[serde(default=...)]
2016-06-09 23:21:42 -07:00
David Tolnay
578f34ecaf
Use "bound" attribute instead of "where"
2016-06-05 11:17:43 -07:00
David Tolnay
660ea7bd7b
Attribute for handwritten where clauses
2016-06-04 15:48:42 -07:00
David Tolnay
938f42faf6
Support (de)serialize_with in tuples
2016-05-19 10:53:38 -07:00
David Tolnay
f43c8a6267
Prefix type parameters and lifetimes with double underscore
2016-05-10 09:12:38 -07:00
David Tolnay
305fab7c16
fix(codegen): Support extern crate serde not in toplevel module
2016-04-25 09:58:01 -07:00
David Tolnay
fd3c15fb68
fix(codegen): Discard type defaults from impl generics
2016-04-19 10:28:43 -07:00
David Tolnay
886670134a
feat(codegen): Infer Default and Deserialize bounds correctly
2016-04-13 21:56:12 -07:00
Erick Tryzelaar
bc2324fba7
Merge branch 'feature/inhibit' of https://github.com/dtolnay/serde into dtolnay-feature/inhibit
2016-04-12 08:41:02 -07:00
Erick Tryzelaar
a84b6aaedd
Bump syntex/aster/quasi version
2016-04-10 19:54:54 -07:00
Anthony Ramine
c7c5b50f35
Silence unused_variables warning with empty enums
...
Deriving Serialize or Deserialize on Void-like enums triggered an
unused_variables warning.
2016-04-03 14:31:04 +02:00
David Tolnay
eaff73a541
Where clause for generic types only
2016-02-29 21:53:58 -08:00
David Tolnay
19ec8bbdb9
feat(codegen): Inhibit generic bounds if skip_serializing
...
The generated code for a struct like:
struct Test<A, B, C> {
a: X<A>
#[serde(skip_serializing)]
b: B
#[serde(serialize_with="...")]
c: C
}
Used to be:
impl<A, B, C> Serialize for Test<A, B, C>
where A: Serialize,
B: Serialize,
C: Serialize,
{ ... }
Now it is:
impl<A, B, C> Serialize for Test<A, B, C>
where X<A>: Serialize,
{ ... }
Both `skip_serializing` and `serialize_with` mean the type does not need to
implement `Serialize`.
2016-02-28 19:11:51 -08:00
Erick Tryzelaar
57433e1eaa
feat(codegen): Optimize deserializing fields from byte strings
2016-02-23 20:38:06 -08:00
Erick Tryzelaar
78cf29d1d1
feat(codegen): Switch attributes to using using paths not expressions
2016-02-21 15:28:25 -08:00
Erick Tryzelaar
c268eb2258
feat(codegen): Remove #[serde(skip_serializing_if_{none,empty})]
...
`#[serde(skip_serializing_if="...")]` can replace this functionality.
2016-02-18 19:31:43 -08:00
Erick Tryzelaar
001cb7ab01
feat(codegen): Add #[serde(serialize_with="...")]
...
This allows a field to be serialized with an expression instead
of the default serializer. This simplifies serializing a struct
or enum that contains an external type that doesn't implement
`serde::Serialize`. This expression is passed a variable
`serializer` that needs to be used to serialize the expression.
2016-02-18 19:13:55 -08:00
Erick Tryzelaar
de89f95f31
feat(codegen): Add support for #![serde(skip_serialize_if="$expr")]
...
This allows end users to use an arbitrary expression to decide whether
or not to serialize some field. This expression has access to all the
fields in the struct, but none of the internal state of the Serialize
implementation. For structs, serde implements this by creating a
temporary trait and implementing the struct for it. For struct variants,
the fields are copied by reference into a temporary struct first
before implementing the temporary trait.
This also fixes a bug where the serde_codegen wasn't making calls to
Serializer::serialize_{tuple,struct}_variant{,_elt}.
2016-02-18 19:13:55 -08:00