diff --git a/src/corelib/kernel/qtmetamacros.h b/src/corelib/kernel/qtmetamacros.h index 69f390ea9a0..fa9fa8691c4 100644 --- a/src/corelib/kernel/qtmetamacros.h +++ b/src/corelib/kernel/qtmetamacros.h @@ -11,7 +11,8 @@ QT_BEGIN_NAMESPACE #ifndef Q_MOC_OUTPUT_REVISION -#define Q_MOC_OUTPUT_REVISION 68 +// This number should be in sync with moc's outputrevision.h +#define Q_MOC_OUTPUT_REVISION 69 #endif // The following macros can be defined by tools that understand Qt diff --git a/src/corelib/kernel/qtmochelpers.h b/src/corelib/kernel/qtmochelpers.h index d93e62f459c..545c9eeef21 100644 --- a/src/corelib/kernel/qtmochelpers.h +++ b/src/corelib/kernel/qtmochelpers.h @@ -78,8 +78,6 @@ template constexpr auto stringData(const char (&...strings)[Nx]) return result; } -# define QT_MOC_HAS_STRINGDATA 1 - struct NoType {}; template struct ForceCompleteMetaTypes {}; @@ -568,8 +566,6 @@ constexpr auto metaObjectData(uint flags, const Methods &methods, const Properti return result; } -#define QT_MOC_HAS_UINTDATA 1 - template inline std::enable_if_t> assignFlags(void *v, T t) noexcept { *static_cast(v) = t; diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp index 5243ea64908..e028a71520a 100644 --- a/src/tools/moc/generator.cpp +++ b/src/tools/moc/generator.cpp @@ -131,17 +131,6 @@ int Generator::stridx(const QByteArray &s) return i; } -// Returns the sum of all parameters (including return type) for the given -// \a list of methods. This is needed for calculating the size of the methods' -// parameter type/name meta-data. -static int aggregateParameterCount(const QList &list) -{ - int sum = 0; - for (const FunctionDef &def : list) - sum += int(def.arguments.size()) + 1; // +1 for return type - return sum; -} - bool Generator::registerableMetaType(const QByteArray &propertyType) { if (metaTypes.contains(propertyType)) @@ -269,8 +258,7 @@ void Generator::generateCode() // Build the strings using QtMocHelpers::stringData // - fprintf(out, "\n#ifdef QT_MOC_HAS_STRINGDATA\n" - "static constexpr auto qt_meta_stringdata_%s = QtMocHelpers::stringData(", + fprintf(out, "static constexpr auto qt_meta_stringdata_%s = QtMocHelpers::stringData(", qualifiedClassNameIdentifier.constData()); { char comma = 0; @@ -281,10 +269,7 @@ void Generator::generateCode() comma = ','; } } - fprintf(out, "\n);\n" - "#else // !QT_MOC_HAS_STRINGDATA\n"); - fprintf(out, "#error \"qtmochelpers.h not found or too old.\"\n"); - fprintf(out, "#endif // !QT_MOC_HAS_STRINGDATA\n\n"); + fprintf(out, "\n);\n\n"); // // build the data array @@ -294,8 +279,7 @@ void Generator::generateCode() // creating the meta object for, so we get access to everything it has // access to and with the same contexts (for example, member enums and // types). - fprintf(out, "#ifdef QT_MOC_HAS_UINTDATA\n" - "template <> constexpr inline auto %s::qt_create_metaobjectdata()\n" + fprintf(out, "template <> constexpr inline auto %s::qt_create_metaobjectdata()\n" "{\n" " namespace QMC = QtMocConstants;\n" " QtMocHelpers::UintData qt_methods {\n", @@ -372,137 +356,13 @@ void Generator::generateCode() // create a copy of qt_meta_data_types' members so the uint array ends up // in the pure .rodata section while the meta types is in .data.rel.ro - fprintf(out, "static constexpr auto qt_meta_data_%s_array =\n" + fprintf(out, "static constexpr auto qt_meta_data_%s =\n" " qt_meta_data_types_%s.data;\n", qualifiedClassNameIdentifier.constData(), qualifiedClassNameIdentifier.constData()); - fprintf(out, "static constexpr const uint *qt_meta_data_%s =\n" - " qt_meta_data_%s_array.data();\n", - qualifiedClassNameIdentifier.constData(), qualifiedClassNameIdentifier.constData()); fprintf(out, "static constexpr auto qt_meta_types_%s =\n" - " qt_meta_data_types_%s.metaTypes;\n", + " qt_meta_data_types_%s.metaTypes;\n\n", qualifiedClassNameIdentifier.constData(), qualifiedClassNameIdentifier.constData()); - fprintf(out, "#else // !QT_MOC_HAS_UINTDATA\n"); - - int index = MetaObjectPrivateFieldCount; - fprintf(out, "Q_CONSTINIT static const uint qt_meta_data_%s[] = {\n", qualifiedClassNameIdentifier.constData()); - fprintf(out, "\n // content:\n"); - fprintf(out, " %4d, // revision\n", 12); // hardcoded to an earlier version - fprintf(out, " %4d, // classname\n", stridx(cdef->qualified)); - fprintf(out, " %4d, %4d, // classinfo\n", int(cdef->classInfoList.size()), int(cdef->classInfoList.size() ? index : 0)); - index += cdef->classInfoList.size() * 2; - - qsizetype methodCount = 0; - if (qAddOverflow(cdef->signalList.size(), cdef->slotList.size(), &methodCount) - || qAddOverflow(cdef->methodList.size(), methodCount, &methodCount)) { - parser->error("internal limit exceeded: the total number of member functions" - " (including signals and slots) is too big."); - } - - fprintf(out, " %4" PRIdQSIZETYPE ", %4d, // methods\n", methodCount, methodCount ? index : 0); - index += methodCount * QMetaObjectPrivate::IntsPerMethod; - if (cdef->revisionedMethods) - index += methodCount; - int paramsIndex = index; - int totalParameterCount = aggregateParameterCount(cdef->signalList) - + aggregateParameterCount(cdef->slotList) - + aggregateParameterCount(cdef->methodList) - + aggregateParameterCount(cdef->constructorList); - index += totalParameterCount * 2 // types and parameter names - - methodCount // return "parameters" don't have names - - int(cdef->constructorList.size()); // "this" parameters don't have names - - fprintf(out, " %4d, %4d, // properties\n", int(cdef->propertyList.size()), int(cdef->propertyList.size() ? index : 0)); - index += cdef->propertyList.size() * QMetaObjectPrivate::IntsPerProperty; - fprintf(out, " %4d, %4d, // enums/sets\n", int(cdef->enumList.size()), cdef->enumList.size() ? index : 0); - - int enumsIndex = index; - for (const EnumDef &def : std::as_const(cdef->enumList)) - index += QMetaObjectPrivate::IntsPerEnum + (def.values.size() * 2); - - fprintf(out, " %4d, %4d, // constructors\n", isConstructible ? int(cdef->constructorList.size()) : 0, - isConstructible ? index : 0); - - int flags = 0; - if (cdef->hasQGadget || cdef->hasQNamespace) { - // Ideally, all the classes could have that flag. But this broke classes generated - // by qdbusxml2cpp which generate code that require that we call qt_metacall for properties - flags |= PropertyAccessInStaticMetaCall; - } - fprintf(out, " %4d, // flags\n", flags); - fprintf(out, " %4d, // signalCount\n", int(cdef->signalList.size())); - - -// -// Build classinfo array -// - generateClassInfos(); - - qsizetype propEnumCount = 0; - // all property metatypes + all enum metatypes + 1 for the type of the current class itself - if (qAddOverflow(cdef->propertyList.size(), cdef->enumList.size(), &propEnumCount) - || qAddOverflow(propEnumCount, qsizetype(1), &propEnumCount) - || propEnumCount >= std::numeric_limits::max()) { - parser->error("internal limit exceeded: number of property and enum metatypes is too big."); - } - int initialMetaTypeOffset = int(propEnumCount); - -// -// Build signals array first, otherwise the signal indices would be wrong -// - generateFunctions(cdef->signalList, "signal", MethodSignal, paramsIndex, initialMetaTypeOffset); - -// -// Build slots array -// - generateFunctions(cdef->slotList, "slot", MethodSlot, paramsIndex, initialMetaTypeOffset); - -// -// Build method array -// - generateFunctions(cdef->methodList, "method", MethodMethod, paramsIndex, initialMetaTypeOffset); - -// -// Build method version arrays -// - if (cdef->revisionedMethods) { - generateFunctionRevisions(cdef->signalList, "signal"); - generateFunctionRevisions(cdef->slotList, "slot"); - generateFunctionRevisions(cdef->methodList, "method"); - } - -// -// Build method parameters array -// - generateFunctionParameters(cdef->signalList, "signal"); - generateFunctionParameters(cdef->slotList, "slot"); - generateFunctionParameters(cdef->methodList, "method"); - if (isConstructible) - generateFunctionParameters(cdef->constructorList, "constructor"); - -// -// Build property array -// - generateProperties(); - -// -// Build enums array -// - generateEnums(enumsIndex); - -// -// Build constructors array -// - if (isConstructible) - generateFunctions(cdef->constructorList, "constructor", MethodConstructor, paramsIndex, initialMetaTypeOffset); - -// -// Terminate data array -// - fprintf(out, "\n 0 // eod\n};\n"); - - fprintf(out, "#endif // !QT_MOC_HAS_UINTDATA\n\n"); - // // Build extra array // @@ -590,7 +450,7 @@ void Generator::generateCode() else fprintf(out, " nullptr,\n"); fprintf(out, " qt_meta_stringdata_%s.offsetsAndSizes,\n" - " qt_meta_data_%s,\n", qualifiedClassNameIdentifier.constData(), + " qt_meta_data_%s.data(),\n", qualifiedClassNameIdentifier.constData(), qualifiedClassNameIdentifier.constData()); if (hasStaticMetaCall) fprintf(out, " qt_static_metacall,\n"); @@ -602,70 +462,9 @@ void Generator::generateCode() else fprintf(out, " qt_meta_extradata_%s,\n", qualifiedClassNameIdentifier.constData()); - fprintf(out, "#ifdef QT_MOC_HAS_UINTDATA\n" - " qt_meta_types_%s.data(),\n" - "#else\n", + fprintf(out, " qt_meta_types_%s.data(),\n", qualifiedClassNameIdentifier.constData()); - const char *comma = ""; - auto stringForType = [requireCompleteness](const QByteArray &type, bool forceComplete) -> QByteArray { - const char *forceCompleteType = forceComplete ? ", std::true_type>" : ", std::false_type>"; - if (requireCompleteness) - return type; - return "QtPrivate::TypeAndForceComplete<" % type % forceCompleteType; - }; - if (!requireCompleteness) { - fprintf(out, " qt_incomplete_metaTypeArraypropertyList)) { - fprintf(out, "%s\n // property '%s'\n %s", - comma, p.name.constData(), stringForType(p.type, true).constData()); - comma = ","; - } - - // metatypes for enums - for (const EnumDef &e : std::as_const(cdef->enumList)) { - fprintf(out, "%s\n // enum '%s'\n %s", - comma, e.name.constData(), stringForType(e.qualifiedType(cdef), true).constData()); - comma = ","; - } - - fprintf(out, "%s\n // Q_OBJECT / Q_GADGET\n %s", - comma, stringForType(ownType, true).constData()); - comma = ","; - - // metatypes for all exposed methods - // because we definitely printed something above, this section doesn't need comma control - const auto allMethods = {&cdef->signalList, &cdef->slotList, &cdef->methodList}; - for (const QList *methodContainer : allMethods) { - for (const FunctionDef &fdef : *methodContainer) { - fprintf(out, ",\n // method '%s'\n %s", - fdef.name.constData(), stringForType(fdef.type.name, false).constData()); - for (const auto &argument: fdef.arguments) - fprintf(out, ",\n %s", stringForType(argument.type.name, false).constData()); - } - } - - // but constructors have no return types, so this needs comma control again - for (const FunctionDef &fdef : std::as_const(cdef->constructorList)) { - if (fdef.arguments.isEmpty()) - continue; - - fprintf(out, "%s\n // constructor '%s'", comma, fdef.name.constData()); - comma = ""; - for (const auto &argument: fdef.arguments) { - fprintf(out, "%s\n %s", comma, - stringForType(argument.type.name, false).constData()); - comma = ","; - } - } - fprintf(out, "\n >,\n"); - fprintf(out, "#endif // !QT_MOC_HAS_UINTDATA\n"); - fprintf(out, " nullptr\n} };\n\n"); // @@ -781,17 +580,6 @@ void Generator::addClassInfos() fprintf(out, " { %4d, %4d },\n", stridx(c.name), stridx(c.value)); } -void Generator::generateClassInfos() -{ - if (cdef->classInfoList.isEmpty()) - return; - - fprintf(out, "\n // classinfo: key, value\n"); - - for (const ClassInfoDef &c : std::as_const(cdef->classInfoList)) - fprintf(out, " %4d, %4d,\n", stridx(c.name), stridx(c.value)); -} - void Generator::registerFunctionStrings(const QList &list) { for (const FunctionDef &f : list) { @@ -882,91 +670,6 @@ void Generator::addFunctions(const QList &list, const char *functyp } } -void Generator::generateFunctions(const QList &list, const char *functype, int type, - int ¶msIndex, int &initialMetatypeOffset) -{ - if (list.isEmpty()) - return; - fprintf(out, "\n // %ss: name, argc, parameters, tag, flags, initial metatype offsets\n", functype); - - for (const FunctionDef &f : list) { - QByteArray comment; - uint flags = type; - if (f.access == FunctionDef::Private) { - flags |= AccessPrivate; - comment.append("Private"); - } else if (f.access == FunctionDef::Public) { - flags |= AccessPublic; - comment.append("Public"); - } else if (f.access == FunctionDef::Protected) { - flags |= AccessProtected; - comment.append("Protected"); - } - if (f.isCompat) { - flags |= MethodCompatibility; - comment.append(" | MethodCompatibility"); - } - if (f.wasCloned) { - flags |= MethodCloned; - comment.append(" | MethodCloned"); - } - if (f.isScriptable) { - flags |= MethodScriptable; - comment.append(" | isScriptable"); - } - if (f.revision > 0) { - flags |= MethodRevisioned; - comment.append(" | MethodRevisioned"); - } - - if (f.isConst) { - flags |= MethodIsConst; - comment.append(" | MethodIsConst "); - } - - const int argc = int(f.arguments.size()); - fprintf(out, " %4d, %4d, %4d, %4d, 0x%02x, %4d /* %s */,\n", - stridx(f.name), argc, paramsIndex, stridx(f.tag), flags, initialMetatypeOffset, comment.constData()); - - paramsIndex += 1 + argc * 2; - // constructors don't have a return type - initialMetatypeOffset += (f.isConstructor ? 0 : 1) + argc; - } -} - -void Generator::generateFunctionRevisions(const QList &list, const char *functype) -{ - if (list.size()) - fprintf(out, "\n // %ss: revision\n", functype); - for (const FunctionDef &f : list) - fprintf(out, " %4d,\n", f.revision); -} - -void Generator::generateFunctionParameters(const QList &list, const char *functype) -{ - if (list.isEmpty()) - return; - fprintf(out, "\n // %ss: parameters\n", functype); - for (const FunctionDef &f : list) { - fprintf(out, " "); - - // Types - const bool allowEmptyName = f.isConstructor; - generateTypeInfo(f.normalizedType, allowEmptyName); - fputc(',', out); - for (const ArgumentDef &arg : f.arguments) { - fputc(' ', out); - generateTypeInfo(arg.normalizedType, allowEmptyName); - fputc(',', out); - } - - // Parameter names - for (const ArgumentDef &arg : f.arguments) - fprintf(out, " %4d,", stridx(arg.name)); - - fprintf(out, "\n"); - } -} void Generator::generateTypeInfo(const QByteArray &typeName, bool allowEmptyName) { @@ -1074,65 +777,6 @@ void Generator::addProperties() } } -void Generator::generateProperties() -{ - // - // Create meta data - // - - if (cdef->propertyList.size()) - fprintf(out, "\n // properties: name, type, flags, notifyId, revision\n"); - for (const PropertyDef &p : std::as_const(cdef->propertyList)) { - uint flags = Invalid; - if (!isBuiltinType(p.type)) - flags |= EnumOrFlag; - if (!p.member.isEmpty() && !p.constant) - flags |= Writable; - if (!p.read.isEmpty() || !p.member.isEmpty()) - flags |= Readable; - if (!p.write.isEmpty()) { - flags |= Writable; - if (p.stdCppSet()) - flags |= StdCppSet; - } - - if (!p.reset.isEmpty()) - flags |= Resettable; - - if (p.designable != "false") - flags |= Designable; - - if (p.scriptable != "false") - flags |= Scriptable; - - if (p.stored != "false") - flags |= Stored; - - if (p.user != "false") - flags |= User; - - if (p.constant) - flags |= Constant; - if (p.final) - flags |= Final; - if (p.required) - flags |= Required; - - if (!p.bind.isEmpty()) - flags |= Bindable; - - fprintf(out, " %4d, ", stridx(p.name)); - generateTypeInfo(p.type); - int notifyId = p.notifyId; - if (p.notifyId < -1) { - // signal is in parent class - const int indexInStrings = int(strings.indexOf(p.notify)); - notifyId = indexInStrings | IsUnresolvedSignal; - } - fprintf(out, ", 0x%.8x, uint(%d), %d,\n", flags, notifyId, p.revision); - } -} - void Generator::registerEnumStrings() { for (const EnumDef &e : std::as_const(cdef->enumList)) { @@ -1184,38 +828,6 @@ void Generator::addEnums() } } -void Generator::generateEnums(int index) -{ - if (cdef->enumDeclarations.isEmpty()) - return; - - fprintf(out, "\n // enums: name, alias, flags, count, data\n"); - index += QMetaObjectPrivate::IntsPerEnum * cdef->enumList.size(); - int i; - for (i = 0; i < cdef->enumList.size(); ++i) { - const EnumDef &e = cdef->enumList.at(i); - uint flags = e.flags | cdef->enumDeclarations.value(e.name); - fprintf(out, " %4d, %4d, 0x%.1x, %4d, %4d,\n", - stridx(e.name), - e.enumName.isNull() ? stridx(e.name) : stridx(e.enumName), - flags, - int(e.values.size()), - index); - index += e.values.size() * 2; - } - - fprintf(out, "\n // enum data: key, value\n"); - for (const EnumDef &e : std::as_const(cdef->enumList)) { - QByteArray prefix = cdef->qualified; - if (e.flags & EnumIsScoped) - prefix += "::" + (e.enumName.isNull() ? e.name : e.enumName); - for (const QByteArray &val : e.values) { - fprintf(out, " %4d, uint(%s::%s),\n", - stridx(val), prefix.constData(), val.constData()); - } - } -} - void Generator::generateMetacall() { bool isQObject = (cdef->classname == "QObject"); diff --git a/src/tools/moc/generator.h b/src/tools/moc/generator.h index 3bdff290f1e..f70c8746e81 100644 --- a/src/tools/moc/generator.h +++ b/src/tools/moc/generator.h @@ -26,22 +26,15 @@ public: private: bool registerableMetaType(const QByteArray &propertyType); void registerClassInfoStrings(); - void generateClassInfos(); void registerFunctionStrings(const QList &list); void registerByteArrayVector(const QList &list); void addProperties(); void addEnums(); void addFunctions(const QList &list, const char *functype); void addClassInfos(); - void generateFunctions(const QList &list, const char *functype, int type, - int ¶msIndex, int &initialMetatypeOffset); - void generateFunctionRevisions(const QList &list, const char *functype); - void generateFunctionParameters(const QList &list, const char *functype); void generateTypeInfo(const QByteArray &typeName, bool allowEmptyName = false); void registerEnumStrings(); - void generateEnums(int index); void registerPropertyStrings(); - void generateProperties(); void generateMetacall(); void generateStaticMetacall(); void generateSignal(const FunctionDef *def, int index); diff --git a/src/tools/moc/outputrevision.h b/src/tools/moc/outputrevision.h index 3bc5a872ed2..fd498d08bbb 100644 --- a/src/tools/moc/outputrevision.h +++ b/src/tools/moc/outputrevision.h @@ -4,7 +4,7 @@ #ifndef OUTPUTREVISION_H #define OUTPUTREVISION_H -// if the output revision changes, you MUST change it in qobjectdefs.h too -enum { mocOutputRevision = 68 }; // moc format output revision +// if the output revision changes, you MUST change it in qtmetamacros.h too +enum { mocOutputRevision = 69 }; // moc format output revision #endif // OUTPUTREVISION_H diff --git a/tests/auto/cmake/test_qt_extract_metatypes/test_qt_extract_metatypes_project/testdata/qt6metatypetest_metatypesQ_OBJECT.json b/tests/auto/cmake/test_qt_extract_metatypes/test_qt_extract_metatypes_project/testdata/qt6metatypetest_metatypesQ_OBJECT.json index 37322f02ee9..9bd20506429 100644 --- a/tests/auto/cmake/test_qt_extract_metatypes/test_qt_extract_metatypes_project/testdata/qt6metatypetest_metatypesQ_OBJECT.json +++ b/tests/auto/cmake/test_qt_extract_metatypes/test_qt_extract_metatypes_project/testdata/qt6metatypetest_metatypesQ_OBJECT.json @@ -15,6 +15,6 @@ } ], "inputFile": "MetaType.h", - "outputRevision": 68 + "outputRevision": 69 } ] diff --git a/tests/auto/cmake/test_qt_extract_metatypes/test_qt_extract_metatypes_project/testdata/qt6metatypetest_metatypesQ_OBJECTandQ_PROPERTY.json b/tests/auto/cmake/test_qt_extract_metatypes/test_qt_extract_metatypes_project/testdata/qt6metatypetest_metatypesQ_OBJECTandQ_PROPERTY.json index f53bc2890ab..2a6d80aa34c 100644 --- a/tests/auto/cmake/test_qt_extract_metatypes/test_qt_extract_metatypes_project/testdata/qt6metatypetest_metatypesQ_OBJECTandQ_PROPERTY.json +++ b/tests/auto/cmake/test_qt_extract_metatypes/test_qt_extract_metatypes_project/testdata/qt6metatypetest_metatypesQ_OBJECTandQ_PROPERTY.json @@ -30,6 +30,6 @@ } ], "inputFile": "MetaType.h", - "outputRevision": 68 + "outputRevision": 69 } ] diff --git a/tests/auto/tools/moc/allmocs_baseline_in.json b/tests/auto/tools/moc/allmocs_baseline_in.json index 05d63e62324..e36c4ff06c9 100644 --- a/tests/auto/tools/moc/allmocs_baseline_in.json +++ b/tests/auto/tools/moc/allmocs_baseline_in.json @@ -23,7 +23,7 @@ } ], "inputFile": "backslash-newlines.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -41,7 +41,7 @@ } ], "inputFile": "c-comments.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -73,7 +73,7 @@ } ], "inputFile": "cstyle-enums.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -306,7 +306,7 @@ } ], "inputFile": "cxx11-enums.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -654,7 +654,7 @@ } ], "inputFile": "cxx11-explicit-override-control.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -768,7 +768,7 @@ } ], "inputFile": "cxx11-final-classes.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -848,7 +848,7 @@ } ], "inputFile": "cxx11-trailing-return.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -886,7 +886,7 @@ } ], "inputFile": "cxx17-namespaces.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -916,7 +916,7 @@ } ], "inputFile": "dir-in-include-path.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -934,7 +934,7 @@ } ], "inputFile": "enum_with_include.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -966,7 +966,7 @@ } ], "inputFile": "escapes-in-string-literals.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -1186,7 +1186,7 @@ } ], "inputFile": "forward-declared-param.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -1218,7 +1218,7 @@ } ], "inputFile": "function-with-attributes.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -1252,7 +1252,7 @@ } ], "inputFile": "gadgetwithnoenums.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -1288,7 +1288,7 @@ } ], "inputFile": "grand-parent-gadget-class.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -1356,7 +1356,7 @@ } ], "inputFile": "moc_include.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -1422,7 +1422,7 @@ } ], "inputFile": "namespace.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -1453,7 +1453,7 @@ } ], "inputFile": "namespaced-base-class.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -1541,7 +1541,7 @@ } ], "inputFile": "namespaced-flags.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -1575,7 +1575,7 @@ } ], "inputFile": "no-keywords.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -1593,7 +1593,7 @@ } ], "inputFile": "non-gadget-parent-class.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -1656,7 +1656,7 @@ } ], "inputFile": "oldstyle-casts.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -1878,7 +1878,7 @@ } ], "inputFile": "parse-defines.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -1896,7 +1896,7 @@ } ], "inputFile": "plugin_metadata.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -1993,7 +1993,7 @@ } ], "inputFile": "pointery_to_incomplete.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -2069,7 +2069,7 @@ } ], "inputFile": "pure-virtual-signals.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -2138,7 +2138,7 @@ } ], "inputFile": "qflags64object.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -2190,7 +2190,7 @@ } ], "inputFile": "qinvokable.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -2228,7 +2228,7 @@ } ], "inputFile": "qmlmacro.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -2262,7 +2262,7 @@ } ], "inputFile": "qprivateslots.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -2284,7 +2284,7 @@ } ], "inputFile": "qtbug-35657-gadget.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -2317,7 +2317,7 @@ } ], "inputFile": "related-metaobjects-in-gadget.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -2372,7 +2372,7 @@ } ], "inputFile": "related-metaobjects-in-namespaces.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -2832,7 +2832,7 @@ } ], "inputFile": "related-metaobjects-name-conflict.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -2871,7 +2871,7 @@ } ], "inputFile": "signal-with-default-arg.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -2899,7 +2899,7 @@ } ], "inputFile": "single-quote-digit-separator-n3781.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -2973,7 +2973,7 @@ } ], "inputFile": "slots-with-void-template.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -2991,7 +2991,7 @@ } ], "inputFile": "task192552.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -3021,7 +3021,7 @@ } ], "inputFile": "task234909.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -3184,7 +3184,7 @@ } ], "inputFile": "task240368.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -3202,7 +3202,7 @@ } ], "inputFile": "task87883.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -3281,7 +3281,7 @@ } ], "inputFile": "tech-preview.h", - "outputRevision": 68 + "outputRevision": 69 }, { "classes": [ @@ -3360,6 +3360,6 @@ } ], "inputFile": "trigraphs.h", - "outputRevision": 68 + "outputRevision": 69 } ] diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp index bd53f8e39ab..e2ea20a657a 100644 --- a/tests/auto/tools/moc/tst_moc.cpp +++ b/tests/auto/tools/moc/tst_moc.cpp @@ -2599,13 +2599,11 @@ public Q_SLOTS: void someSlot2(int) {} public: Q_INVOKABLE PrivateClass() {} -#ifdef QT_MOC_HAS_UINTDATA // access to private class' enums was fixed for Qt 6.9 enum SomeEnum { Value0, Value1, }; Q_ENUM(SomeEnum) -#endif }; void tst_Moc::privateClass()