Commit Graph

1295 Commits

Author SHA1 Message Date
David Tolnay
2d81cbd113 Move raw_value test imports to block of imports 2022-01-22 15:30:46 -08:00
David Tolnay
cbb0342ba0 Merge pull request #851 from serde-rs/rawkey
Support deserializing map key as &RawValue
2022-01-22 15:30:38 -08:00
David Tolnay
e5cdfcc7ee Support deserializing map key as &RawValue 2022-01-22 15:19:44 -08:00
David Tolnay
6a3fb68979 Add test of deserializing a &RawValue in map key position
Currently fails with:

    ---- test_raw_value_in_map_key stdout ----
    thread 'test_borrowed_raw_value' panicked at 'called `Result::unwrap()`
    on an `Err` value: Error("invalid type: newtype struct, expected any
    valid JSON value", line: 1, column: 2)', tests/test.rs:2230:52
2022-01-22 15:19:28 -08:00
David Tolnay
d8512af496 Release 1.0.77 v1.0.77 2022-01-22 12:52:01 -08:00
David Tolnay
5fe9bdd356 Improve error on compiling with neither std nor alloc
Before:

    error: expected item, found `"serde_json requires that either `std` (default) or `alloc` feature is enabled"`
     --> src/features_check/error.rs:1:1
      |
    1 | "serde_json requires that either `std` (default) or `alloc` feature is enabled"
      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected item

    error[E0407]: method `visit_string` is not a member of trait `Visitor`
       --> src/raw.rs:455:5
        |
    455 |       fn visit_string<E>(self, s: String) -> Result<Self::Value, E>
        |       ^  ------------ help: there is an associated function with a similar name: `visit_str`
        |  _____|
        | |
    456 | |     where
    457 | |         E: de::Error,
    458 | |     {
    459 | |         Ok(RawValue::from_owned(s.into_boxed_str()))
    460 | |     }
        | |_____^ not a member of trait `Visitor`

    error[E0046]: not all trait items implemented, missing: `collect_str`
        --> src/ser.rs:1376:1
         |
    1376 | impl<'a, W: io::Write, F: Formatter> ser::Serializer for RawValueStrEmitter<'a, W, F> {
         | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `collect_str` in implementation
         |
         = help: implement the missing item: `fn collect_str<T>(self, _: &T) -> core::result::Result<<Self as serde::Serializer>::Ok, <Self as serde::Serializer>::Error> where T: Display { todo!() }`

    error[E0046]: not all trait items implemented, missing: `collect_str`
       --> src/value/ser.rs:864:1
        |
    864 | impl serde::ser::Serializer for RawValueEmitter {
        | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `collect_str` in implementation
        |
        = help: implement the missing item: `fn collect_str<T>(self, _: &T) -> core::result::Result<<Self as serde::Serializer>::Ok, <Self as serde::Serializer>::Error> where T: Display { todo!() }`

    error[E0599]: no method named `visit_string` found for struct `BoxedFromString` in the current scope
       --> src/raw.rs:452:14
        |
    428 | pub struct BoxedFromString;
        | --------------------------- method `visit_string` not found for this
    ...
    452 |         self.visit_string(s.to_owned())
        |              ^^^^^^^^^^^^ method not found in `BoxedFromString`

After:

    error: expected item, found `"serde_json requires that either `std` (default) or `alloc` feature is enabled"`
     --> src/features_check/error.rs:1:1
      |
    1 | "serde_json requires that either `std` (default) or `alloc` feature is enabled"
      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected item
2022-01-22 12:45:09 -08:00
David Tolnay
4c15649318 Include integration tests in published package
Closes #578.
2022-01-22 12:07:29 -08:00
David Tolnay
71257c5667 Add discord invite links 2022-01-22 11:47:14 -08:00
David Tolnay
19e9b749ce Release 1.0.76 v1.0.76 2022-01-22 05:07:46 -08:00
David Tolnay
8ecd48308a Fix imports on features +alloc +raw_value -std
Closes #850.
2022-01-22 05:07:00 -08:00
David Tolnay
a22b686f49 Release 1.0.75 v1.0.75 2022-01-15 16:53:20 -08:00
David Tolnay
36c43bfed5 Merge pull request #848 from serde-rs/num
Deserialize small numbers as integers in arbitrary_precision
2022-01-15 16:52:34 -08:00
David Tolnay
d541381455 Deserialize small numbers as integers in arbitrary_precision 2022-01-15 16:44:37 -08:00
David Tolnay
0ca5a69d73 Add regression test for issue 845 2022-01-15 16:40:22 -08:00
David Tolnay
66919777d0 Disable buggy iter_not_returning_iterator lint
https://github.com/rust-lang/rust-clippy/issues/8285

    error: this method is named `iter` but its return type does not implement `Iterator`
       --> src/map.rs:238:5
        |
    238 |     pub fn iter(&self) -> Iter {
        |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: `-D clippy::iter-not-returning-iterator` implied by `-D clippy::pedantic`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_not_returning_iterator

    error: this method is named `iter_mut` but its return type does not implement `Iterator`
       --> src/map.rs:246:5
        |
    246 |     pub fn iter_mut(&mut self) -> IterMut {
        |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_not_returning_iterator
2022-01-14 18:59:32 -08:00
David Tolnay
aebe84cb09 Raise toolchain version for preserve_order to rust 1.46
Our indexmap dependency needs at least this version.

    error[E0658]: use of unstable library feature 'vec_drain_as_slice': recently added
        --> github.com-1ecc6299db9ec823/indexmap-1.8.0/src/map.rs:1182:30
         |
    1182 |         let iter = self.iter.as_slice().iter().map(Bucket::refs);
         |                              ^^^^^^^^

    error[E0658]: use of unstable library feature 'vec_drain_as_slice': recently added
       --> github.com-1ecc6299db9ec823/indexmap-1.8.0/src/set.rs:842:30
        |
    842 |         let iter = self.iter.as_slice().iter().map(Bucket::key_ref);
        |                              ^^^^^^^^
2022-01-07 18:37:31 -08:00
David Tolnay
3f459308f5 Set miriflags once for whole miri job 2022-01-03 12:01:56 -08:00
David Tolnay
c79d9ad2e1 Run miri also with some features enabled 2022-01-03 12:00:17 -08:00
David Tolnay
58d40de6ed Release 1.0.74 v1.0.74 2022-01-01 12:13:38 -08:00
David Tolnay
ef7794f87f Detect warnings in CI 2022-01-01 11:52:32 -08:00
David Tolnay
6de3d398ef Merge pull request 841 from EFanZh/unsized-value-to-raw-value 2022-01-01 11:41:44 -08:00
EFanZh
012f567a38 Allow creating RawValues from references to unsized values 2022-01-01 19:03:16 +08:00
David Tolnay
18a88dad66 Avoid evaluating $c more than once in overflow macro 2021-12-30 21:43:05 -08:00
David Tolnay
5d2cbcdd4b Eliminate lib module 2021-12-30 20:52:08 -08:00
David Tolnay
31198f589c Switch to $(,)? in tri macro
The $(...)? operation is supported since Rust 1.32.
2021-12-30 19:50:01 -08:00
David Tolnay
51df12e0cd Unconditionally import from alloc
Previously serde_json supported versions of rustc older than 1.36 which
didn't have a stable alloc crate. These days ever toolchain version we
support has alloc.
2021-12-30 19:44:15 -08:00
David Tolnay
95f67a0939 Ignore return_self_not_must_use clippy lint
error: missing `#[must_use]` attribute on a method returning `Self`
       --> src/map.rs:595:5
        |
    595 | /     pub fn and_modify<F>(self, f: F) -> Self
    596 | |     where
    597 | |         F: FnOnce(&mut Value),
    598 | |     {
    ...   |
    605 | |         }
    606 | |     }
        | |_____^
        |
        = note: `-D clippy::return-self-not-must-use` implied by `-D clippy::all`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#return_self_not_must_use

    error: missing `#[must_use]` attribute on a method returning `Self`
       --> src/value/mod.rs:836:5
        |
    836 | /     pub fn take(&mut self) -> Value {
    837 | |         mem::replace(self, Value::Null)
    838 | |     }
        | |_____^
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#return_self_not_must_use
2021-12-17 18:22:32 -08:00
David Tolnay
296f718e18 Release 1.0.73 v1.0.73 2021-12-13 14:19:58 -08:00
David Tolnay
48455de674 Update to itoa 1.0 2021-12-12 10:53:01 -08:00
David Tolnay
b66b0eb322 Track raw pointers in miri CI run 2021-12-11 15:05:19 -08:00
David Tolnay
52eec5e2ee Add a miri test job in CI 2021-12-11 15:05:15 -08:00
David Tolnay
aaaf125f0b Disable TcpStream test on miri
error: unsupported operation: can't call foreign function: getaddrinfo
        --> nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/net.rs:191:21
         |
    191  |             cvt_gai(c::getaddrinfo(c_host.as_ptr(), ptr::null(), &hints, &mut res))
         |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't call foreign function: getaddrinfo
         |
         = help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support
2021-12-11 15:01:07 -08:00
David Tolnay
f0774c482a Raise required rustc from 1.31 to 1.36 2021-12-11 15:00:37 -08:00
David Tolnay
c3eddcdf40 Collect imports to top of test suite 2021-12-11 14:53:18 -08:00
David Tolnay
a28529ddc9 Skip ui test when running in miri 2021-12-11 14:50:52 -08:00
David Tolnay
7db1ea907d Ignore needless_late_init Clippy lint
error: unneeded late initalization
       --> tests/../src/lexical/float.rs:173:9
        |
    173 |         let exp: u64;
        |         ^^^^^^^^^^^^^
        |
        = note: `-D clippy::needless-late-init` implied by `-D clippy::all`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init
    help: declare `exp` here
        |
    174 |         let exp: u64 = if (fp.exp == F::DENORMAL_EXPONENT) && (fp.mant & F::HIDDEN_BIT_MASK.as_u64()) == 0 {
        |         ++++++++++++++
    help: remove the assignments from the branches
        |
    175 ~             0
    176 |         } else {
    177 ~             (fp.exp + F::EXPONENT_BIAS) as u64
        |
    help: add a semicolon after the `if` expression
        |
    178 |         };
        |          +
2021-12-07 18:41:06 -08:00
David Tolnay
fc0ca07b10 Merge pull request #831 from serde-rs/from_u32
Skip error codepath on hex escape outside the surrogate range
2021-11-25 15:44:26 -08:00
David Tolnay
4a0924cbd1 Skip error codepath on hex escape outside the surrogate range 2021-11-25 15:30:50 -08:00
David Tolnay
76e376c8d1 Release 1.0.72 v1.0.72 2021-11-24 21:29:26 -08:00
David Tolnay
77915ebaa6 Merge pull request #829 from serde-rs/surrogate
Touch up PR 828
2021-11-24 21:27:17 -08:00
David Tolnay
265fb7ee40 Move discard of expected byte immediately after peek 2021-11-24 21:18:52 -08:00
David Tolnay
142207623a Rearrange the early return on lone or encoded surrogate 2021-11-24 21:18:52 -08:00
David Tolnay
311f185d8e Use binary mask to line up visually with the bits being |'d in 2021-11-24 21:18:52 -08:00
David Tolnay
11d3464f1c Extract common logic of surrogate encode 2021-11-24 21:18:52 -08:00
David Tolnay
cb4a2517b2 Document why the parse_escape recursion is not dangerous 2021-11-24 21:18:52 -08:00
David Tolnay
7911e704a0 Tail recurse on parse_escape 2021-11-24 21:18:52 -08:00
David Tolnay
48dad22b3f Collapse surrogate encode into extend_from_slice call 2021-11-24 21:18:51 -08:00
David Tolnay
683832a343 Touch up doc changes from PR 828 2021-11-24 21:18:51 -08:00
David Tolnay
691466c02e Merge pull request #828 from lucacasonato/lone_surrogate
Deserialize lone surrogates into byte bufs
2021-11-24 21:18:39 -08:00
Luca Casonato
07c740c2ff fix parsing escape sequences after lone surrogates 2021-11-24 23:48:42 +01:00