aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qmltyperegistrar/qmltyperegistrar.cpp12
-rw-r--r--src/qmltyperegistrar/qmltypesclassdescription.cpp2
-rw-r--r--src/qmltyperegistrar/qmltypesclassdescription.h1
-rw-r--r--src/qmltyperegistrar/qmltypescreator.cpp2
-rw-r--r--tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp7
-rw-r--r--tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h1
6 files changed, 22 insertions, 3 deletions
diff --git a/src/qmltyperegistrar/qmltyperegistrar.cpp b/src/qmltyperegistrar/qmltyperegistrar.cpp
index 282fa9251b..9f5553b880 100644
--- a/src/qmltyperegistrar/qmltyperegistrar.cpp
+++ b/src/qmltyperegistrar/qmltyperegistrar.cpp
@@ -299,14 +299,16 @@ int main(int argc, char **argv)
}
auto processMetaObject = [&](const QJsonObject &metaObject) {
+ const QString include = metaObject[QLatin1String("inputFile")].toString();
const QJsonArray classes = metaObject[QLatin1String("classes")].toArray();
for (const auto &cls : classes) {
QJsonObject classDef = cls.toObject();
+ classDef.insert(QLatin1String("inputFile"), include);
+
switch (qmlTypeRegistrationMode(classDef)) {
case NamespaceRegistration:
case GadgetRegistration:
case ObjectRegistration: {
- const QString include = metaObject[QLatin1String("inputFile")].toString();
if (!include.endsWith(QLatin1String(".h"))
&& !include.endsWith(QLatin1String(".hpp"))
&& !include.endsWith(QLatin1String(".hxx"))
@@ -433,9 +435,13 @@ int main(int argc, char **argv)
continue;
}
+ const QString include = metaObject[QLatin1String("inputFile")].toString();
const QJsonArray classes = metaObject[QLatin1String("classes")].toArray();
- for (const auto &cls : classes)
- foreignTypes.append(cls.toObject());
+ for (const auto &cls : classes) {
+ QJsonObject classDef = cls.toObject();
+ classDef.insert(QLatin1String("inputFile"), include);
+ foreignTypes.append(classDef);
+ }
}
}
}
diff --git a/src/qmltyperegistrar/qmltypesclassdescription.cpp b/src/qmltyperegistrar/qmltypesclassdescription.cpp
index 3442dc9d64..c63879f4d6 100644
--- a/src/qmltyperegistrar/qmltypesclassdescription.cpp
+++ b/src/qmltyperegistrar/qmltypesclassdescription.cpp
@@ -62,6 +62,8 @@ void QmlTypesClassDescription::collect(const QJsonObject *classDef,
const QVector<QJsonObject> &foreign,
CollectMode mode)
{
+ if (file.isEmpty())
+ file = classDef->value(QLatin1String("inputFile")).toString();
const auto classInfos = classDef->value(QLatin1String("classInfos")).toArray();
for (const QJsonValue &classInfo : classInfos) {
const QJsonObject obj = classInfo.toObject();
diff --git a/src/qmltyperegistrar/qmltypesclassdescription.h b/src/qmltyperegistrar/qmltypesclassdescription.h
index d468612beb..32313a490d 100644
--- a/src/qmltyperegistrar/qmltypesclassdescription.h
+++ b/src/qmltyperegistrar/qmltypesclassdescription.h
@@ -37,6 +37,7 @@
struct QmlTypesClassDescription
{
const QJsonObject *resolvedClass = nullptr;
+ QString file;
QString elementName;
QString defaultProp;
QString superClass;
diff --git a/src/qmltyperegistrar/qmltypescreator.cpp b/src/qmltyperegistrar/qmltypescreator.cpp
index 292841541b..26261795c7 100644
--- a/src/qmltyperegistrar/qmltypescreator.cpp
+++ b/src/qmltyperegistrar/qmltypescreator.cpp
@@ -45,6 +45,8 @@ static QString enquote(const QString &string)
void QmlTypesCreator::writeClassProperties(const QmlTypesClassDescription &collector)
{
+ if (!collector.file.isEmpty())
+ m_qml.writeScriptBinding(QLatin1String("file"), enquote(collector.file));
m_qml.writeScriptBinding(
QLatin1String("name"),
enquote(collector.resolvedClass->value(
diff --git a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp
index 1aeca50653..8bdee2f937 100644
--- a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp
+++ b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp
@@ -51,4 +51,11 @@ void tst_qmltyperegistrar::qmltypesHasHppClassAndNoext()
QVERIFY(qmltypesData.contains("Noext"));
}
+void tst_qmltyperegistrar::qmltypesHasFileNames()
+{
+ QVERIFY(qmltypesData.contains("file: \"hppheader.hpp\""));
+ QVERIFY(qmltypesData.contains("file: \"noextheader\""));
+ QVERIFY(qmltypesData.contains("file: \"tst_qmltyperegistrar.h\""));
+}
+
QTEST_MAIN(tst_qmltyperegistrar)
diff --git a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h
index cee88fde7b..37d49efa40 100644
--- a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h
+++ b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h
@@ -47,6 +47,7 @@ private slots:
void initTestCase();
void qmltypesHasForeign();
void qmltypesHasHppClassAndNoext();
+ void qmltypesHasFileNames();
private:
QByteArray qmltypesData;