summaryrefslogtreecommitdiff
path: root/src/libs/qmljs/qmljsdocument.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/qmljs/qmljsdocument.cpp')
-rw-r--r--src/libs/qmljs/qmljsdocument.cpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/libs/qmljs/qmljsdocument.cpp b/src/libs/qmljs/qmljsdocument.cpp
index 109cee3170..64cd32d80f 100644
--- a/src/libs/qmljs/qmljsdocument.cpp
+++ b/src/libs/qmljs/qmljsdocument.cpp
@@ -83,6 +83,21 @@ using namespace QmlJS::AST;
*/
+bool Document::isQmlLikeLanguage(Document::Language language)
+{
+ switch (language) {
+ case QmlLanguage:
+ case QmlQtQuick1Language:
+ case QmlQtQuick2Language:
+ case QmlQbsLanguage:
+ case QmlProjectLanguage:
+ case QmlTypeInfoLanguage:
+ return true;
+ default:
+ return false;
+ }
+}
+
Document::Document(const QString &fileName, Language language)
: _engine(0)
, _ast(0)
@@ -95,7 +110,7 @@ Document::Document(const QString &fileName, Language language)
QFileInfo fileInfo(fileName);
_path = QDir::cleanPath(fileInfo.absolutePath());
- if (language == QmlLanguage) {
+ if (isQmlLikeLanguage(language)) {
_componentName = fileInfo.baseName();
if (! _componentName.isEmpty()) {
@@ -125,11 +140,13 @@ Document::MutablePtr Document::create(const QString &fileName, Language language
Document::Language Document::guessLanguageFromSuffix(const QString &fileName)
{
- if (fileName.endsWith(".qml", Qt::CaseInsensitive))
+ if (fileName.endsWith(QLatin1String(".qml"), Qt::CaseInsensitive))
return QmlLanguage;
- if (fileName.endsWith(".js", Qt::CaseInsensitive))
+ if (fileName.endsWith(QLatin1String(".qbs"), Qt::CaseInsensitive))
+ return QmlQbsLanguage;
+ if (fileName.endsWith(QLatin1String(".js"), Qt::CaseInsensitive))
return JavaScriptLanguage;
- if (fileName.endsWith(".json", Qt::CaseInsensitive))
+ if (fileName.endsWith(QLatin1String(".json"), Qt::CaseInsensitive))
return JsonLanguage;
return UnknownLanguage;
}
@@ -141,7 +158,7 @@ Document::Ptr Document::ptr() const
bool Document::isQmlDocument() const
{
- return _language == QmlLanguage;
+ return isQmlLikeLanguage(_language);
}
Document::Language Document::language() const
@@ -259,7 +276,7 @@ bool Document::parse_helper(int startToken)
Parser parser(_engine);
QString source = _source;
- lexer.setCode(source, /*line = */ 1, /*qmlMode = */_language == QmlLanguage);
+ lexer.setCode(source, /*line = */ 1, /*qmlMode = */isQmlLikeLanguage(_language));
CollectDirectives collectDirectives(path());
_engine->setDirectives(&collectDirectives);
@@ -378,9 +395,8 @@ Document::MutablePtr Snapshot::documentFromSource(
{
Document::MutablePtr newDoc = Document::create(fileName, language);
- if (Document::Ptr thisDocument = document(fileName)) {
+ if (Document::Ptr thisDocument = document(fileName))
newDoc->_editorRevision = thisDocument->_editorRevision;
- }
newDoc->setSource(code);
return newDoc;