diff options
Diffstat (limited to 'tests/auto/tools/moc')
-rw-r--r-- | tests/auto/tools/moc/allmocs_baseline_in.json | 2226 | ||||
-rw-r--r-- | tests/auto/tools/moc/fwdclass1.h (renamed from tests/auto/tools/moc/task189996.h) | 25 | ||||
-rw-r--r-- | tests/auto/tools/moc/fwdclass2.h | 38 | ||||
-rw-r--r-- | tests/auto/tools/moc/fwdclass3.h | 38 | ||||
-rw-r--r-- | tests/auto/tools/moc/moc.pro | 5 | ||||
-rw-r--r-- | tests/auto/tools/moc/moc_include.h | 74 | ||||
-rw-r--r-- | tests/auto/tools/moc/tst_moc.cpp | 64 |
7 files changed, 1316 insertions, 1154 deletions
diff --git a/tests/auto/tools/moc/allmocs_baseline_in.json b/tests/auto/tools/moc/allmocs_baseline_in.json index 8cb397190c..2a70a52587 100644 --- a/tests/auto/tools/moc/allmocs_baseline_in.json +++ b/tests/auto/tools/moc/allmocs_baseline_in.json @@ -2,68 +2,6 @@ { "classes": [ { - "className": "MyBooooooostishClass", - "qualifiedClassName": "MyBooooooostishClass", - "signals": [ - { - "access": "public", - "name": "mySignal", - "returnType": "void" - } - ], - "slots": [ - { - "access": "public", - "name": "mySlot", - "returnType": "void" - } - ], - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "no-keywords.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "Task87883", - "qualifiedClassName": "Task87883", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "task87883.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "IfdefedClass", - "qualifiedClassName": "IfdefedClass", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "c-comments.h", - "outputRevision": 67 - }, - { - "classes": [ - { "className": "BackslashNewlines", "qualifiedClassName": "BackslashNewlines", "slots": [ @@ -87,340 +25,8 @@ { "classes": [ { - "className": "OldStyleCast", - "qualifiedClassName": "OldStyleCast", - "slots": [ - { - "access": "public", - "name": "foo", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "type": "int" - }, - { - "type": "int*" - }, - { - "type": "const int*" - }, - { - "type": "volatile int*" - }, - { - "type": "const int*volatile*" - } - ], - "name": "bar", - "returnType": "int" - }, - { - "access": "public", - "arguments": [ - { - "type": "int" - }, - { - "type": "QObject*const" - } - ], - "name": "slot", - "returnType": "void" - } - ], - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "oldstyle-casts.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "SlotsWithVoidTemplateTest", - "qualifiedClassName": "SlotsWithVoidTemplateTest", - "signals": [ - { - "access": "public", - "arguments": [ - { - "type": "TestTemplate<void>" - } - ], - "name": "mySignal", - "returnType": "void" - }, - { - "access": "public", - "name": "myVoidSignal", - "returnType": "void" - }, - { - "access": "public", - "name": "myVoidSignal2", - "returnType": "void" - } - ], - "slots": [ - { - "access": "public", - "name": "dummySlot", - "returnType": "void" - }, - { - "access": "public", - "name": "dummySlot2", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "type": "TestTemplate<void>" - } - ], - "name": "anotherSlot", - "returnType": "void" - }, - { - "access": "public", - "name": "mySlot", - "returnType": "TestTemplate<void>" - } - ], - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "slots-with-void-template.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "InvokableBeforeReturnType", - "methods": [ - { - "access": "public", - "name": "foo", - "returnType": "const char*" - } - ], - "qualifiedClassName": "InvokableBeforeReturnType", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, - { - "className": "InvokableBeforeInline", - "methods": [ - { - "access": "public", - "name": "foo", - "returnType": "void" - }, - { - "access": "public", - "name": "bar", - "returnType": "void" - } - ], - "qualifiedClassName": "InvokableBeforeInline", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "qinvokable.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "Bar", - "enums": [ - { - "alias": "Flag", - "isClass": false, - "isFlag": true, - "name": "Flags", - "values": [ - "Read", - "Write" - ] - } - ], - "properties": [ - { - "constant": false, - "designable": true, - "final": false, - "name": "flags", - "read": "flags", - "scriptable": true, - "stored": true, - "type": "Flags", - "user": false, - "write": "setFlags" - } - ], - "qualifiedClassName": "Foo::Bar", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, - { - "className": "Baz", - "properties": [ - { - "constant": false, - "designable": true, - "final": false, - "name": "flags", - "read": "flags", - "scriptable": true, - "stored": true, - "type": "Foo::Bar::Flags", - "user": false, - "write": "setFlags" - }, - { - "constant": false, - "designable": true, - "final": false, - "name": "flagsList", - "read": "flagsList", - "scriptable": true, - "stored": true, - "type": "QList<Foo::Bar::Flags>", - "user": false, - "write": "setFlagsList" - } - ], - "qualifiedClassName": "Foo::Baz", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "namespaced-flags.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "Foo", - "qualifiedClassName": "BBB::Foo", - "signals": [ - { - "access": "public", - "arguments": [ - { - "type": "QList<QList<int> >" - } - ], - "name": "foo", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "type": "QList<QList<int> >" - } - ], - "name": "foo2", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "type": "QList< ::AAA::BaseA*>" - } - ], - "name": "bar", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "type": "QList< ::AAA::BaseA*>" - } - ], - "name": "bar2", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "type": "QList<const ::AAA::BaseA*>" - } - ], - "name": "bar3", - "returnType": "void" - } - ], - "superClasses": [ - { - "access": "public", - "name": "QObject" - }, - { - "access": "public", - "name": "::AAA::BaseA" - } - ] - } - ], - "inputFile": "trigraphs.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "classInfos": [ - { - "name": "Test", - "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\x53" - }, - { - "name": "Test2", - "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\123" - }, - { - "name": "Test3", - "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\nb" - } - ], - "className": "StringLiterals", - "qualifiedClassName": "StringLiterals", + "className": "IfdefedClass", + "qualifiedClassName": "IfdefedClass", "superClasses": [ { "access": "public", @@ -429,7 +35,7 @@ ] } ], - "inputFile": "escapes-in-string-literals.h", + "inputFile": "c-comments.h", "outputRevision": 67 }, { @@ -466,475 +72,6 @@ { "classes": [ { - "className": "TestQPrivateSlots", - "methods": [ - { - "access": "private", - "name": "method1", - "returnType": "void" - } - ], - "qualifiedClassName": "TestQPrivateSlots", - "slots": [ - { - "access": "private", - "name": "_q_privateslot", - "returnType": "void" - } - ], - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "qprivateslots.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "GadgetWithNoEnums", - "gadget": true, - "qualifiedClassName": "GadgetWithNoEnums" - }, - { - "className": "DerivedGadgetWithEnums", - "enums": [ - { - "isClass": false, - "isFlag": false, - "name": "FooEnum", - "values": [ - "FooValue" - ] - } - ], - "gadget": true, - "qualifiedClassName": "DerivedGadgetWithEnums", - "superClasses": [ - { - "access": "public", - "name": "GadgetWithNoEnums" - } - ] - } - ], - "inputFile": "gadgetwithnoenums.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "DirInIncludePath", - "interfaces": [ - [ - { - "className": "MyInterface", - "id": "\"MyInterface\"" - } - ] - ], - "qualifiedClassName": "DirInIncludePath", - "superClasses": [ - { - "access": "public", - "name": "QObject" - }, - { - "access": "public", - "name": "MyInterface" - } - ] - } - ], - "inputFile": "dir-in-include-path.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "SingleFunctionKeywordBeforeReturnType", - "qualifiedClassName": "SingleFunctionKeywordBeforeReturnType", - "signals": [ - { - "access": "public", - "name": "mySignal", - "returnType": "void" - } - ], - "slots": [ - { - "access": "public", - "name": "mySlot", - "returnType": "void" - } - ], - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, - { - "className": "SingleFunctionKeywordBeforeInline", - "qualifiedClassName": "SingleFunctionKeywordBeforeInline", - "signals": [ - { - "access": "public", - "name": "mySignal", - "returnType": "void" - } - ], - "slots": [ - { - "access": "public", - "name": "mySlot", - "returnType": "void" - } - ], - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, - { - "className": "SingleFunctionKeywordAfterInline", - "qualifiedClassName": "SingleFunctionKeywordAfterInline", - "signals": [ - { - "access": "public", - "name": "mySignal", - "returnType": "void" - } - ], - "slots": [ - { - "access": "public", - "name": "mySlot", - "returnType": "void" - } - ], - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "single_function_keyword.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "Task192552", - "qualifiedClassName": "Task192552", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "task192552.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "InlineSlotsWithThrowDeclaration", - "qualifiedClassName": "InlineSlotsWithThrowDeclaration", - "slots": [ - { - "access": "public", - "name": "a", - "returnType": "void" - }, - { - "access": "public", - "name": "b", - "returnType": "void" - }, - { - "access": "public", - "name": "c", - "returnType": "void" - }, - { - "access": "public", - "name": "d", - "returnType": "void" - }, - { - "access": "public", - "name": "e", - "returnType": "void" - } - ], - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "task189996.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "TestObject", - "qualifiedClassName": "NS_A::NS_B::TestObject", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, - { - "className": "TestMain", - "qualifiedClassName": "NS_A::NS_Main::TestMain", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "task234909.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "TypenameWithUnsigned", - "qualifiedClassName": "TypenameWithUnsigned", - "slots": [ - { - "access": "public", - "arguments": [ - { - "type": "uint" - } - ], - "name": "a", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "name": "u", - "type": "uint" - } - ], - "name": "b", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "type": "uint*" - } - ], - "name": "c", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "name": "p", - "type": "uint*" - } - ], - "name": "d", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "type": "uint&" - } - ], - "name": "e", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "name": "r", - "type": "uint&" - } - ], - "name": "f", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "type": "unsigned1" - } - ], - "name": "g", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "name": "u1", - "type": "unsigned1" - } - ], - "name": "h", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "type": "uint" - }, - { - "type": "unsigned1" - } - ], - "name": "i", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "type": "unsigned1" - }, - { - "type": "uint" - } - ], - "name": "j", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "type": "unsignedQImage" - } - ], - "name": "k", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "name": "uqi", - "type": "unsignedQImage" - } - ], - "name": "l", - "returnType": "void" - } - ], - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "task240368.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "PureVirtualSignalsTest", - "qualifiedClassName": "PureVirtualSignalsTest", - "signals": [ - { - "access": "public", - "name": "mySignal", - "returnType": "void" - }, - { - "access": "public", - "name": "myOtherSignal", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "name": "foo", - "type": "int" - } - ], - "name": "mySignal2", - "returnType": "void" - } - ], - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, - { - "className": "PureVirtualSignalsImpl", - "qualifiedClassName": "PureVirtualSignalsImpl", - "signals": [ - { - "access": "public", - "name": "mySignal", - "returnType": "void" - }, - { - "access": "public", - "arguments": [ - { - "name": "foo", - "type": "int" - } - ], - "name": "mySignal2", - "returnType": "void" - } - ], - "superClasses": [ - { - "access": "public", - "name": "PureVirtualSignalsTest" - } - ] - } - ], - "inputFile": "pure-virtual-signals.h", - "outputRevision": 67 - }, - { - "classes": [ - { "className": "CXX11Enums", "enums": [ { @@ -1101,102 +238,6 @@ { "classes": [ { - "className": "FinalTestClassQt", - "qualifiedClassName": "FinalTestClassQt", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, - { - "className": "ExportedFinalTestClassQt", - "qualifiedClassName": "ExportedFinalTestClassQt", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, - { - "className": "ExportedFinalTestClassQtX", - "qualifiedClassName": "ExportedFinalTestClassQtX", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, - { - "className": "FinalTestClassCpp11", - "qualifiedClassName": "FinalTestClassCpp11", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, - { - "className": "ExportedFinalTestClassCpp11", - "qualifiedClassName": "ExportedFinalTestClassCpp11", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, - { - "className": "ExportedFinalTestClassCpp11X", - "qualifiedClassName": "ExportedFinalTestClassCpp11X", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, - { - "className": "SealedTestClass", - "qualifiedClassName": "SealedTestClass", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, - { - "className": "ExportedSealedTestClass", - "qualifiedClassName": "ExportedSealedTestClass", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, - { - "className": "ExportedSealedTestClassX", - "qualifiedClassName": "ExportedSealedTestClassX", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "cxx11-final-classes.h", - "outputRevision": 67 - }, - { - "classes": [ - { "className": "ExplicitOverrideControlBase", "qualifiedClassName": "ExplicitOverrideControlBase", "slots": [ @@ -1491,6 +532,196 @@ { "classes": [ { + "className": "FinalTestClassQt", + "qualifiedClassName": "FinalTestClassQt", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "ExportedFinalTestClassQt", + "qualifiedClassName": "ExportedFinalTestClassQt", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "ExportedFinalTestClassQtX", + "qualifiedClassName": "ExportedFinalTestClassQtX", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "FinalTestClassCpp11", + "qualifiedClassName": "FinalTestClassCpp11", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "ExportedFinalTestClassCpp11", + "qualifiedClassName": "ExportedFinalTestClassCpp11", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "ExportedFinalTestClassCpp11X", + "qualifiedClassName": "ExportedFinalTestClassCpp11X", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "SealedTestClass", + "qualifiedClassName": "SealedTestClass", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "ExportedSealedTestClass", + "qualifiedClassName": "ExportedSealedTestClass", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "ExportedSealedTestClassX", + "qualifiedClassName": "ExportedSealedTestClassX", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "cxx11-final-classes.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "ClassInNamespace", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "GadEn", + "values": [ + "Value" + ] + } + ], + "gadget": true, + "qualifiedClassName": "CXX17Namespace::A::B::C::D::ClassInNamespace" + }, + { + "className": "D", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "NamEn", + "values": [ + "Value" + ] + } + ], + "gadget": true, + "qualifiedClassName": "CXX17Namespace::A::B::C::D" + } + ], + "inputFile": "cxx17-namespaces.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "DirInIncludePath", + "interfaces": [ + [ + { + "className": "MyInterface", + "id": "\"MyInterface\"" + } + ] + ], + "qualifiedClassName": "DirInIncludePath", + "superClasses": [ + { + "access": "public", + "name": "QObject" + }, + { + "access": "public", + "name": "MyInterface" + } + ] + } + ], + "inputFile": "dir-in-include-path.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "classInfos": [ + { + "name": "Test", + "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\x53" + }, + { + "name": "Test2", + "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\123" + }, + { + "name": "Test3", + "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\nb" + } + ], + "className": "StringLiterals", + "qualifiedClassName": "StringLiterals", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "escapes-in-string-literals.h", + "outputRevision": 67 + }, + { + "classes": [ + { "className": "ForwardDeclaredParamClass", "qualifiedClassName": "ForwardDeclaredParamClass", "signals": [ @@ -1691,6 +922,404 @@ { "classes": [ { + "className": "FunctionWithAttributes", + "qualifiedClassName": "FunctionWithAttributes", + "slots": [ + { + "access": "public", + "name": "test1", + "returnType": "void" + }, + { + "access": "public", + "name": "test2", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "function-with-attributes.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "GadgetWithNoEnums", + "gadget": true, + "qualifiedClassName": "GadgetWithNoEnums" + }, + { + "className": "DerivedGadgetWithEnums", + "enums": [ + { + "isClass": false, + "isFlag": false, + "name": "FooEnum", + "values": [ + "FooValue" + ] + } + ], + "gadget": true, + "qualifiedClassName": "DerivedGadgetWithEnums", + "superClasses": [ + { + "access": "public", + "name": "GadgetWithNoEnums" + } + ] + } + ], + "inputFile": "gadgetwithnoenums.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "BaseGadget", + "gadget": true, + "qualifiedClassName": "GrandParentGadget::BaseGadget" + }, + { + "className": "DerivedGadget", + "gadget": true, + "qualifiedClassName": "GrandParentGadget::DerivedGadget", + "superClasses": [ + { + "access": "public", + "name": "Derived" + } + ] + }, + { + "className": "CRTPDerivedGadget", + "gadget": true, + "qualifiedClassName": "GrandParentGadget::CRTPDerivedGadget", + "superClasses": [ + { + "access": "public", + "name": "CRTP<CRTPDerivedGadget>" + } + ] + } + ], + "inputFile": "grand-parent-gadget-class.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "TestFwdProperties", + "properties": [ + { + "constant": false, + "designable": true, + "final": false, + "name": "prop1", + "read": "getProp1", + "scriptable": true, + "stored": true, + "type": "FwdClass1", + "user": false, + "write": "setProp1" + }, + { + "constant": false, + "designable": true, + "final": false, + "name": "prop2", + "read": "getProp2", + "scriptable": true, + "stored": true, + "type": "FwdClass2", + "user": false, + "write": "setProp2" + }, + { + "constant": false, + "designable": true, + "final": false, + "name": "prop3", + "read": "getProp3", + "scriptable": true, + "stored": true, + "type": "FwdClass3", + "user": false, + "write": "setProp3" + } + ], + "qualifiedClassName": "TestFwdProperties", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "SomeRandomNamespace", + "gadget": true, + "qualifiedClassName": "SomeRandomNamespace" + } + ], + "inputFile": "moc_include.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "FooNamespace", + "enums": [ + { + "isClass": true, + "isFlag": false, + "name": "Enum1", + "values": [ + "Key1", + "Key2" + ] + } + ], + "gadget": true, + "qualifiedClassName": "FooNamespace" + }, + { + "className": "FooNestedNamespace", + "enums": [ + { + "isClass": true, + "isFlag": false, + "name": "Enum2", + "values": [ + "Key3", + "Key4" + ] + }, + { + "isClass": true, + "isFlag": false, + "name": "Enum3", + "values": [ + "Key5", + "Key6" + ] + } + ], + "gadget": true, + "qualifiedClassName": "FooNamespace::FooNestedNamespace" + }, + { + "className": "FooMoreNestedNamespace", + "enums": [ + { + "isClass": true, + "isFlag": false, + "name": "Enum4", + "values": [ + "Key7", + "Key8" + ] + } + ], + "gadget": true, + "qualifiedClassName": "FooNamespace::FooNestedNamespace::FooMoreNestedNamespace" + } + ], + "inputFile": "namespace.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "Bar", + "enums": [ + { + "alias": "Flag", + "isClass": false, + "isFlag": true, + "name": "Flags", + "values": [ + "Read", + "Write" + ] + } + ], + "properties": [ + { + "constant": false, + "designable": true, + "final": false, + "name": "flags", + "read": "flags", + "scriptable": true, + "stored": true, + "type": "Flags", + "user": false, + "write": "setFlags" + } + ], + "qualifiedClassName": "Foo::Bar", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "Baz", + "properties": [ + { + "constant": false, + "designable": true, + "final": false, + "name": "flags", + "read": "flags", + "scriptable": true, + "stored": true, + "type": "Foo::Bar::Flags", + "user": false, + "write": "setFlags" + }, + { + "constant": false, + "designable": true, + "final": false, + "name": "flagsList", + "read": "flagsList", + "scriptable": true, + "stored": true, + "type": "QVector<Foo::Bar::Flags>", + "user": false, + "write": "setFlagsList" + } + ], + "qualifiedClassName": "Foo::Baz", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "namespaced-flags.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "MyBooooooostishClass", + "qualifiedClassName": "MyBooooooostishClass", + "signals": [ + { + "access": "public", + "name": "mySignal", + "returnType": "void" + } + ], + "slots": [ + { + "access": "public", + "name": "mySlot", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "no-keywords.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "Derived", + "gadget": true, + "qualifiedClassName": "NonGadgetParent::Derived", + "superClasses": [ + { + "access": "public", + "name": "Base" + } + ] + } + ], + "inputFile": "non-gadget-parent-class.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "OldStyleCast", + "qualifiedClassName": "OldStyleCast", + "slots": [ + { + "access": "public", + "name": "foo", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "int" + }, + { + "type": "int*" + }, + { + "type": "const int*" + }, + { + "type": "volatile int*" + }, + { + "type": "const int*volatile*" + } + ], + "name": "bar", + "returnType": "int" + }, + { + "access": "public", + "arguments": [ + { + "type": "int" + }, + { + "type": "QObject*const" + } + ], + "name": "slot", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "oldstyle-casts.h", + "outputRevision": 67 + }, + { + "classes": [ + { "classInfos": [ { "name": "TestString", @@ -1890,17 +1519,44 @@ { "classes": [ { - "className": "FunctionWithAttributes", - "qualifiedClassName": "FunctionWithAttributes", - "slots": [ + "className": "TestPluginMetaData", + "qualifiedClassName": "TestPluginMetaData", + "superClasses": [ { "access": "public", - "name": "test1", + "name": "QObject" + } + ] + } + ], + "inputFile": "plugin_metadata.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "PureVirtualSignalsTest", + "qualifiedClassName": "PureVirtualSignalsTest", + "signals": [ + { + "access": "public", + "name": "mySignal", "returnType": "void" }, { "access": "public", - "name": "test2", + "name": "myOtherSignal", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "foo", + "type": "int" + } + ], + "name": "mySignal2", "returnType": "void" } ], @@ -1910,16 +1566,73 @@ "name": "QObject" } ] + }, + { + "className": "PureVirtualSignalsImpl", + "qualifiedClassName": "PureVirtualSignalsImpl", + "signals": [ + { + "access": "public", + "name": "mySignal", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "foo", + "type": "int" + } + ], + "name": "mySignal2", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "PureVirtualSignalsTest" + } + ] } ], - "inputFile": "function-with-attributes.h", + "inputFile": "pure-virtual-signals.h", "outputRevision": 67 }, { "classes": [ { - "className": "TestPluginMetaData", - "qualifiedClassName": "TestPluginMetaData", + "className": "InvokableBeforeReturnType", + "methods": [ + { + "access": "public", + "name": "foo", + "returnType": "const char*" + } + ], + "qualifiedClassName": "InvokableBeforeReturnType", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + }, + { + "className": "InvokableBeforeInline", + "methods": [ + { + "access": "public", + "name": "foo", + "returnType": "void" + }, + { + "access": "public", + "name": "bar", + "returnType": "void" + } + ], + "qualifiedClassName": "InvokableBeforeInline", "superClasses": [ { "access": "public", @@ -1928,24 +1641,28 @@ ] } ], - "inputFile": "plugin_metadata.h", + "inputFile": "qinvokable.h", "outputRevision": 67 }, { "classes": [ { - "className": "KDAB", - "enums": [ + "className": "TestQPrivateSlots", + "methods": [ { - "isClass": false, - "isFlag": false, - "name": "Salaries", - "values": [ - "Steve" - ] + "access": "private", + "name": "method1", + "returnType": "void" + } + ], + "qualifiedClassName": "TestQPrivateSlots", + "slots": [ + { + "access": "private", + "name": "_q_privateslot", + "returnType": "void" } ], - "qualifiedClassName": "KDAB", "superClasses": [ { "access": "public", @@ -1954,7 +1671,7 @@ ] } ], - "inputFile": "single-quote-digit-separator-n3781.h", + "inputFile": "qprivateslots.h", "outputRevision": 67 }, { @@ -1971,14 +1688,15 @@ ] } ], - "qualifiedClassName": "QTBUG_2151::A", - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - }, + "gadget": true, + "qualifiedClassName": "QTBUG_35657::A" + } + ], + "inputFile": "qtbug-35657-gadget.h", + "outputRevision": 67 + }, + { + "classes": [ { "className": "B", "properties": [ @@ -1994,7 +1712,7 @@ "user": false } ], - "qualifiedClassName": "QTBUG_2151::B", + "qualifiedClassName": "QTBUG_35657::B", "superClasses": [ { "access": "public", @@ -2003,7 +1721,7 @@ ] } ], - "inputFile": "related-metaobjects-in-namespaces.h", + "inputFile": "related-metaobjects-in-gadget.h", "outputRevision": 67 }, { @@ -2020,66 +1738,15 @@ ] } ], - "gadget": true, - "qualifiedClassName": "QTBUG_35657::A" - } - ], - "inputFile": "qtbug-35657-gadget.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "Derived", - "gadget": true, - "qualifiedClassName": "NonGadgetParent::Derived", - "superClasses": [ - { - "access": "public", - "name": "Base" - } - ] - } - ], - "inputFile": "non-gadget-parent-class.h", - "outputRevision": 67 - }, - { - "classes": [ - { - "className": "BaseGadget", - "gadget": true, - "qualifiedClassName": "GrandParentGadget::BaseGadget" - }, - { - "className": "DerivedGadget", - "gadget": true, - "qualifiedClassName": "GrandParentGadget::DerivedGadget", + "qualifiedClassName": "QTBUG_2151::A", "superClasses": [ { "access": "public", - "name": "Derived" + "name": "QObject" } ] }, { - "className": "CRTPDerivedGadget", - "gadget": true, - "qualifiedClassName": "GrandParentGadget::CRTPDerivedGadget", - "superClasses": [ - { - "access": "public", - "name": "CRTP<CRTPDerivedGadget>" - } - ] - } - ], - "inputFile": "grand-parent-gadget-class.h", - "outputRevision": 67 - }, - { - "classes": [ - { "className": "B", "properties": [ { @@ -2094,7 +1761,7 @@ "user": false } ], - "qualifiedClassName": "QTBUG_35657::B", + "qualifiedClassName": "QTBUG_2151::B", "superClasses": [ { "access": "public", @@ -2103,7 +1770,7 @@ ] } ], - "inputFile": "related-metaobjects-in-gadget.h", + "inputFile": "related-metaobjects-in-namespaces.h", "outputRevision": 67 }, { @@ -2520,100 +2187,449 @@ { "classes": [ { - "className": "FooNamespace", + "className": "KDAB", "enums": [ { - "isClass": true, + "isClass": false, "isFlag": false, - "name": "Enum1", + "name": "Salaries", "values": [ - "Key1", - "Key2" + "Steve" ] } ], - "gadget": true, - "qualifiedClassName": "FooNamespace" + "qualifiedClassName": "KDAB", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "single-quote-digit-separator-n3781.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "SingleFunctionKeywordBeforeReturnType", + "qualifiedClassName": "SingleFunctionKeywordBeforeReturnType", + "signals": [ + { + "access": "public", + "name": "mySignal", + "returnType": "void" + } + ], + "slots": [ + { + "access": "public", + "name": "mySlot", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] }, { - "className": "FooNestedNamespace", - "enums": [ + "className": "SingleFunctionKeywordBeforeInline", + "qualifiedClassName": "SingleFunctionKeywordBeforeInline", + "signals": [ { - "isClass": true, - "isFlag": false, - "name": "Enum2", - "values": [ - "Key3", - "Key4" - ] - }, + "access": "public", + "name": "mySignal", + "returnType": "void" + } + ], + "slots": [ { - "isClass": true, - "isFlag": false, - "name": "Enum3", - "values": [ - "Key5", - "Key6" - ] + "access": "public", + "name": "mySlot", + "returnType": "void" } ], - "gadget": true, - "qualifiedClassName": "FooNamespace::FooNestedNamespace" + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] }, { - "className": "FooMoreNestedNamespace", - "enums": [ + "className": "SingleFunctionKeywordAfterInline", + "qualifiedClassName": "SingleFunctionKeywordAfterInline", + "signals": [ { - "isClass": true, - "isFlag": false, - "name": "Enum4", - "values": [ - "Key7", - "Key8" - ] + "access": "public", + "name": "mySignal", + "returnType": "void" } ], - "gadget": true, - "qualifiedClassName": "FooNamespace::FooNestedNamespace::FooMoreNestedNamespace" + "slots": [ + { + "access": "public", + "name": "mySlot", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] } ], - "inputFile": "namespace.h", + "inputFile": "single_function_keyword.h", "outputRevision": 67 }, { "classes": [ { - "className": "ClassInNamespace", - "enums": [ + "className": "SlotsWithVoidTemplateTest", + "qualifiedClassName": "SlotsWithVoidTemplateTest", + "signals": [ { - "isClass": false, - "isFlag": false, - "name": "GadEn", - "values": [ - "Value" - ] + "access": "public", + "arguments": [ + { + "type": "TestTemplate<void>" + } + ], + "name": "mySignal", + "returnType": "void" + }, + { + "access": "public", + "name": "myVoidSignal", + "returnType": "void" + }, + { + "access": "public", + "name": "myVoidSignal2", + "returnType": "void" } ], - "gadget": true, - "qualifiedClassName": "CXX17Namespace::A::B::C::D::ClassInNamespace" + "slots": [ + { + "access": "public", + "name": "dummySlot", + "returnType": "void" + }, + { + "access": "public", + "name": "dummySlot2", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "TestTemplate<void>" + } + ], + "name": "anotherSlot", + "returnType": "void" + }, + { + "access": "public", + "name": "mySlot", + "returnType": "TestTemplate<void>" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "slots-with-void-template.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "Task192552", + "qualifiedClassName": "Task192552", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "task192552.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "TestObject", + "qualifiedClassName": "NS_A::NS_B::TestObject", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] }, { - "className": "D", - "enums": [ + "className": "TestMain", + "qualifiedClassName": "NS_A::NS_Main::TestMain", + "superClasses": [ { - "isClass": false, - "isFlag": false, - "name": "NamEn", - "values": [ - "Value" - ] + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "task234909.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "TypenameWithUnsigned", + "qualifiedClassName": "TypenameWithUnsigned", + "slots": [ + { + "access": "public", + "arguments": [ + { + "type": "uint" + } + ], + "name": "a", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "u", + "type": "uint" + } + ], + "name": "b", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "uint*" + } + ], + "name": "c", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "p", + "type": "uint*" + } + ], + "name": "d", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "uint&" + } + ], + "name": "e", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "r", + "type": "uint&" + } + ], + "name": "f", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "unsigned1" + } + ], + "name": "g", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "u1", + "type": "unsigned1" + } + ], + "name": "h", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "uint" + }, + { + "type": "unsigned1" + } + ], + "name": "i", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "unsigned1" + }, + { + "type": "uint" + } + ], + "name": "j", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "unsignedQImage" + } + ], + "name": "k", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "uqi", + "type": "unsignedQImage" + } + ], + "name": "l", + "returnType": "void" } ], - "gadget": true, - "qualifiedClassName": "CXX17Namespace::A::B::C::D" + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] } ], - "inputFile": "cxx17-namespaces.h", + "inputFile": "task240368.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "Task87883", + "qualifiedClassName": "Task87883", + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "task87883.h", + "outputRevision": 67 + }, + { + "classes": [ + { + "className": "Foo", + "qualifiedClassName": "BBB::Foo", + "signals": [ + { + "access": "public", + "arguments": [ + { + "type": "QVector<QVector<int> >" + } + ], + "name": "foo", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QVector<QVector<int> >" + } + ], + "name": "foo2", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QVector< ::AAA::BaseA*>" + } + ], + "name": "bar", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QVector< ::AAA::BaseA*>" + } + ], + "name": "bar2", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "type": "QVector<const ::AAA::BaseA*>" + } + ], + "name": "bar3", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + }, + { + "access": "public", + "name": "::AAA::BaseA" + } + ] + } + ], + "inputFile": "trigraphs.h", "outputRevision": 67 } ] diff --git a/tests/auto/tools/moc/task189996.h b/tests/auto/tools/moc/fwdclass1.h index f94a051b3a..a8457cca77 100644 --- a/tests/auto/tools/moc/task189996.h +++ b/tests/auto/tools/moc/fwdclass1.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2020 Olivier Goffart <ogoffart@woboq.com> ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. @@ -25,23 +25,14 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -// inline functions can have throw declarations -#ifndef TASK189996_H -#define TASK189996_H - -#include <QObject> +#ifdef FWDCLASS1_H +#error "This file can only be included once" +#endif +#define FWDCLASS1_H -class InlineSlotsWithThrowDeclaration : public QObject +class FwdClass1 { - Q_OBJECT - -public slots: - void a() throw() { } - void b() const throw() { } - void c() throw(); - void d() throw(int) { } - void e() const throw(int,double) { } +public: + int x; }; - -#endif diff --git a/tests/auto/tools/moc/fwdclass2.h b/tests/auto/tools/moc/fwdclass2.h new file mode 100644 index 0000000000..650da18116 --- /dev/null +++ b/tests/auto/tools/moc/fwdclass2.h @@ -0,0 +1,38 @@ +/**************************************************************************** +** +** Copyright (C) 2020 Olivier Goffart <ogoffart@woboq.com> +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifdef FWDCLASS2_H +#error "This file can only be included once" +#endif +#define FWDCLASS2_H + +class FwdClass2 +{ +public: + int x; +}; diff --git a/tests/auto/tools/moc/fwdclass3.h b/tests/auto/tools/moc/fwdclass3.h new file mode 100644 index 0000000000..080ac0340d --- /dev/null +++ b/tests/auto/tools/moc/fwdclass3.h @@ -0,0 +1,38 @@ +/**************************************************************************** +** +** Copyright (C) 2020 Olivier Goffart <ogoffart@woboq.com> +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifdef FWDCLASS3_H +#error "This file can only be included once" +#endif +#define FWDCLASS3_H + +class FwdClass3 +{ +public: + int x; +}; diff --git a/tests/auto/tools/moc/moc.pro b/tests/auto/tools/moc/moc.pro index 1794bafd2c..094c76227b 100644 --- a/tests/auto/tools/moc/moc.pro +++ b/tests/auto/tools/moc/moc.pro @@ -15,7 +15,7 @@ cross_compile: DEFINES += MOC_CROSS_COMPILED HEADERS += using-namespaces.h no-keywords.h task87883.h c-comments.h backslash-newlines.h oldstyle-casts.h \ slots-with-void-template.h qinvokable.h namespaced-flags.h trigraphs.h \ escapes-in-string-literals.h cstyle-enums.h qprivateslots.h gadgetwithnoenums.h \ - dir-in-include-path.h single_function_keyword.h task192552.h task189996.h \ + dir-in-include-path.h single_function_keyword.h task192552.h \ task234909.h task240368.h pure-virtual-signals.h cxx11-enums.h \ cxx11-final-classes.h \ cxx11-explicit-override-control.h \ @@ -30,7 +30,8 @@ HEADERS += using-namespaces.h no-keywords.h task87883.h c-comments.h backslash-n related-metaobjects-in-gadget.h \ related-metaobjects-name-conflict.h \ namespace.h cxx17-namespaces.h \ - cxx-attributes.h + cxx-attributes.h \ + moc_include.h # No platform specifics in the JSON files, so that we can compare them JSON_HEADERS = $$HEADERS diff --git a/tests/auto/tools/moc/moc_include.h b/tests/auto/tools/moc/moc_include.h new file mode 100644 index 0000000000..49b484a0c9 --- /dev/null +++ b/tests/auto/tools/moc/moc_include.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2020 Olivier Goffart <ogoffart@woboq.com> +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef MOC_INCLUDE_H +#define MOC_INCLUDE_H + +#include <QObject> + +class FwdClass1; +class FwdClass2; +class FwdClass3; + +Q_MOC_INCLUDE(fwdclass3.h) + +namespace SomeRandomNamespace { +Q_MOC_INCLUDE("fwdclass1.h") +Q_NAMESPACE +} + +class TestFwdProperties : public QObject +{ + Q_OBJECT + Q_PROPERTY(FwdClass1 prop1 WRITE setProp1 READ getProp1) + Q_PROPERTY(FwdClass2 prop2 WRITE setProp2 READ getProp2) + Q_PROPERTY(FwdClass3 prop3 WRITE setProp3 READ getProp3) +public: + ~TestFwdProperties(); + + void setProp1(const FwdClass1 &val); + void setProp2(const FwdClass2 &val); + void setProp3(const FwdClass3 &val); + const FwdClass1 &getProp1() { return *prop1; } + const FwdClass2 &getProp2() { return *prop2; } + const FwdClass3 &getProp3() { return *prop3; } + + QScopedPointer<FwdClass1> prop1; + QScopedPointer<FwdClass2> prop2; + QScopedPointer<FwdClass3> prop3; + + Q_MOC_INCLUDE( + \ + "fwdclass2.h" + ) + +}; + +Q_MOC_INCLUDE(<QString>) + +#endif // MOC_INCLUDE_H diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp index 6b202f79a6..2bad8f2e63 100644 --- a/tests/auto/tools/moc/tst_moc.cpp +++ b/tests/auto/tools/moc/tst_moc.cpp @@ -1,7 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. -** Copyright (C) 2013 Olivier Goffart <ogoffart@woboq.com> +** Copyright (C) 2020 Olivier Goffart <ogoffart@woboq.com> ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. @@ -27,8 +27,6 @@ ** ****************************************************************************/ - - #include <QtTest/QtTest> #include <stdio.h> #include <qobject.h> @@ -74,6 +72,11 @@ #include "cxx17-namespaces.h" #include "cxx-attributes.h" +#include "moc_include.h" +#include "fwdclass1.h" +#include "fwdclass2.h" +#include "fwdclass3.h" + #ifdef Q_MOC_RUN // check that moc can parse these constructs, they are being used in Windows winsock2.h header #define STRING_HASH_HASH(x) ("foo" ## x ## "bar") @@ -630,7 +633,6 @@ public: private slots: void initTestCase(); - void slotWithException() throw(MyStruct); void dontStripNamespaces(); void oldStyleCasts(); void warnOnExtraSignalSlotQualifiaction(); @@ -672,7 +674,6 @@ private slots: void templateGtGt(); void qprivateslots(); void qprivateproperties(); - void inlineSlotsWithThrowDeclaration(); void warnOnPropertyWithoutREAD(); void constructors(); void typenameWithUnsigned(); @@ -719,6 +720,7 @@ private slots: void cxx17Namespaces(); void cxxAttributes(); void mocJsonOutput(); + void mocInclude(); signals: void sigWithUnsignedArg(unsigned foo); @@ -781,12 +783,6 @@ void tst_Moc::initTestCase() #endif } -void tst_Moc::slotWithException() throw(MyStruct) -{ - // be happy - QVERIFY(true); -} - void tst_Moc::dontStripNamespaces() { Sender sender; @@ -821,7 +817,7 @@ void tst_Moc::oldStyleCasts() QStringList args; args << "-c" << "-x" << "c++" << "-Wold-style-cast" << "-I" << "." - << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-"; + << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-"; proc.start("gcc", args); QVERIFY(proc.waitForStarted()); proc.write(mocOut); @@ -891,7 +887,7 @@ void tst_Moc::inputFileNameWithDotsButNoExtension() QStringList args; args << "-c" << "-x" << "c++" << "-I" << ".." - << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-"; + << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-"; proc.start("gcc", args); QVERIFY(proc.waitForStarted()); proc.write(mocOut); @@ -1171,7 +1167,7 @@ void tst_Moc::ignoreOptionClashes() QStringList gccArgs; gccArgs << "-c" << "-x" << "c++" << "-I" << ".." << "-I" << qtIncludePath << "-I" << includeDir << "-o" << "/dev/null" - << "-fPIC" << "-std=c++11" << "-"; + << "-fPIC" << "-std=c++1z" << "-"; proc.start("gcc", gccArgs); QVERIFY(proc.waitForStarted()); proc.write(mocOut); @@ -1590,21 +1586,6 @@ void tst_Moc::qprivateproperties() } -#include "task189996.h" - -void InlineSlotsWithThrowDeclaration::c() throw() {} - -void tst_Moc::inlineSlotsWithThrowDeclaration() -{ - InlineSlotsWithThrowDeclaration tst; - const QMetaObject *mobj = tst.metaObject(); - QVERIFY(mobj->indexOfSlot("a()") != -1); - QVERIFY(mobj->indexOfSlot("b()") != -1); - QVERIFY(mobj->indexOfSlot("c()") != -1); - QVERIFY(mobj->indexOfSlot("d()") != -1); - QVERIFY(mobj->indexOfSlot("e()") != -1); -} - void tst_Moc::warnOnPropertyWithoutREAD() { #ifdef MOC_CROSS_COMPILED @@ -1866,7 +1847,7 @@ void tst_Moc::notifyError() QStringList args; args << "-c" << "-x" << "c++" << "-I" << "." - << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-"; + << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-"; proc.start("gcc", args); QVERIFY(proc.waitForStarted()); proc.write(mocOut); @@ -4025,6 +4006,29 @@ void tst_Moc::mocJsonOutput() QVERIFY2(actualOutput == expectedOutput, showPotentialDiff(actualOutput, expectedOutput).constData()); } +void TestFwdProperties::setProp1(const FwdClass1 &v) +{ + prop1.reset(new FwdClass1(v)); +} +void TestFwdProperties::setProp2(const FwdClass2 &v) +{ + prop2.reset(new FwdClass2(v)); +} +void TestFwdProperties::setProp3(const FwdClass3 &v) +{ + prop3.reset(new FwdClass3(v)); +} +TestFwdProperties::~TestFwdProperties() {} + +Q_DECLARE_METATYPE(FwdClass1); + +void tst_Moc::mocInclude() +{ + TestFwdProperties obj; + obj.setProperty("prop1", QVariant::fromValue(FwdClass1 { 45 })); + QCOMPARE(obj.prop1->x, 45); +} + QTEST_MAIN(tst_Moc) // the generated code must compile with QT_NO_KEYWORDS |