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:
committed by
Copybara-Service
parent
55c6332f20
commit
6f8bb5ef55
+10
-2
@@ -58,8 +58,16 @@ mjModel* mj_loadXML(const char* filename, const mjVFS* vfs,
|
||||
}
|
||||
|
||||
// handle compile warning
|
||||
if (mjs_isWarning(spec.get())) {
|
||||
mjCopyError(error, mjs_getError(spec.get()), error_sz);
|
||||
int num_warnings = mjs_numWarnings(spec.get());
|
||||
if (num_warnings > 0) {
|
||||
std::string all_warnings;
|
||||
for (int i = 0; i < num_warnings; ++i) {
|
||||
if (!all_warnings.empty()) {
|
||||
all_warnings += '\n';
|
||||
}
|
||||
all_warnings += mjs_getWarning(spec.get(), i);
|
||||
}
|
||||
mjCopyError(error, all_warnings.c_str(), error_sz);
|
||||
} else if (error) {
|
||||
error[0] = '\0';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user