Skip to content

Enable compliance with -Wshadow by renaming variables.#566

Open
leander-dsouza wants to merge 1 commit intoros-perception:rollingfrom
leander-dsouza:rm-variable-shadowing
Open

Enable compliance with -Wshadow by renaming variables.#566
leander-dsouza wants to merge 1 commit intoros-perception:rollingfrom
leander-dsouza:rm-variable-shadowing

Conversation

@leander-dsouza
Copy link
Copy Markdown

Basic Info

Info Please fill out this column
Ticket(s) this addresses N/A
Primary OS tested on Ubuntu
Is this a breaking change? No

Description of the problem

  • When including the <cv_bridge/cv_bridge.hpp> header, explicit ignores for shadowing had to be passed in order to build with -Wshadow:

    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wshadow"
    #include <cv_bridge/cv_bridge.hpp>
    #pragma GCC diagnostic pop
  • This can be explicitly checked by building the package on its own:

    $ colcon build --packages-select cv_bridge --cmake-args -DCMAKE_CXX_FLAGS="-Wshadow -Werror=shadow"
    Starting >>> cv_bridge
    --- stderr: cv_bridge                             
    In file included from /autonomy_ws/src/vision_opencv/cv_bridge/src/cv_bridge.cpp:37:
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp: In constructor ‘cv_bridge::CvImage::CvImage(const std_msgs::msg::Header&, const std::string&, const cv::Mat&)’:
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:102:21: error: declaration of ‘image’ shadows a member of ‘cv_bridge::CvImage’ [-Werror=shadow]
      102 |     const cv::Mat & image = cv::Mat())
          |     ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:90:11: note: shadowed declaration is here
       90 |   cv::Mat image;           // !< Image data for use with OpenCV
          |           ^~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:101:63: error: declaration of ‘encoding’ shadows a member of ‘cv_bridge::CvImage’ [-Werror=shadow]
      101 |     const std_msgs::msg::Header & header, const std::string & encoding,
          |                                           ~~~~~~~~~~~~~~~~~~~~^~~~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:89:15: note: shadowed declaration is here
       89 |   std::string encoding;    // !< Image encoding ("mono8", "bgr8", etc.)
          |               ^~~~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:101:35: error: declaration of ‘header’ shadows a member of ‘cv_bridge::CvImage’ [-Werror=shadow]
      101 |     const std_msgs::msg::Header & header, const std::string & encoding,
          |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:88:25: note: shadowed declaration is here
       88 |   std_msgs::msg::Header header;  // !< ROS header
          |                         ^~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp: In constructor ‘cv_bridge::CvImage::CvImage(const std_msgs::msg::Header&, const std::string&, const cv::Mat&)’:
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:102:21: error: declaration of ‘image’ shadows a member of ‘cv_bridge::CvImage’ [-Werror=shadow]
      102 |     const cv::Mat & image = cv::Mat())
          |     ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:90:11: note: shadowed declaration is here
       90 |   cv::Mat image;           // !< Image data for use with OpenCV
          |           ^~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:101:63: error: declaration of ‘encoding’ shadows a member of ‘cv_bridge::CvImage’ [-Werror=shadow]
      101 |     const std_msgs::msg::Header & header, const std::string & encoding,
          |                                           ~~~~~~~~~~~~~~~~~~~~^~~~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:89:15: note: shadowed declaration is here
       89 |   std::string encoding;    // !< Image encoding ("mono8", "bgr8", etc.)
          |               ^~~~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:101:35: error: declaration of ‘header’ shadows a member of ‘cv_bridge::CvImage’ [-Werror=shadow]
      101 |     const std_msgs::msg::Header & header, const std::string & encoding,
          |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:88:25: note: shadowed declaration is here
       88 |   std_msgs::msg::Header header;  // !< ROS header
          |                         ^~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp: In constructor ‘cv_bridge::CvImage::CvImage(const std_msgs::msg::Header&, const std::string&, const cv::Mat&)’:
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:102:21: error: declaration of ‘image’ shadows a member of ‘cv_bridge::CvImage’ [-Werror=shadow]
      102 |     const cv::Mat & image = cv::Mat())
          |     ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:90:11: note: shadowed declaration is here
       90 |   cv::Mat image;           // !< Image data for use with OpenCV
          |           ^~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:101:63: error: declaration of ‘encoding’ shadows a member of ‘cv_bridge::CvImage’ [-Werror=shadow]
      101 |     const std_msgs::msg::Header & header, const std::string & encoding,
          |                                           ~~~~~~~~~~~~~~~~~~~~^~~~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:89:15: note: shadowed declaration is here
       89 |   std::string encoding;    // !< Image encoding ("mono8", "bgr8", etc.)
          |               ^~~~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:101:35: error: declaration of ‘header’ shadows a member of ‘cv_bridge::CvImage’ [-Werror=shadow]
      101 |     const std_msgs::msg::Header & header, const std::string & encoding,
          |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:88:25: note: shadowed declaration is here
       88 |   std_msgs::msg::Header header;  // !< ROS header
          |                         ^~~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/cv_bridge.cpp: In member function ‘void cv_bridge::CvImage::toCompressedImageMsg(sensor_msgs::msg::CompressedImage&, cv_bridge::Format) const’:
    /autonomy_ws/src/vision_opencv/cv_bridge/src/cv_bridge.cpp:517:11: error: declaration of ‘image’ shadows a member of ‘cv_bridge::CvImage’ [-Werror=shadow]
      517 |   cv::Mat image;
          |           ^~~~~
    /autonomy_ws/src/vision_opencv/cv_bridge/src/../include/cv_bridge/cv_bridge.hpp:90:11: note: shadowed declaration is here
       90 |   cv::Mat image;           // !< Image data for use with OpenCV
          |           ^~~~~
    cc1plus: some warnings being treated as errors
    gmake[2]: *** [src/CMakeFiles/cv_bridge.dir/build.make:76: src/CMakeFiles/cv_bridge.dir/cv_bridge.cpp.o] Error 1
    gmake[1]: *** [CMakeFiles/Makefile2:245: src/CMakeFiles/cv_bridge.dir/all] Error 2
    gmake: *** [Makefile:146: all] Error 2
    ---
    Failed   <<< cv_bridge [2.21s, exited with code 2]

Resolution and Testing

  • After renaming some of the variables to be devoid of shadowing faults, the build and test now pass cleanly:

    colcon build --packages-select cv_bridge --cmake-args -DCMAKE_CXX_FLAGS="-Wshadow -Werror=shadow" && colcon test --packages-select cv_bridge

Signed-off-by: Leander Stephen Desouza <leanderdsouza1234@gmail.com>
@leander-dsouza leander-dsouza marked this pull request as ready for review April 29, 2026 12:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant