diff --git a/src/libs/qmljs/qmljsdocument.cpp b/src/libs/qmljs/qmljsdocument.cpp index 9387423e38b..38ab1af0454 100644 --- a/src/libs/qmljs/qmljsdocument.cpp +++ b/src/libs/qmljs/qmljsdocument.cpp @@ -119,9 +119,9 @@ Document::~Document() delete _engine; } -Document::Ptr Document::create(const QString &fileName, Language language) +Document::MutablePtr Document::create(const QString &fileName, Language language) { - Document::Ptr doc(new Document(fileName, language)); + Document::MutablePtr doc(new Document(fileName, language)); doc->_ptr = doc; return doc; } @@ -375,11 +375,11 @@ void Snapshot::remove(const QString &fileName) } } -Document::Ptr Snapshot::documentFromSource(const QString &code, - const QString &fileName, - Document::Language language) const +Document::MutablePtr Snapshot::documentFromSource( + const QString &code, const QString &fileName, + Document::Language language) const { - Document::Ptr newDoc = Document::create(fileName, language); + Document::MutablePtr newDoc = Document::create(fileName, language); if (Document::Ptr thisDocument = document(fileName)) { newDoc->_editorRevision = thisDocument->_editorRevision; diff --git a/src/libs/qmljs/qmljsdocument.h b/src/libs/qmljs/qmljsdocument.h index 4f7ca3e7272..c06d8451064 100644 --- a/src/libs/qmljs/qmljsdocument.h +++ b/src/libs/qmljs/qmljsdocument.h @@ -51,7 +51,8 @@ class Snapshot; class QMLJS_EXPORT Document { public: - typedef QSharedPointer Ptr; + typedef QSharedPointer Ptr; + typedef QSharedPointer MutablePtr; // used in a 3-bit bitfield enum Language @@ -68,7 +69,7 @@ protected: public: ~Document(); - static Document::Ptr create(const QString &fileName, Language language); + static MutablePtr create(const QString &fileName, Language language); static Language guessLanguageFromSuffix(const QString &fileName); Document::Ptr ptr() const; @@ -230,7 +231,7 @@ public: QList documentsInDirectory(const QString &path) const; LibraryInfo libraryInfo(const QString &path) const; - Document::Ptr documentFromSource(const QString &code, + Document::MutablePtr documentFromSource(const QString &code, const QString &fileName, Document::Language language) const; }; diff --git a/src/libs/qmljs/qmljsscopechain.cpp b/src/libs/qmljs/qmljsscopechain.cpp index 378e2abbfa1..a3746c30408 100644 --- a/src/libs/qmljs/qmljsscopechain.cpp +++ b/src/libs/qmljs/qmljsscopechain.cpp @@ -259,7 +259,7 @@ void ScopeChain::initializeRootScope() m_globalScope = valueOwner->globalObject(); - QHash componentScopes; + QHash componentScopes; QmlComponentChain *chain = new QmlComponentChain(m_document); m_qmlComponentScope = QSharedPointer(chain); @@ -297,7 +297,7 @@ void ScopeChain::initializeRootScope() void ScopeChain::makeComponentChain( QmlComponentChain *target, const Snapshot &snapshot, - QHash *components) + QHash *components) { Document::Ptr doc = target->document(); if (!doc->qmlProgram()) diff --git a/src/libs/qmljs/qmljsscopechain.h b/src/libs/qmljs/qmljsscopechain.h index 70d123b5ca8..786e7defd99 100644 --- a/src/libs/qmljs/qmljsscopechain.h +++ b/src/libs/qmljs/qmljsscopechain.h @@ -108,7 +108,7 @@ private: void update() const; void initializeRootScope(); void makeComponentChain(QmlComponentChain *target, const Snapshot &snapshot, - QHash *components); + QHash *components); Document::Ptr m_document; diff --git a/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.h b/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.h index a70e205ae24..073c8fa9fcf 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.h +++ b/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.h @@ -52,7 +52,7 @@ protected: virtual bool visit(QmlJS::AST::UiObjectDefinition *ast); private: - QmlJS::Document::Ptr m_document; + QmlJS::Document::MutablePtr m_document; quint32 m_location; QString m_text; }; diff --git a/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.h b/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.h index 94485fae2b2..7ba3d9bd011 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.h +++ b/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.h @@ -54,7 +54,7 @@ protected: void extractFirstObjectDefinition(QmlJS::AST::UiObjectInitializer* ast); private: - QmlJS::Document::Ptr m_doc; + QmlJS::Document::MutablePtr m_doc; quint32 m_offset; QmlJS::AST::UiObjectDefinition *m_firstObjectDefinition; diff --git a/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.h b/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.h index cdb8e523336..a9e4c22e890 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.h +++ b/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.h @@ -52,7 +52,7 @@ protected: virtual bool visit(QmlJS::AST::UiObjectDefinition *ast); private: - QmlJS::Document::Ptr m_doc; + QmlJS::Document::MutablePtr m_doc; quint32 m_offset; quint32 m_length; }; diff --git a/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp b/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp index e3da2593820..12df3ba4a9b 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp @@ -61,7 +61,7 @@ bool QmlRefactoring::reparseDocument() // qDebug() << "QmlRefactoring::reparseDocument() new QML source:" << newSource; - Document::Ptr tmpDocument(Document::create("", Document::QmlLanguage)); + Document::MutablePtr tmpDocument(Document::create("", Document::QmlLanguage)); tmpDocument->setSource(newSource); if (tmpDocument->parseQml()) { diff --git a/src/plugins/qmldesigner/designercore/include/rewriterview.h b/src/plugins/qmldesigner/designercore/include/rewriterview.h index d4ee5cccb2a..85ba6778ab6 100644 --- a/src/plugins/qmldesigner/designercore/include/rewriterview.h +++ b/src/plugins/qmldesigner/designercore/include/rewriterview.h @@ -188,7 +188,7 @@ public: bool renameId(const QString& oldId, const QString& newId); const QmlJS::ScopeChain &scopeChain() const; - QmlJS::Document *document() const; + const QmlJS::Document *document() const; QString convertTypeToImportAlias(const QString &type) const; diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index b76e9e6ea5c..178341e7122 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -382,7 +382,7 @@ private: //storing the pointer would not be save QmlJS::ContextPtr context() const; - QmlJS::Document *document() const; + const Document *document() const; QPointer m_model; static QHash m_nodeMetaInfoCache; @@ -496,7 +496,7 @@ QmlJS::ContextPtr NodeMetaInfoPrivate::context() const return QmlJS::ContextPtr(0); } -QmlJS::Document *NodeMetaInfoPrivate::document() const +const QmlJS::Document *NodeMetaInfoPrivate::document() const { if (m_model && m_model->rewriterView()) { return m_model->rewriterView()->document(); diff --git a/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp b/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp index 4bf2d49cfef..1ed9d9c96e9 100644 --- a/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp @@ -229,7 +229,7 @@ void ModelToTextMerger::applyChanges() if (m_rewriteActions.isEmpty()) return; - Document::Ptr tmpDocument(Document::create(QLatin1String(""), Document::QmlLanguage)); + Document::MutablePtr tmpDocument(Document::create(QLatin1String(""), Document::QmlLanguage)); tmpDocument->setSource(m_rewriterView->textModifier()->text()); if (!tmpDocument->parseQml()) { qDebug() << "*** Possible problem: QML file wasn't parsed correctly."; diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index e3e5f7b6e14..8eb75507652 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -629,7 +629,7 @@ const QmlJS::ScopeChain &RewriterView::scopeChain() const return textToModelMerger()->scopeChain(); } -QmlJS::Document *RewriterView::document() const +const QmlJS::Document *RewriterView::document() const { return textToModelMerger()->document(); } diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index ae3f345100f..de38527effa 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -732,7 +732,7 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH try { Snapshot snapshot = m_rewriterView->textModifier()->getSnapshot(); const QString fileName = url.toLocalFile(); - Document::Ptr doc = Document::create(fileName.isEmpty() ? QLatin1String("") : fileName, Document::QmlLanguage); + Document::MutablePtr doc = Document::create(fileName.isEmpty() ? QLatin1String("") : fileName, Document::QmlLanguage); doc->setSource(data); doc->parseQml(); diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h index 48df79258aa..ebd2817cfa8 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h @@ -71,7 +71,7 @@ public: const QmlJS::ScopeChain &scopeChain() const { return *m_scopeChain; } - QmlJS::Document *document() const + const QmlJS::Document *document() const { return m_document.data(); } protected: diff --git a/src/plugins/qmljseditor/qmlexpressionundercursor.cpp b/src/plugins/qmljseditor/qmlexpressionundercursor.cpp index 60e90b60deb..686ed040c8d 100644 --- a/src/plugins/qmljseditor/qmlexpressionundercursor.cpp +++ b/src/plugins/qmljseditor/qmlexpressionundercursor.cpp @@ -136,9 +136,11 @@ QmlJS::AST::ExpressionNode *QmlExpressionUnderCursor::operator()(const QTextCurs ExpressionUnderCursor expressionUnderCursor; _text = expressionUnderCursor(cursor); - exprDoc = Document::create(QLatin1String(""), Document::JavaScriptLanguage); - exprDoc->setSource(_text); - exprDoc->parseExpression(); + Document::MutablePtr newDoc = Document::create( + QLatin1String(""), Document::JavaScriptLanguage); + newDoc->setSource(_text); + newDoc->parseExpression(); + exprDoc = newDoc; _expressionNode = exprDoc->expression(); diff --git a/src/plugins/qmljseditor/qmljsfindreferences.cpp b/src/plugins/qmljseditor/qmljsfindreferences.cpp index 557fbca3def..5f197a73ce1 100644 --- a/src/plugins/qmljseditor/qmljsfindreferences.cpp +++ b/src/plugins/qmljseditor/qmljsfindreferences.cpp @@ -810,8 +810,8 @@ static void find_helper(QFutureInterface &future, else language = QmlJSTools::languageOfFile(fileName); - Document::Ptr newDoc = snapshot.documentFromSource(it.value().first, fileName, - language); + Document::MutablePtr newDoc = snapshot.documentFromSource( + it.value().first, fileName, language); newDoc->parse(); snapshot.insert(newDoc); } diff --git a/src/plugins/qmljseditor/qmljssemanticinfoupdater.cpp b/src/plugins/qmljseditor/qmljssemanticinfoupdater.cpp index dc7dfde82a4..c00012ccf8d 100644 --- a/src/plugins/qmljseditor/qmljssemanticinfoupdater.cpp +++ b/src/plugins/qmljseditor/qmljssemanticinfoupdater.cpp @@ -128,10 +128,12 @@ SemanticInfo SemanticInfoUpdater::semanticInfo(const SemanticInfoUpdaterSource & language = m_lastSemanticInfo.document->language(); else language = QmlJSTools::languageOfFile(source.fileName); - doc = snapshot.documentFromSource(source.code, source.fileName, language); - doc->setEditorRevision(source.revision); - doc->parse(); - snapshot.insert(doc); + QmlJS::Document::MutablePtr newDoc = snapshot.documentFromSource( + source.code, source.fileName, language); + newDoc->setEditorRevision(source.revision); + newDoc->parse(); + snapshot.insert(newDoc); + doc = newDoc; } SemanticInfo semanticInfo; diff --git a/src/plugins/qmljstools/qmljsmodelmanager.cpp b/src/plugins/qmljstools/qmljsmodelmanager.cpp index 16ccc076511..164f7607146 100644 --- a/src/plugins/qmljstools/qmljsmodelmanager.cpp +++ b/src/plugins/qmljstools/qmljsmodelmanager.cpp @@ -598,7 +598,7 @@ void ModelManager::parse(QFutureInterface &future, } } - Document::Ptr doc = Document::create(fileName, language); + Document::MutablePtr doc = Document::create(fileName, language); doc->setEditorRevision(documentRevision); doc->setSource(contents); doc->parse(); diff --git a/src/plugins/qmljstools/qmljsrefactoringchanges.cpp b/src/plugins/qmljstools/qmljsrefactoringchanges.cpp index c86f51a482e..944cbbbe025 100644 --- a/src/plugins/qmljstools/qmljsrefactoringchanges.cpp +++ b/src/plugins/qmljstools/qmljsrefactoringchanges.cpp @@ -135,8 +135,9 @@ Document::Ptr QmlJSRefactoringFile::qmljsDocument() const const QString name = fileName(); const Snapshot &snapshot = data()->m_snapshot; - m_qmljsDocument = snapshot.documentFromSource(source, name, languageOfFile(name)); - m_qmljsDocument->parse(); + Document::MutablePtr newDoc = snapshot.documentFromSource(source, name, languageOfFile(name)); + newDoc->parse(); + m_qmljsDocument = newDoc; } return m_qmljsDocument;