From 2e8de41413d3fa6da0bd5f4dc51ebad0eff14f3b Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Thu, 24 Jul 2025 01:03:40 +0300 Subject: [PATCH] qcam: Silence false positive warnings with Qt 6.9.0 and newer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In Qt 6.9.0 the qtmochelpers.h header introduced a construct that gcc 12 and gcc 13 incorrectly flag as variable shadowing: In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:12: /usr/include/qt6/QtCore/qtmochelpers.h: In instantiation of ‘constexpr void QtMocHelpers::detail::UintDataStorage, T ...>::forEach(F&&) const [with F = QtMocHelpers::UintData >::copyTo<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t, QtMocHelpers::MetaObjectContents<24, 10, 60, 3> >(QtMocHelpers::MetaObjectContents<24, 10, 60, 3>&, size_t, uint&) const::; int ...Idx = {0}; T = {QtMocHelpers::SignalData}]’: /usr/include/qt6/QtCore/qtmochelpers.h:255:21: required from ‘constexpr const QtMocHelpers::MetaObjectContents<24, 10, 60, 3> ViewFinderGL::qt_staticMetaObjectContent<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t>’ src/apps/qcam/qcam.p/../../../../../../src/apps/qcam/viewfinder_gl.h:32:2: required from ‘constexpr const auto ViewFinderGL::qt_staticMetaObjectStaticContent<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t>’ src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:63:5: required from here src/apps/qcam/qcam.p/../../../../../../src/apps/qcam/viewfinder_gl.h:32:2: in ‘constexpr’ expansion of ‘ViewFinderGL::qt_create_metaobjectdata<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t>()’ src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:58:87: in ‘constexpr’ expansion of ‘QtMocHelpers::metaObjectData, UintData >, UintData<>, UintData<> >(0, qt_stringData, qt_methods, qt_properties, qt_enums, QtMocHelpers::UintData<>(), const QtMocHelpers::detail::UintDataBlock<0, 0>{uint [1](), uint [1]()})’ /usr/include/qt6/QtCore/qtmochelpers.h:563:36: in ‘constexpr’ expansion of ‘(& methods)->QtMocHelpers::UintData >::copyTo<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t, QtMocHelpers::MetaObjectContents<24, 10, 60, 3> >(result, ((size_t)dataoffset), metatypeoffset)’ /usr/include/qt6/QtCore/qtmochelpers.h:201:57: error: declaration of ‘entry’ shadows a member of ‘QtMocHelpers::detail::UintDataStorage, QtMocHelpers::SignalData >’ [-Werror=shadow] 201 | [[maybe_unused]] auto invoke = [&f](const auto &entry) { f(entry.entry); return 0; }; | ~~~~~~~~~~~~^~~~~ /usr/include/qt6/QtCore/qtmochelpers.h:180:7: note: shadowed declaration is here 180 | T entry; | ^~~~~ There is little we can do but silence the warning. Do so selectively based on the Qt and gcc versions, to still detect variable shadowing with compilers unaffected by the issue. Signed-off-by: Laurent Pinchart Reviewed-by: Umang Jain Reviewed-by: Paul Elder --- src/apps/qcam/meson.build | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/apps/qcam/meson.build b/src/apps/qcam/meson.build index f7c14064..9ca047b0 100644 --- a/src/apps/qcam/meson.build +++ b/src/apps/qcam/meson.build @@ -42,6 +42,13 @@ qt6_cpp_args = [ '-Wno-extra-semi', ] +# gcc 12 and 13 output a false positive variable shadowing warning with Qt +# 6.9.0 and newer. Silence it. +if qt6_dep.version().version_compare('>=6.9.0') and \ + cxx.version().version_compare('>=12') and cxx.version().version_compare('<14') + qt6_cpp_args += ['-Wno-shadow'] +endif + resources = qt6.preprocess(moc_headers : qcam_moc_headers, qresources : qcam_resources, dependencies : qt6_dep)