Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-63352

Useless casts in MOC generated files

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P2: Important
    • Resolution: Done
    • Affects Version/s: 5.9.1
    • Fix Version/s: 5.9.2
    • Component/s: Build tools: moc
    • Labels:
      None
    • Environment:
      Windows 10 x64
      Qt 5.9.1 x64 from Msys2
      GCC (G++) 7.2 x64 from Msys2
      CMake 3.9.2 x64 from Msys2
      Qt Creator 4.4.0

      Description

      Steps to reproduce:
      1. Open the attached simple project where a class derives from QObject and has Q_OBJECT macro inside its body.
      2. Compile it with GCC (G++) with -Wuseless-cast (already in CMakeLists.txt).

      Expected result:
      Successful compilation with no warnings or errors.

      Actual result:
      The compiler displays a warning in the MOC generated function
          Foo::qt_metacast(const char *_clname)
      in line
          return static_cast<void*>(const_cast< Foo*>(this));

      Full warning:

      D:\dev\project\test\useless-cast-test\main.cpp:13: In file included from D:/dev/project/test/useless-cast-test/main.cpp:13:0:
      D:\dev\project\test\build-useless-cast-test-Qt_5_9_1_MinGW_x64_GCC_7_2-Debug\useless-cast-test_autogen\include\main.moc:-1: In member function 'virtual void* Foo::qt_metacast(const char*)':
      D:\dev\project\test\build-useless-cast-test-Qt_5_9_1_MinGW_x64_GCC_7_2-Debug\useless-cast-test_autogen\include\main.moc:79: warning: useless cast to type 'Foo*' [-Wuseless-cast]
      return static_cast<void*>(const_cast< Foo*>(this));
                                                                                    ^

      The problem is worse when you compile with -Werror to treat every warning as error, because then it's not obvious how to fix this issue.

        Attachments

        1. CMakeLists.txt
          0.3 kB
        2. main.cpp
          0.1 kB
        For Gerrit Dashboard: QTBUG-63352
        # Subject Branch Project Status CR V

          Activity

            People

            • Assignee:
              ogoffart Olivier Goffart (Woboq GmbH)
              Reporter:
              fazer Arkadiusz Piekarz
            • Votes:
              2 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Gerrit Reviews

                There are no open Gerrit changes