Refactor compiler warning handling.

Compiler warnings are now accumulated in a vector of strings within the mjSpec object. New API functions `mjs_numWarnings` and `mjs_getWarning` are added to access these warnings. The compiler's log handler now chains warnings to the global log handler, ensuring they are still displayed immediately. Call sites in `mj_loadXML`, `mj_compile`, and the Python and WASM bindings have been updated to use the new warning API.

PiperOrigin-RevId: 933361650
Change-Id: I47cab98a460c57b0898c0a1a43fce2a5b9648eb1
This commit is contained in:
Yuval Tassa
2026-06-16 16:27:52 -07:00
committed by Copybara-Service
parent 55c6332f20
commit 6f8bb5ef55
25 changed files with 640 additions and 89 deletions
+19 -1
View File
@@ -2161,7 +2161,25 @@ Get compiler timing diagnostics from spec, returns pointer to array of size mjNC
.. mujoco-include:: mjs_isWarning
Return 1 if compiler error is a warning.
Return 1 if compiler error is a warning. Deprecated: use mjs_numWarnings(s) > 0.
.. _mjs_numWarnings:
`mjs_numWarnings <#mjs_numWarnings>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. mujoco-include:: mjs_numWarnings
Get number of warnings accumulated in the spec.
.. _mjs_getWarning:
`mjs_getWarning <#mjs_getWarning>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. mujoco-include:: mjs_getWarning
Get the i-th warning message (returns nullptr if index out of bounds).
.. _Miscellaneous: