Comments (2)
Ah! Looks like you found two bugs for the price of one here 😂
The first bug is the assignment of default struct values. It should be casted to the field's type as you suggested. However, instead of using @as
(which actually won't work since default
is a pointer, not a value), we can use @ptrCast(*const field.field_type, default_ptr).*
, which is what std.json
uses. default
should probably also be renamed to default_ptr
to make things clearer.
The second bug is in the test deserializer's deserializeOptional
method. Its call to visitSome
was incorrect. It was passing in the interface type (Self.@"getty.Deserializer"
), not an interface value (self.deserializer()
).
The lesson here is I should've written some darn tests for optional values 😅
from getty.
For more context, when the optional field has no default value specified AND the patch mentioned above is applied then I get only this part of the errors:
W:\dev\definitive_dialoguer\.gyro\getty-getty-zig-github.com-d032ff42\pkg\src\lib.zig:41:9: error: concept `getty.Deserializer` was not satisfied: missing `context` field
@compileError("concept `" ++ concept ++ "` was not satisfied: " ++ msg);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
W:\dev\definitive_dialoguer\.gyro\getty-getty-zig-github.com-d032ff42\pkg\src\de\concepts\deserializer.zig:10:25: note: called from here
concepts.err(concept, "missing `context` field");
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
W:\dev\definitive_dialoguer\.gyro\getty-getty-zig-github.com-d032ff42\pkg\src\de\interfaces\visitor.zig:137:47: note: called from here
concepts.@"getty.Deserializer"(@TypeOf(deserializer));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
from getty.
Related Issues (20)
- Large types with many fields hits backwards branches limit HOT 3
- Struct field without default value gets freed causing segmentation fault, even when "skipped" HOT 4
- Move logic in `getty.de.free` into Deserialization Blocks
- Fix one-pointer string deserialization HOT 2
- Build failure when depending on both getty and getty-json HOT 1
- Add support for 'untagged' attribute
- Add `isVariantAllocated` method to `UnionAccess`
- Cannot deserialize into an untagged union pointer HOT 1
- Introduce a `skip_if_null` attribute
- Add support for standard library types HOT 6
- Add `isElementAllocated`/`isValueAllocated`/`isPayloadAllocated` functions to SeqAccess/MapAccess/VariantAccess interface HOT 5
- Document expected usage of `free`
- Document allocation model
- Fully unit test (de)serialize functions in blocks
- Add block tests for Ignored
- Avoiding unnecessary memory allocations in visitors HOT 8
- Remove redundant doc comments
- (De)Ser maps into tuple slices HOT 1
- Replace `https` dependency URLs with `git+https`
- Autodocs shows internal testing module API instead of Getty's
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from getty.