1// Copyright (C) 2019 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include <private/qqmltypeloaderqmldircontent_p.h>
5#include <private/qqmlsourcecoordinate_p.h>
6#include <QtQml/qqmlerror.h>
7
8QT_BEGIN_NAMESPACE
9
10QList<QQmlError> QQmlTypeLoaderQmldirContent::errors(const QString &uri) const
11{
12 QList<QQmlError> errors;
13 const QUrl url(uri);
14 const auto parseErrors = m_parser.errors(uri);
15 for (const auto &parseError : parseErrors) {
16 QQmlError error;
17 error.setUrl(url);
18 error.setLine(qmlConvertSourceCoordinate<quint32, int>(n: parseError.loc.startLine));
19 error.setColumn(qmlConvertSourceCoordinate<quint32, int>(n: parseError.loc.startColumn));
20 error.setDescription(parseError.message);
21 errors.append(t: error);
22 }
23 return errors;
24}
25
26void QQmlTypeLoaderQmldirContent::setContent(const QString &location, const QString &content)
27{
28 Q_ASSERT(!m_hasContent);
29 m_hasContent = true;
30 m_location = location;
31 m_parser.parse(source: content);
32 m_parser.disambiguateFileSelectors();
33}
34
35void QQmlTypeLoaderQmldirContent::setError(const QQmlError &error)
36{
37 QQmlJS::DiagnosticMessage parseError;
38 parseError.loc.startLine = error.line();
39 parseError.loc.startColumn = error.column();
40 parseError.message = error.description();
41 m_parser.setError(parseError);
42}
43
44QT_END_NAMESPACE
45

source code of qtdeclarative/src/qml/qml/qqmltypeloaderqmldircontent.cpp