From c8517e63a483622f6b4a193cb530f74c9d828b88 Mon Sep 17 00:00:00 2001 From: Nimrod Gileadi Date: Thu, 15 Sep 2022 05:28:18 -0700 Subject: [PATCH] Mark mjCError and mjXError as [[nodiscard]]. This lets the compiler catch the mistake of creating an exception without throwing it. PiperOrigin-RevId: 474536776 Change-Id: I5bd18258ce6ddd266adb1c852b1ba9e3063cd0b2 --- src/user/user_objects.h | 2 +- src/xml/xml_urdf.cc | 4 ++-- src/xml/xml_util.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/user/user_objects.h b/src/user/user_objects.h index 6407ab64..0b457960 100644 --- a/src/user/user_objects.h +++ b/src/user/user_objects.h @@ -84,7 +84,7 @@ typedef enum _mjtMeshType { // error information -class mjCError { +class [[nodiscard]] mjCError { public: mjCError(const mjCBase* obj = 0, const char* msg = 0, diff --git a/src/xml/xml_urdf.cc b/src/xml/xml_urdf.cc index c69015cd..eddbaff5 100644 --- a/src/xml/xml_urdf.cc +++ b/src/xml/xml_urdf.cc @@ -308,7 +308,7 @@ void mjXURDF::Joint(XMLElement* joint_elem) { ReadAttrTxt(joint_elem, "type", text, true); jointtype = FindKey(urJoint_map, urJoint_sz, text); if (jointtype < 0) { - mjXError(joint_elem, "invalid joint type in URDF joint definition"); + throw mjXError(joint_elem, "invalid joint type in URDF joint definition"); } ReadAttrTxt(joint_elem, "name", jntname, true); @@ -317,7 +317,7 @@ void mjXURDF::Joint(XMLElement* joint_elem) { ReadAttrTxt(elem, "link", name, true); parent = (mjCBody*) model->GetWorld()->FindObject(mjOBJ_BODY, name); if (!parent) { // SHOULD NOT OCCUR - mjXError(elem, "invalid parent name in URDF joint definition"); + throw mjXError(elem, "invalid parent name in URDF joint definition"); } // get child=this, check diff --git a/src/xml/xml_util.h b/src/xml/xml_util.h index 302eea43..02c210a3 100644 --- a/src/xml/xml_util.h +++ b/src/xml/xml_util.h @@ -33,7 +33,7 @@ void mjCopyError(char* dst, const char* src, int maxlen); // XML Error info -class mjXError { +class [[nodiscard]] mjXError { public: mjXError(const tinyxml2::XMLElement* elem = 0, const char* msg = 0,