rojo-rbx / rbx-dom

Roblox DOM and (de)serialization implementation in Rust
MIT License
105 stars 42 forks source link

Harden rbx_reflector against unknown data types #403

Closed kennethloeffler closed 3 months ago

kennethloeffler commented 3 months ago

Today I noticed that rbx_reflector generate failed to output a database due to a new datatype:

     Running `target/debug/rbx_reflector generate rbx_reflection_database/database.msgpack rbx_dom_lua/src/database.json --patches patches`
[INFO  rbx_reflector::cli::defaults_place] Installing Studio plugin
[INFO  rbx_reflector::cli::defaults_place] Starting Roblox Studio...
[INFO  rbx_reflector::cli::defaults_place] Waiting for Roblox Studio to re-save place...
[INFO  rbx_reflector::cli::defaults_place] Uninstalling Studio plugin
Please save the opened place in Roblox Studio (ctrl+s).
[INFO  rbx_reflector::cli::defaults_place] Place saved, killing Studio...
Error: Unknown type Path2DControlPoint

This got me thinking about how rbx_reflector can more gracefully deal with unknown data types. I intuit that we only need to care about unknown data types if they serialize. With this in mind, this PR makes rbx_reflector generate only bail on unknown serializable data types (with the exception of QDir and QFont - see comments).