qt6-bb10/tests/auto/tools/moc
Ahmad Samir 7779400ba6 Moc: fix generated code for nested enum class corner case
Fixes an issue with generated code where the name of an enclosing
namespace is identical to an enum class type, when Q_ENUM_NS is used.

Consider:
namespace a {
    Q_NAMESPACE
    namespace b {
        enum class b { Key, Key2 };
        Q_ENUM_NS(b);
    }
}

moc generated code such as:
Q_CONSTINIT const QMetaObject a:🅱️:staticMetaObject = { {
    ...
    qt_incomplete_metaTypeArray<qt_meta_stringdata_CLASSaSCOPEbENDCLASS_t,
        // enum 'TestEnum'
        QtPrivate::TypeAndForceComplete<b::b, std::true_type>,
        // Q_OBJECT / Q_GADGET
        QtPrivate::TypeAndForceComplete<void, std::true_type>
    >,
    nullptr
} };

which confused the compiler:
error: ‘b’ is not a member of ‘a:🅱️:b
   83 |         QtPrivate::TypeAndForceComplete<b::b, std::true_type>,

Fixes: QTBUG-112996
Pick-to: 6.6
Change-Id: I37aee83c32efe96cc9d6c2bd0bdb9ba80bb7b8a7
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2023-06-18 21:28:58 +03:00
..
Test.framework/Headers Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
subdir moc: get the system #defines from the compiler itself 2016-07-20 02:54:03 +00:00
task71021
testproject Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
.gitattributes
.gitignore Add support for machine-readable JSON output to the MOC 2019-10-04 18:35:29 +02:00
CMakeLists.txt tests: Remove remains of qmake conversion from CMakeLists.txt files 2023-02-17 21:56:49 +01:00
Header
allmocs_baseline_in.json moc: Record types of enumerations 2023-03-31 17:42:58 +02:00
assign-namespace.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
backslash-newlines.h Moc: silence a GCC warning 2023-05-18 22:39:16 +03:00
c-comments.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
cstyle-enums.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
cxx-attributes.h moc: handle attributes in class declarations 2022-08-03 20:14:42 +02:00
cxx11-enums.h moc: Record types of enumerations 2023-03-31 17:42:58 +02:00
cxx11-explicit-override-control.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
cxx11-final-classes.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
cxx11-trailing-return.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
cxx17-namespaces.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
dir-in-include-path.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
dollars.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
enum_inc.h moc: Handle include in enum, take 2 2020-11-03 19:36:34 +00:00
enum_with_include.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
error-on-wrong-notify.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
escapes-in-string-literals.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
extraqualification.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
forgotten-qinterface.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
forward-declared-param.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
forwarddeclaredparam.h MetaObject: Store the QMetaType of the methods 2020-06-02 22:42:15 +02:00
function-with-attributes.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
fwdclass1.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
fwdclass2.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
fwdclass3.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
gadgetwithnoenums.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
grand-parent-gadget-class.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
interface-from-framework.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
interface-from-include.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
macro-on-cmdline.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
moc_include.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
namespace.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
namespace_no_merge.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
namespaced-flags.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
no-keywords.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
non-gadget-parent-class.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
oldstyle-casts.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
os9-newlines.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
parse-boost.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
parse-defines.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
plugin_metadata.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
pointery_to_incomplete.h QMetaType: fix void* parameters 2022-08-01 14:52:22 -07:00
pp-dollar-signs.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
pure-virtual-signals.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
qinvokable.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
qmlmacro.h moc: Do not fail to compile meta-methods containing non-const ref types 2022-09-21 18:41:43 +00:00
qprivateslots.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
qtbug-35657-gadget.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
related-metaobjects-in-gadget.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
related-metaobjects-in-namespaces.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
related-metaobjects-name-conflict.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
signal-with-default-arg.h moc: Output the "cloned" flag for methods 2022-11-27 12:47:30 +01:00
single-quote-digit-separator-n3781.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
single_function_keyword.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
slots-with-void-template.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
task87883.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
task192552.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
task234909.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
task240368.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
template-gtgt.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
trigraphs.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
tst_moc.cpp Moc: fix generated code for nested enum class corner case 2023-06-18 21:28:58 +03:00
unterminated-function-macro.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
using-namespaces.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
warn-on-multiple-qobject-subclasses.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
warn-on-property-without-read.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
win-newlines.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00