summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabian Kosmale <[email protected]>2024-07-31 11:57:46 +0200
committerFabian Kosmale <[email protected]>2024-08-02 22:35:21 +0200
commit1d4533bd5fac54cb5555f03ff08e9085fa533c16 (patch)
treee2becf8de75d885b56bd4df41a36ad05984e37d3
parent55f41eb6732d5577eacaf181d5c092c3e15a2b4e (diff)
moc: add line number for class definition to JSON output
Amend moc's JSON output with line information for the classes we find. Task-number: QTBUG-119143 Pick-to: 6.8 Change-Id: I821f0c30a56ed992cb9c6173f1e28ace1f26e9cf Reviewed-by: Olivier De Cannière <[email protected]> Reviewed-by: Semih Yavuz <[email protected]>
-rw-r--r--src/tools/moc/moc.cpp3
-rw-r--r--src/tools/moc/moc.h1
-rw-r--r--tests/auto/cmake/test_qt_extract_metatypes/test_qt_extract_metatypes_project/testdata/qt6metatypetest_metatypesQ_OBJECT.json1
-rw-r--r--tests/auto/cmake/test_qt_extract_metatypes/test_qt_extract_metatypes_project/testdata/qt6metatypetest_metatypesQ_OBJECTandQ_PROPERTY.json1
-rw-r--r--tests/auto/tools/moc/allmocs_baseline_in.json90
5 files changed, 96 insertions, 0 deletions
diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp
index 3cbe331f143..184b7574288 100644
--- a/src/tools/moc/moc.cpp
+++ b/src/tools/moc/moc.cpp
@@ -78,6 +78,7 @@ bool Moc::parseClassHead(ClassDef *def)
}
}
def->classname = name;
+ def->lineNumber = symbol().lineNum;
if (test(IDENTIFIER)) {
const QByteArray lex = lexem();
@@ -691,6 +692,7 @@ void Moc::parse()
} else if (!test(SEMIC)) {
NamespaceDef def;
def.classname = nsName;
+ def.lineNumber = symbol().lineNum;
def.doGenerate = currentFilenames.size() <= 1;
next(LBRACE);
@@ -2003,6 +2005,7 @@ QJsonObject ClassDef::toJson() const
QJsonObject cls;
cls["className"_L1] = QString::fromUtf8(classname.constData());
cls["qualifiedClassName"_L1] = QString::fromUtf8(qualified.constData());
+ cls["lineNumber"_L1] = lineNumber;
QJsonArray classInfos;
for (const auto &info: std::as_const(classInfoList)) {
diff --git a/src/tools/moc/moc.h b/src/tools/moc/moc.h
index c1759fb0a3e..2680264aeaa 100644
--- a/src/tools/moc/moc.h
+++ b/src/tools/moc/moc.h
@@ -153,6 +153,7 @@ struct BaseDef {
QMap<QByteArray, QByteArray> flagAliases;
qsizetype begin = 0;
qsizetype end = 0;
+ qsizetype lineNumber = 0;
};
struct SuperClass {
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 9393eda2dfc..37322f02ee9 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
@@ -3,6 +3,7 @@
"classes": [
{
"className": "MetaType",
+ "lineNumber": 7,
"object": true,
"qualifiedClassName": "MetaType",
"superClasses": [
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 f6a901952d9..f53bc2890ab 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
@@ -3,6 +3,7 @@
"classes": [
{
"className": "MetaType",
+ "lineNumber": 8,
"object": true,
"properties": [
{
diff --git a/tests/auto/tools/moc/allmocs_baseline_in.json b/tests/auto/tools/moc/allmocs_baseline_in.json
index f82500eda44..9b82f8ebe3f 100644
--- a/tests/auto/tools/moc/allmocs_baseline_in.json
+++ b/tests/auto/tools/moc/allmocs_baseline_in.json
@@ -3,6 +3,7 @@
"classes": [
{
"className": "BackslashNewlines",
+ "lineNumber": 16,
"object": true,
"qualifiedClassName": "BackslashNewlines",
"slots": [
@@ -27,6 +28,7 @@
"classes": [
{
"className": "IfdefedClass",
+ "lineNumber": 13,
"object": true,
"qualifiedClassName": "IfdefedClass",
"superClasses": [
@@ -65,6 +67,7 @@
}
],
"gadget": true,
+ "lineNumber": 8,
"qualifiedClassName": "CStyleEnums"
}
],
@@ -171,6 +174,7 @@
}
],
"gadget": true,
+ "lineNumber": 8,
"qualifiedClassName": "CXX11Enums"
},
{
@@ -236,6 +240,7 @@
}
],
"gadget": true,
+ "lineNumber": 36,
"qualifiedClassName": "CXX11Enums2"
},
{
@@ -288,6 +293,7 @@
]
}
],
+ "lineNumber": 50,
"object": true,
"qualifiedClassName": "CXX11Enums3",
"superClasses": [
@@ -305,6 +311,7 @@
"classes": [
{
"className": "ExplicitOverrideControlBase",
+ "lineNumber": 17,
"object": true,
"qualifiedClassName": "ExplicitOverrideControlBase",
"slots": [
@@ -338,6 +345,7 @@
},
{
"className": "ExplicitOverrideControlFinalQt",
+ "lineNumber": 39,
"object": true,
"qualifiedClassName": "ExplicitOverrideControlFinalQt",
"slots": [
@@ -371,6 +379,7 @@
},
{
"className": "ExplicitOverrideControlFinalCxx11",
+ "lineNumber": 61,
"object": true,
"qualifiedClassName": "ExplicitOverrideControlFinalCxx11",
"slots": [
@@ -404,6 +413,7 @@
},
{
"className": "ExplicitOverrideControlSealed",
+ "lineNumber": 83,
"object": true,
"qualifiedClassName": "ExplicitOverrideControlSealed",
"slots": [
@@ -437,6 +447,7 @@
},
{
"className": "ExplicitOverrideControlOverrideQt",
+ "lineNumber": 105,
"object": true,
"qualifiedClassName": "ExplicitOverrideControlOverrideQt",
"slots": [
@@ -470,6 +481,7 @@
},
{
"className": "ExplicitOverrideControlOverrideCxx11",
+ "lineNumber": 127,
"object": true,
"qualifiedClassName": "ExplicitOverrideControlOverrideCxx11",
"slots": [
@@ -503,6 +515,7 @@
},
{
"className": "ExplicitOverrideControlFinalQtOverrideQt",
+ "lineNumber": 149,
"object": true,
"qualifiedClassName": "ExplicitOverrideControlFinalQtOverrideQt",
"slots": [
@@ -536,6 +549,7 @@
},
{
"className": "ExplicitOverrideControlFinalCxx11OverrideCxx11",
+ "lineNumber": 171,
"object": true,
"qualifiedClassName": "ExplicitOverrideControlFinalCxx11OverrideCxx11",
"slots": [
@@ -569,6 +583,7 @@
},
{
"className": "ExplicitOverrideControlSealedOverride",
+ "lineNumber": 193,
"object": true,
"qualifiedClassName": "ExplicitOverrideControlSealedOverride",
"slots": [
@@ -608,6 +623,7 @@
"classes": [
{
"className": "FinalTestClassQt",
+ "lineNumber": 15,
"object": true,
"qualifiedClassName": "FinalTestClassQt",
"superClasses": [
@@ -619,6 +635,7 @@
},
{
"className": "ExportedFinalTestClassQt",
+ "lineNumber": 24,
"object": true,
"qualifiedClassName": "ExportedFinalTestClassQt",
"superClasses": [
@@ -630,6 +647,7 @@
},
{
"className": "ExportedFinalTestClassQtX",
+ "lineNumber": 32,
"object": true,
"qualifiedClassName": "ExportedFinalTestClassQtX",
"superClasses": [
@@ -641,6 +659,7 @@
},
{
"className": "FinalTestClassCpp11",
+ "lineNumber": 40,
"object": true,
"qualifiedClassName": "FinalTestClassCpp11",
"superClasses": [
@@ -652,6 +671,7 @@
},
{
"className": "ExportedFinalTestClassCpp11",
+ "lineNumber": 48,
"object": true,
"qualifiedClassName": "ExportedFinalTestClassCpp11",
"superClasses": [
@@ -663,6 +683,7 @@
},
{
"className": "ExportedFinalTestClassCpp11X",
+ "lineNumber": 56,
"object": true,
"qualifiedClassName": "ExportedFinalTestClassCpp11X",
"superClasses": [
@@ -674,6 +695,7 @@
},
{
"className": "SealedTestClass",
+ "lineNumber": 64,
"object": true,
"qualifiedClassName": "SealedTestClass",
"superClasses": [
@@ -685,6 +707,7 @@
},
{
"className": "ExportedSealedTestClass",
+ "lineNumber": 72,
"object": true,
"qualifiedClassName": "ExportedSealedTestClass",
"superClasses": [
@@ -696,6 +719,7 @@
},
{
"className": "ExportedSealedTestClassX",
+ "lineNumber": 80,
"object": true,
"qualifiedClassName": "ExportedSealedTestClassX",
"superClasses": [
@@ -713,6 +737,7 @@
"classes": [
{
"className": "CXX11TrailingReturn",
+ "lineNumber": 8,
"object": true,
"qualifiedClassName": "CXX11TrailingReturn",
"signals": [
@@ -797,6 +822,7 @@
}
],
"gadget": true,
+ "lineNumber": 19,
"qualifiedClassName": "CXX17Namespace::A::B::C::D::ClassInNamespace"
},
{
@@ -811,6 +837,7 @@
]
}
],
+ "lineNumber": 10,
"namespace": true,
"qualifiedClassName": "CXX17Namespace::A::B::C::D"
}
@@ -830,6 +857,7 @@
}
]
],
+ "lineNumber": 8,
"object": true,
"qualifiedClassName": "DirInIncludePath",
"superClasses": [
@@ -851,6 +879,7 @@
"classes": [
{
"className": "Foo",
+ "lineNumber": 8,
"object": true,
"qualifiedClassName": "Foo",
"superClasses": [
@@ -882,6 +911,7 @@
}
],
"className": "StringLiterals",
+ "lineNumber": 8,
"object": true,
"qualifiedClassName": "StringLiterals",
"superClasses": [
@@ -899,6 +929,7 @@
"classes": [
{
"className": "ForwardDeclaredParamClass",
+ "lineNumber": 20,
"object": true,
"qualifiedClassName": "ForwardDeclaredParamClass",
"signals": [
@@ -1100,6 +1131,7 @@
"classes": [
{
"className": "FunctionWithAttributes",
+ "lineNumber": 22,
"object": true,
"qualifiedClassName": "FunctionWithAttributes",
"slots": [
@@ -1130,6 +1162,7 @@
{
"className": "GadgetWithNoEnums",
"gadget": true,
+ "lineNumber": 8,
"qualifiedClassName": "GadgetWithNoEnums"
},
{
@@ -1145,6 +1178,7 @@
}
],
"gadget": true,
+ "lineNumber": 17,
"qualifiedClassName": "DerivedGadgetWithEnums",
"superClasses": [
{
@@ -1162,11 +1196,13 @@
{
"className": "BaseGadget",
"gadget": true,
+ "lineNumber": 11,
"qualifiedClassName": "GrandParentGadget::BaseGadget"
},
{
"className": "DerivedGadget",
"gadget": true,
+ "lineNumber": 13,
"qualifiedClassName": "GrandParentGadget::DerivedGadget",
"superClasses": [
{
@@ -1178,6 +1214,7 @@
{
"className": "CRTPDerivedGadget",
"gadget": true,
+ "lineNumber": 15,
"qualifiedClassName": "GrandParentGadget::CRTPDerivedGadget",
"superClasses": [
{
@@ -1194,6 +1231,7 @@
"classes": [
{
"className": "TestFwdProperties",
+ "lineNumber": 20,
"object": true,
"properties": [
{
@@ -1249,6 +1287,7 @@
},
{
"className": "SomeRandomNamespace",
+ "lineNumber": 15,
"namespace": true,
"qualifiedClassName": "SomeRandomNamespace"
}
@@ -1271,6 +1310,7 @@
]
}
],
+ "lineNumber": 12,
"namespace": true,
"qualifiedClassName": "FooNamespace"
},
@@ -1296,6 +1336,7 @@
]
}
],
+ "lineNumber": 20,
"namespace": true,
"qualifiedClassName": "FooNamespace::FooNestedNamespace"
},
@@ -1312,6 +1353,7 @@
]
}
],
+ "lineNumber": 41,
"namespace": true,
"qualifiedClassName": "FooNamespace::FooNestedNamespace::FooMoreNestedNamespace"
}
@@ -1323,6 +1365,7 @@
"classes": [
{
"className": "Base",
+ "lineNumber": 10,
"object": true,
"qualifiedClassName": "QTBUG_101141::Base",
"superClasses": [
@@ -1334,6 +1377,7 @@
},
{
"className": "Derived",
+ "lineNumber": 14,
"object": true,
"qualifiedClassName": "QTBUG_101141::Derived",
"superClasses": [
@@ -1364,6 +1408,7 @@
]
}
],
+ "lineNumber": 9,
"object": true,
"properties": [
{
@@ -1391,6 +1436,7 @@
},
{
"className": "Baz",
+ "lineNumber": 27,
"object": true,
"properties": [
{
@@ -1438,6 +1484,7 @@
"classes": [
{
"className": "MyBooooooostishClass",
+ "lineNumber": 34,
"object": true,
"qualifiedClassName": "MyBooooooostishClass",
"signals": [
@@ -1470,6 +1517,7 @@
{
"className": "Derived",
"gadget": true,
+ "lineNumber": 12,
"qualifiedClassName": "NonGadgetParent::Derived",
"superClasses": [
{
@@ -1486,6 +1534,7 @@
"classes": [
{
"className": "OldStyleCast",
+ "lineNumber": 8,
"object": true,
"qualifiedClassName": "OldStyleCast",
"slots": [
@@ -1559,6 +1608,7 @@
}
],
"className": "ParseDefine",
+ "lineNumber": 53,
"object": true,
"qualifiedClassName": "PD::ParseDefine",
"signals": [
@@ -1745,6 +1795,7 @@
"classes": [
{
"className": "TestPluginMetaData",
+ "lineNumber": 9,
"object": true,
"qualifiedClassName": "TestPluginMetaData",
"superClasses": [
@@ -1762,6 +1813,7 @@
"classes": [
{
"className": "TestPointeeCanBeIncomplete",
+ "lineNumber": 14,
"object": true,
"qualifiedClassName": "TestPointeeCanBeIncomplete",
"slots": [
@@ -1851,6 +1903,7 @@
"classes": [
{
"className": "PureVirtualSignalsTest",
+ "lineNumber": 8,
"object": true,
"qualifiedClassName": "PureVirtualSignalsTest",
"signals": [
@@ -1885,6 +1938,7 @@
},
{
"className": "PureVirtualSignalsImpl",
+ "lineNumber": 18,
"object": true,
"qualifiedClassName": "PureVirtualSignalsImpl",
"signals": [
@@ -1920,6 +1974,7 @@
"classes": [
{
"className": "InvokableBeforeReturnType",
+ "lineNumber": 9,
"methods": [
{
"access": "public",
@@ -1938,6 +1993,7 @@
},
{
"className": "InvokableBeforeInline",
+ "lineNumber": 16,
"methods": [
{
"access": "public",
@@ -1967,6 +2023,7 @@
"classes": [
{
"className": "TestQPrivateSlots",
+ "lineNumber": 14,
"methods": [
{
"access": "private",
@@ -2009,6 +2066,7 @@
}
],
"gadget": true,
+ "lineNumber": 10,
"qualifiedClassName": "QTBUG_35657::A"
}
],
@@ -2019,6 +2077,7 @@
"classes": [
{
"className": "B",
+ "lineNumber": 11,
"object": true,
"properties": [
{
@@ -2061,6 +2120,7 @@
]
}
],
+ "lineNumber": 10,
"object": true,
"qualifiedClassName": "QTBUG_2151::A",
"superClasses": [
@@ -2072,6 +2132,7 @@
},
{
"className": "B",
+ "lineNumber": 17,
"object": true,
"properties": [
{
@@ -2115,6 +2176,7 @@
}
],
"gadget": true,
+ "lineNumber": 48,
"qualifiedClassName": "Unsused::Gadget"
},
{
@@ -2129,6 +2191,7 @@
]
}
],
+ "lineNumber": 48,
"object": true,
"qualifiedClassName": "Unsused::Object",
"superClasses": [
@@ -2151,6 +2214,7 @@
}
],
"gadget": true,
+ "lineNumber": 53,
"qualifiedClassName": "NS1::Nested::Gadget"
},
{
@@ -2165,6 +2229,7 @@
]
}
],
+ "lineNumber": 53,
"object": true,
"qualifiedClassName": "NS1::Nested::Object",
"superClasses": [
@@ -2187,6 +2252,7 @@
}
],
"gadget": true,
+ "lineNumber": 57,
"qualifiedClassName": "NS1::NestedUnsused::Gadget"
},
{
@@ -2201,6 +2267,7 @@
]
}
],
+ "lineNumber": 57,
"object": true,
"qualifiedClassName": "NS1::NestedUnsused::Object",
"superClasses": [
@@ -2223,6 +2290,7 @@
}
],
"gadget": true,
+ "lineNumber": 60,
"qualifiedClassName": "NS1::Gadget"
},
{
@@ -2237,6 +2305,7 @@
]
}
],
+ "lineNumber": 60,
"object": true,
"qualifiedClassName": "NS1::Object",
"superClasses": [
@@ -2248,6 +2317,7 @@
},
{
"className": "DependingObject",
+ "lineNumber": 61,
"object": true,
"properties": [
{
@@ -2287,6 +2357,7 @@
},
{
"className": "DependingNestedGadget",
+ "lineNumber": 61,
"object": true,
"properties": [
{
@@ -2313,6 +2384,7 @@
},
{
"className": "DependingNestedObject",
+ "lineNumber": 61,
"object": true,
"properties": [
{
@@ -2350,6 +2422,7 @@
}
],
"gadget": true,
+ "lineNumber": 67,
"qualifiedClassName": "NS2::Nested::Gadget"
},
{
@@ -2364,6 +2437,7 @@
]
}
],
+ "lineNumber": 67,
"object": true,
"qualifiedClassName": "NS2::Nested::Object",
"superClasses": [
@@ -2386,6 +2460,7 @@
}
],
"gadget": true,
+ "lineNumber": 71,
"qualifiedClassName": "NS2::NestedUnsused::Gadget"
},
{
@@ -2400,6 +2475,7 @@
]
}
],
+ "lineNumber": 71,
"object": true,
"qualifiedClassName": "NS2::NestedUnsused::Object",
"superClasses": [
@@ -2422,6 +2498,7 @@
}
],
"gadget": true,
+ "lineNumber": 74,
"qualifiedClassName": "NS2::Gadget"
},
{
@@ -2436,6 +2513,7 @@
]
}
],
+ "lineNumber": 74,
"object": true,
"qualifiedClassName": "NS2::Object",
"superClasses": [
@@ -2447,6 +2525,7 @@
},
{
"className": "DependingObject",
+ "lineNumber": 75,
"object": true,
"properties": [
{
@@ -2486,6 +2565,7 @@
},
{
"className": "DependingNestedGadget",
+ "lineNumber": 75,
"object": true,
"properties": [
{
@@ -2512,6 +2592,7 @@
},
{
"className": "DependingNestedObject",
+ "lineNumber": 75,
"object": true,
"properties": [
{
@@ -2544,6 +2625,7 @@
"classes": [
{
"className": "SignalWithDefaultArg",
+ "lineNumber": 9,
"object": true,
"qualifiedClassName": "SignalWithDefaultArg",
"signals": [
@@ -2590,6 +2672,7 @@
]
}
],
+ "lineNumber": 9,
"object": true,
"qualifiedClassName": "KDAB",
"superClasses": [
@@ -2607,6 +2690,7 @@
"classes": [
{
"className": "SlotsWithVoidTemplateTest",
+ "lineNumber": 14,
"object": true,
"qualifiedClassName": "SlotsWithVoidTemplateTest",
"signals": [
@@ -2673,6 +2757,7 @@
"classes": [
{
"className": "Task192552",
+ "lineNumber": 13,
"object": true,
"qualifiedClassName": "Task192552",
"superClasses": [
@@ -2690,6 +2775,7 @@
"classes": [
{
"className": "TestObject",
+ "lineNumber": 16,
"object": true,
"qualifiedClassName": "NS_A::NS_B::TestObject",
"superClasses": [
@@ -2701,6 +2787,7 @@
},
{
"className": "TestMain",
+ "lineNumber": 30,
"object": true,
"qualifiedClassName": "NS_A::NS_Main::TestMain",
"superClasses": [
@@ -2718,6 +2805,7 @@
"classes": [
{
"className": "TypenameWithUnsigned",
+ "lineNumber": 13,
"object": true,
"qualifiedClassName": "TypenameWithUnsigned",
"slots": [
@@ -2868,6 +2956,7 @@
"classes": [
{
"className": "Task87883",
+ "lineNumber": 16,
"object": true,
"qualifiedClassName": "Task87883",
"superClasses": [
@@ -2885,6 +2974,7 @@
"classes": [
{
"className": "Foo",
+ "lineNumber": 14,
"object": true,
"qualifiedClassName": "BBB::Foo",
"signals": [