aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/qml/qqmltypeloaderqmldircontent.cpp1
-rw-r--r--src/qml/qmldirparser/qqmldirparser.cpp23
-rw-r--r--src/qml/qmldirparser/qqmldirparser_p.h6
-rw-r--r--tests/auto/qml/qqmldirparser/tst_qqmldirparser.cpp3
4 files changed, 17 insertions, 16 deletions
diff --git a/src/qml/qml/qqmltypeloaderqmldircontent.cpp b/src/qml/qml/qqmltypeloaderqmldircontent.cpp
index 8e983db756..c4e6d86f0d 100644
--- a/src/qml/qml/qqmltypeloaderqmldircontent.cpp
+++ b/src/qml/qml/qqmltypeloaderqmldircontent.cpp
@@ -76,6 +76,7 @@ void QQmlTypeLoaderQmldirContent::setContent(const QString &location, const QStr
{
m_hasContent = true;
m_location = location;
+ m_parser.clear();
m_parser.parse(content);
}
diff --git a/src/qml/qmldirparser/qqmldirparser.cpp b/src/qml/qmldirparser/qqmldirparser.cpp
index 5bf33d3602..047323a3d4 100644
--- a/src/qml/qmldirparser/qqmldirparser.cpp
+++ b/src/qml/qmldirparser/qqmldirparser.cpp
@@ -73,12 +73,18 @@ static bool parseVersion(const QString &str, int *major, int *minor)
return false;
}
-QQmlDirParser::QQmlDirParser() : _designerSupported(false)
-{
-}
-
-QQmlDirParser::~QQmlDirParser()
+void QQmlDirParser::clear()
{
+ _errors.clear();
+ _typeNamespace.clear();
+ _components.clear();
+ _dependencies.clear();
+ _imports.clear();
+ _scripts.clear();
+ _plugins.clear();
+ _designerSupported = false;
+ _typeInfos.clear();
+ _className.clear();
}
inline static void scanSpace(const QChar *&ch) {
@@ -101,13 +107,6 @@ inline static void scanWord(const QChar *&ch) {
*/
bool QQmlDirParser::parse(const QString &source)
{
- _errors.clear();
- _plugins.clear();
- _components.clear();
- _scripts.clear();
- _designerSupported = false;
- _className.clear();
-
quint16 lineNumber = 0;
bool firstLine = true;
diff --git a/src/qml/qmldirparser/qqmldirparser_p.h b/src/qml/qmldirparser/qqmldirparser_p.h
index 8159349173..9fdeadfb0e 100644
--- a/src/qml/qmldirparser/qqmldirparser_p.h
+++ b/src/qml/qmldirparser/qqmldirparser_p.h
@@ -64,9 +64,7 @@ class QQmlEngine;
class Q_QMLCOMPILER_PRIVATE_EXPORT QQmlDirParser
{
public:
- QQmlDirParser();
- ~QQmlDirParser();
-
+ void clear();
bool parse(const QString &source);
bool hasError() const;
@@ -166,7 +164,7 @@ private:
QStringList _imports;
QList<Script> _scripts;
QList<Plugin> _plugins;
- bool _designerSupported;
+ bool _designerSupported = false;
QList<TypeInfo> _typeInfos;
QString _className;
};
diff --git a/tests/auto/qml/qqmldirparser/tst_qqmldirparser.cpp b/tests/auto/qml/qqmldirparser/tst_qqmldirparser.cpp
index 1e690e38dd..bc4ba9437c 100644
--- a/tests/auto/qml/qqmldirparser/tst_qqmldirparser.cpp
+++ b/tests/auto/qml/qqmldirparser/tst_qqmldirparser.cpp
@@ -375,6 +375,9 @@ void tst_qqmldirparser::parse()
QCOMPARE(toStringList(p.dependencies()), dependencies);
QCOMPARE(p.designerSupported(), designerSupported);
+
+ p.clear();
+ QVERIFY(p.typeNamespace().isEmpty());
}
QTEST_MAIN(tst_qqmldirparser)