David Tolnay
4f59cd217a
Delete support for compilers without core::time
2023-07-30 21:10:49 -07:00
David Tolnay
27c8b2d66a
Delete support for compilers without dynamically sized Rc construction
2023-07-30 20:48:27 -07:00
David Tolnay
89976c2712
Delete support for compilers without PathBuf::into_boxed_path
2023-07-30 20:48:27 -07:00
David Tolnay
c91737fef1
Delete support for compilers without CString::into_boxed_c_str
2023-07-30 20:48:27 -07:00
David Tolnay
a100719bc6
Delete support for compilers without core::cmp::Reverse
2023-07-30 20:48:27 -07:00
David Tolnay
9a0e149225
Sort version checks in build.rs
2023-07-30 20:48:27 -07:00
David Tolnay
9350927903
Delete support for compilers without std::collections::Bound
2023-07-30 20:48:27 -07:00
David Tolnay
677c13a4ec
Merge pull request #2544 from dtolnay/testprecompiled
...
Add CI job to run test suite against precompiled serde_derive
2023-07-30 18:58:13 -07:00
David Tolnay
ee8e1ee7ff
Add CI job to run test suite against precompiled serde_derive
2023-07-30 18:50:16 -07:00
David Tolnay
f969080b9f
Pull in syn fix that makes serde test suite independent of "full" feature
...
See https://github.com/dtolnay/syn/pull/1491 .
2023-07-30 17:39:44 -07:00
David Tolnay
c2b16bfbb0
Release 1.0.179
2023-07-30 17:20:10 -07:00
David Tolnay
e7df53701c
Resolve doc_markdown clippy lint from PR 2448
...
warning: item in documentation is missing backticks
--> test_suite/tests/test_annotations.rs:2870:25
|
2870 | /// Reaches crate::private::de::content::VariantDeserializer::tuple_variant
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
= note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic`
help: try
|
2870 | /// Reaches `crate::private::de::content::VariantDeserializer::tuple_variant`
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning: item in documentation is missing backticks
--> test_suite/tests/test_annotations.rs:2871:17
|
2871 | /// Content::Seq case
| ^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
2871 | /// `Content::Seq` case
| ~~~~~~~~~~~~~~
warning: item in documentation is missing backticks
--> test_suite/tests/test_annotations.rs:2872:21
|
2872 | /// via FlatMapDeserializer::deserialize_enum
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
2872 | /// via `FlatMapDeserializer::deserialize_enum`
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning: item in documentation is missing backticks
--> test_suite/tests/test_annotations.rs:2894:25
|
2894 | /// Reaches crate::private::de::content::VariantDeserializer::struct_variant
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
2894 | /// Reaches `crate::private::de::content::VariantDeserializer::struct_variant`
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning: item in documentation is missing backticks
--> test_suite/tests/test_annotations.rs:2895:17
|
2895 | /// Content::Seq case
| ^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
2895 | /// `Content::Seq` case
| ~~~~~~~~~~~~~~
warning: item in documentation is missing backticks
--> test_suite/tests/test_annotations.rs:2896:21
|
2896 | /// via FlatMapDeserializer::deserialize_enum
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
2896 | /// via `FlatMapDeserializer::deserialize_enum`
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning: item in documentation is missing backticks
--> test_suite/tests/test_annotations.rs:2921:25
|
2921 | /// Reaches crate::private::de::content::VariantDeserializer::struct_variant
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
2921 | /// Reaches `crate::private::de::content::VariantDeserializer::struct_variant`
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning: item in documentation is missing backticks
--> test_suite/tests/test_annotations.rs:2922:17
|
2922 | /// Content::Map case
| ^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
2922 | /// `Content::Map` case
| ~~~~~~~~~~~~~~
warning: item in documentation is missing backticks
--> test_suite/tests/test_annotations.rs:2923:21
|
2923 | /// via FlatMapDeserializer::deserialize_enum
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
2923 | /// via `FlatMapDeserializer::deserialize_enum`
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2023-07-30 16:15:29 -07:00
David Tolnay
02c34e490b
Resolve redundant_field_names clippy lint from PR 2448
...
warning: redundant field names in struct initialization
--> serde/src/private/ser.rs:1278:13
|
1278 | map: map,
| ^^^^^^^^ help: replace it with: `map`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
= note: `-W clippy::redundant-field-names` implied by `-W clippy::all`
2023-07-30 16:07:27 -07:00
David Tolnay
427c839b3d
Merge pull request #2448 from Mingun/ser-flatten-enums
...
Implement serialization of tuple variants of flatten enums
2023-07-30 16:02:37 -07:00
David Tolnay
48aa054f53
Release 1.0.178
2023-07-28 16:09:39 -07:00
David Tolnay
3616860203
Delete broken symlink from precompiled derive sources
2023-07-28 16:09:22 -07:00
David Tolnay
861b0dfea2
Consistently list StdError under 'Re-exports' heading of rustdoc
2023-07-28 16:06:49 -07:00
David Tolnay
8b3d71ae2d
Merge pull request #2541 from dtolnay/de-core-error
...
Fix `serde::de::StdError` in no-std unstable build
2023-07-28 16:05:14 -07:00
David Tolnay
ff5442cd9e
Add no-std unstable build in CI
2023-07-28 16:00:07 -07:00
David Tolnay
92d686f9a5
Fix serde::de::StdError in no-std unstable build
2023-07-28 15:58:57 -07:00
David Tolnay
7b09cccd77
Merge pull request #2539 from dtolnay/questionmark
...
Replace `try!` with `?` in serde_derive
2023-07-27 19:20:15 -07:00
David Tolnay
6f1f38d046
Replace 'try!' with '?' in serde_derive
2023-07-27 19:16:11 -07:00
David Tolnay
db8f06467b
Eliminate workaround for pre-1.17 rustc in serde_derive
...
The oldest compiler supported by serde_derive by this point is 1.56.
2023-07-27 19:05:57 -07:00
David Tolnay
91ec1c290f
Enforce question mark not used in serde crate yet
...
Question mark regresses compile time by 6.5–7.5%.
2023-07-27 19:02:11 -07:00
David Tolnay
0676673ca5
Release 1.0.177
2023-07-27 10:51:22 -07:00
David Tolnay
7a4335d664
Merge pull request #2536 from jplatte/jplatte/error-span
...
Update error span for attribute / data kind mismatches
2023-07-27 10:50:26 -07:00
David Tolnay
74fe70855f
Ignore return_self_not_must_use pedantic clippy lint
...
warning: missing `#[must_use]` attribute on a method returning `Self`
--> serde_derive_internals/src/attr.rs:204:5
|
204 | / pub fn or(self, other_rules: Self) -> Self {
205 | | Self {
206 | | serialize: self.serialize.or(other_rules.serialize),
207 | | deserialize: self.deserialize.or(other_rules.deserialize),
208 | | }
209 | | }
| |_____^
|
= help: consider adding the `#[must_use]` attribute to the method or directly to the `Self` type
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#return_self_not_must_use
= note: `-W clippy::return-self-not-must-use` implied by `-W clippy::pedantic`
warning: missing `#[must_use]` attribute on a method returning `Self`
--> serde_derive_internals/src/case.rs:112:5
|
112 | / pub fn or(self, rule_b: Self) -> Self {
113 | | match self {
114 | | None => rule_b,
115 | | _ => self,
116 | | }
117 | | }
| |_____^
|
= help: consider adding the `#[must_use]` attribute to the method or directly to the `Self` type
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#return_self_not_must_use
2023-07-27 00:51:57 -07:00
David Tolnay
e74925bc43
Merge pull request #1695 from jplatte/rename_all_fields
...
Add #[serde(rename_all_fields = "foo")] attribute
2023-07-27 00:45:45 -07:00
David Tolnay
ad94aed753
Merge pull request #2535 from dtolnay/baretrait
...
Restore bare_trait_objects lint within serde_derive code
2023-07-26 14:26:02 -07:00
David Tolnay
30db83fc44
Restore bare_trait_objects lint within serde_derive code
2023-07-26 14:18:25 -07:00
David Tolnay
b0f7b00e1f
Resolve manual_string_new pedantic clippy lint
...
warning: empty String is being created manually
--> test_suite/tests/test_annotations.rs:2280:29
|
2280 | let data = Data::C { t: "".to_string() };
| ^^^^^^^^^^^^^^ help: consider using: `String::new()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_string_new
= note: `-W clippy::manual-string-new` implied by `-W clippy::pedantic`
2023-07-26 13:46:28 -07:00
David Tolnay
7255e192d8
Delete unused statement from PR 2266 test
2023-07-26 13:45:49 -07:00
David Tolnay
2102e1aa42
Format PR 2266 tests with rustfmt
2023-07-26 13:41:56 -07:00
David Tolnay
85d5c1fd38
Release 1.0.176
2023-07-26 13:37:44 -07:00
David Tolnay
b789286bc3
Merge pull request #2266 from flisky/master
...
fix: don't check skipped variant with internal tag
2023-07-26 13:36:33 -07:00
David Tolnay
a6a8a334f7
Add CI on macOS for the non-precompiled codepath
2023-07-26 01:03:20 -07:00
David Tolnay
78a11a27b6
Skip an extra trip through filesystem on the critical path
2023-07-26 00:58:34 -07:00
David Tolnay
d2d7bad04a
Improve error message on missing serde_derive exe
2023-07-26 00:52:09 -07:00
David Tolnay
b978854258
Eliminate parse_macro_input conflict in precompiled mode
2023-07-26 00:44:55 -07:00
David Tolnay
0fb672a1ef
Eliminate #[macro_use] from serde_derive
2023-07-25 23:23:24 -07:00
David Tolnay
dd9913675d
Ungroup imports
2023-07-25 23:06:34 -07:00
David Tolnay
11677ad926
Merge pull request #2533 from dtolnay/test
...
Move serde_test out to serde-rs/test
2023-07-25 22:52:36 -07:00
David Tolnay
25a53f10db
Move serde_test out to serde-rs/test
2023-07-25 22:48:39 -07:00
David Tolnay
26e2ef001c
Delete deprecated AsciiExt extension trait import
...
This has been superseded by inherent methods since Rust 1.26.
2023-07-25 21:07:33 -07:00
David Tolnay
30f79b3b2e
Eliminate 2015-style module system imports from serde_derive
2023-07-25 20:56:19 -07:00
David Tolnay
89f84c2915
Merge pull request #2532 from dtolnay/macrouse
...
Delete unused serde_derive #[macro_use]
2023-07-25 18:55:14 -07:00
David Tolnay
6882285be0
Move extern crate proc_macro into each possible lib.rs
...
This makes it slightly more convenient to use the following as a
Reindeer fixup for those that prefer to build from source:
extra_mapped_srcs = { "src/lib_from_source.rs" = "src/lib.rs" }
[platform_fixups.'cfg(all(target_arch = "x86_64", target_os = "linux", target_env = "gnu"))']
extra_deps = [":proc-macro2", ":quote", ":syn"]
as opposed to checking in a whole new file containing the `extern crate
proc_macro` + `include!("lib_from_source.rs")`.
2023-07-25 18:54:41 -07:00
David Tolnay
3260bc5896
Delete unused serde_derive #[macro_use]
...
In old versions of rustc (1.15 through 1.29) it would cause a warning if
this #[macro_use] was not present.
warning: proc macro crates and `#[no_link]` crates have no effect without `#[macro_use]`
--> serde/src/lib.rs:340:1
|
340 | extern crate serde_derive;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
These days serde_derive requires a newer compiler than that, so the
bogus warning would never occur.
2023-07-25 18:47:52 -07:00
David Tolnay
6140b6f527
Release 1.0.175
2023-07-23 20:07:32 -07:00
David Tolnay
4cabc9f293
Merge pull request #2527 from ankane/license-files
...
Include license files in serde_derive crate
2023-07-23 20:04:18 -07:00
David Tolnay
27414c90a8
Merge pull request #2522 from serde-rs/leak
...
Leak all memory allocated during macro expansion
2023-07-22 08:37:52 -07:00
David Tolnay
50e2f4b213
Leak all memory allocated during macro expansion
2023-07-22 08:32:18 -07:00
David Tolnay
22be673beb
Release 1.0.174
2023-07-20 22:20:37 -07:00
David Tolnay
166c89fabf
Opt in to generate-link-to-definition when building on docs.rs
2023-07-20 22:19:03 -07:00
David Tolnay
6e0b13eedb
Release 1.0.173
2023-07-19 16:34:13 -07:00
David Tolnay
7e8f978ca9
Handle $crate special case
2023-07-19 16:32:59 -07:00
David Tolnay
6c0e838a7c
Always consider empty output to be unsuccessful
2023-07-19 16:13:02 -07:00
David Tolnay
d3da41927a
Enable full expression parsing for precompiled serde_derive
2023-07-19 16:01:18 -07:00
David Tolnay
425a4b7a74
Check precompiled subprocess exit status
2023-07-19 16:00:37 -07:00
David Tolnay
63c65ef742
Release 1.0.172
2023-07-19 14:13:56 -07:00
David Tolnay
e838b0bd81
Release 1.0.172-alpha.0
2023-07-19 14:00:50 -07:00
David Tolnay
041e99c78a
Implement fallback to compiling serde_derive from source
2023-07-19 13:53:49 -07:00
David Tolnay
07dcc4f7fe
Remove unneeded 'include' Cargo.toml entries
2023-07-19 13:44:55 -07:00
David Tolnay
b88052d875
Rearrange precompiled directory
2023-07-19 13:24:36 -07:00
David Tolnay
a28292764c
Publish precompiled deserialize_in_place
2023-07-19 12:29:30 -07:00
David Tolnay
2027088741
Support precompiled deserialize_in_place
2023-07-19 12:27:37 -07:00
David Tolnay
e2d8589976
Publish span-related fixes
2023-07-19 09:41:11 -07:00
David Tolnay
c8a9f99d14
Preserve Group span better on compilers without Span::join
2023-07-19 09:39:11 -07:00
David Tolnay
645d04012d
Fix off by one span counter, 0 is used for call_site()
2023-07-19 09:26:56 -07:00
David Tolnay
100ddada2f
Suppress dead_code on fields only accessed by deserialize_in_place
...
error: field `option` is never read
--> test_suite/tests/test_gen.rs:666:9
|
665 | struct ImplicitlyBorrowedOption<'a> {
| ------------------------ field in this struct
666 | option: std::option::Option<&'a str>,
| ^^^^^^
|
note: the lint level is defined here
--> test_suite/tests/test_gen.rs:5:9
|
5 | #![deny(warnings)]
| ^^^^^^^^
= note: `#[deny(dead_code)]` implied by `#[deny(warnings)]`
error: fields `ty` and `id` are never read
--> test_suite/tests/test_gen.rs:696:9
|
695 | struct RelObject<'a> {
| --------- fields in this struct
696 | ty: &'a str,
| ^^
697 | id: String,
| ^^
error: field `field` is never read
--> test_suite/tests/test_gen.rs:740:17
|
739 | struct MacroRules<'a> {
| ---------- field in this struct
740 | field: $field,
| ^^^^^
...
745 | deriving!(&'a str);
| ------------------ in this macro invocation
|
= note: this error originates in the macro `deriving` (in Nightly builds, run with -Z macro-backtrace for more info)
error: field `f` is never read
--> test_suite/tests/test_gen.rs:756:9
|
754 | struct BorrowLifetimeInsideMacro<'a> {
| ------------------------- field in this struct
755 | #[serde(borrow = "'a")]
756 | f: mac!(Cow<'a, str>),
| ^
warning: fields `question` and `answer` are never read
--> test_suite/tests/test_annotations.rs:2969:9
|
2968 | struct Struct {
| ------ fields in this struct
2969 | question: String,
| ^^^^^^^^
2970 | answer: u32,
| ^^^^^^
|
= note: `#[warn(dead_code)]` on by default
2023-07-19 09:12:35 -07:00
David Tolnay
2ef1cd4b35
Import macros exclusively through serde_derive in test suite
...
This makes it easier to execute tests against the precompiled serde_derive.
2023-07-19 09:08:05 -07:00
David Tolnay
be9c3fd69d
Publish raw string fix
2023-07-18 18:42:54 -07:00
David Tolnay
ef522e1d16
Add a reminder about trim-paths
2023-07-18 18:39:40 -07:00
David Tolnay
1ddb6c2fdb
Fix handling of raw idents in proc-macro2 shim
2023-07-18 18:29:24 -07:00
David Tolnay
eb3f2329af
Merge pull request #2514 from dtolnay/precompiled
...
Add experiment to produce precompiled builds of serde_derive
2023-07-18 13:48:17 -07:00
David Tolnay
9e8f14816b
Add experiment to produce precompiled builds of serde_derive
2023-07-18 13:37:36 -07:00
David Tolnay
03da66c805
Release 1.0.171
2023-07-09 18:05:02 -07:00
David Tolnay
f75426f47e
Inline visitor_expr of unit struct deserialize impl
2023-07-09 18:03:58 -07:00
David Tolnay
662fc3861c
Add test of const-generic unit struct where-clause edge case
...
Closes #2501 .
2023-07-09 18:01:43 -07:00
David Tolnay
28c10020b9
Merge pull request #2500 from Baptistemontan/derive_generic_unit_struct
...
Allow `[derive(serde::Deserialize)]` for generic unit structs
2023-07-09 17:52:12 -07:00
David Tolnay
6502838f27
Release 1.0.170
2023-07-09 11:17:30 -07:00
David Tolnay
c93a0f335a
Merge pull request #2499 from dtolnay/strsuffix
...
Reject suffixed string literals inside serde attrs
2023-07-09 11:16:31 -07:00
David Tolnay
8264e002a7
Reject suffixed string literals inside serde attrs
2023-07-09 11:13:24 -07:00
David Tolnay
117ef22142
Add ui test with suffixed string literals in attribute
2023-07-09 11:09:38 -07:00
David Tolnay
3fb5e71c33
Release 1.0.169
2023-07-08 21:09:08 -07:00
David Tolnay
296db177e2
Pull in syn fix for issue 2414
2023-07-08 21:08:22 -07:00
David Tolnay
e4a4389177
Delete excessive tests of adjacently tagged non-string keys
2023-07-08 18:23:31 -07:00
David Tolnay
7aa0453c3b
Merge pull request 2475 from Baptistemontan/master
2023-07-08 18:07:16 -07:00
David Tolnay
09b78b24e9
Release 1.0.168
2023-07-08 17:52:06 -07:00
David Tolnay
a622b8a74a
Merge pull request #2495 from dtolnay/cautious
...
Allow larger preallocated capacity for smaller elements
2023-07-08 17:51:16 -07:00
David Tolnay
399ef081ec
Allow larger preallocated capacity for smaller elements
2023-07-08 17:43:01 -07:00
David Tolnay
3686277e14
Merge pull request #2436 from Mingun/flatten-ignored-any
...
Allow to flatten `IgnoredAny`
2023-07-06 16:35:10 -07:00
David Tolnay
807bd20a64
Release 1.0.167
2023-07-06 16:25:48 -07:00
David Tolnay
ed9a140348
Merge pull request #2444 from Mingun/dedup
...
Simplify code for generation of struct deserializers
2023-07-06 16:25:15 -07:00
David Tolnay
2de7c2bea2
Resolve redundant_static_lifetimes clippy lint from PR 2471
...
error: constants have by default a `'static` lifetime
--> serde/src/de/impls.rs:2467:24
|
2467 | pub const FIELDS: &'static [&'static str] = &["end"];
| -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes
= note: `-D clippy::redundant-static-lifetimes` implied by `-D clippy::all`
error: constants have by default a `'static` lifetime
--> serde/src/de/impls.rs:2467:34
|
2467 | pub const FIELDS: &'static [&'static str] = &["end"];
| -^^^^^^^---- help: consider removing `'static`: `&str`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes
error: constants have by default a `'static` lifetime
--> serde/src/de/impls.rs:2605:24
|
2605 | pub const FIELDS: &'static [&'static str] = &["start"];
| -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes
error: constants have by default a `'static` lifetime
--> serde/src/de/impls.rs:2605:34
|
2605 | pub const FIELDS: &'static [&'static str] = &["start"];
| -^^^^^^^---- help: consider removing `'static`: `&str`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes
2023-07-06 16:18:39 -07:00
David Tolnay
e6a4a3772e
Delete unuseful RangeFull impls
2023-07-06 16:10:21 -07:00
David Tolnay
0fca04e1a6
Merge pull request 2471 from tbu-/pr_more_ranges
2023-07-06 16:09:13 -07:00
David Tolnay
92bfc8d3af
Merge pull request #2290 from Mingun/enum-tests-and-cleanup
...
Remove unused `impl` and unnecessary struct-wrapper around tuple
2023-07-06 16:02:27 -07:00
David Tolnay
fa0312ac45
More formatting of doc tests and example code
2023-07-06 15:56:47 -07:00
David Tolnay
1920b694aa
Declare required automod dev-dependency
...
1.0.0 does not work with workspaces.
error: No such file or directory (os error 2)
--> test_suite/tests/regression.rs:2:5
|
2 | automod::dir!("tests/regression");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: this error originates in the macro `automod::dir` (in Nightly builds, run with -Z macro-backtrace for more info)
2023-07-06 15:50:32 -07:00