Commit e33767205bd2663b90d1fedbba43bef6fbcf9835

Introduced SemanticInfo::isValid().
  
678678 m_completions.clear();
679679
680680 const SemanticInfo semanticInfo = edit->semanticInfo();
681 const QmlJS::Snapshot snapshot = semanticInfo.snapshot;
682 const Document::Ptr document = semanticInfo.document;
683681
684 if (!document)
682 if (! semanticInfo.isValid())
685683 return -1;
686684
685 const Document::Ptr document = semanticInfo.document;
687686 const QFileInfo currentFileInfo(fileName);
688687
689688 bool isQmlFile = false;
  
556556
557557LookupContext::Ptr SemanticInfo::lookupContext(const QList<QmlJS::AST::Node *> &path) const
558558{
559 Q_ASSERT(! m_context.isNull());
560
561 if (m_context.isNull())
562 return LookupContext::create(document, snapshot, path);
563
559564 return LookupContext::create(document, snapshot, *m_context, path);
560565}
561566
615615 return 0;
616616}
617617
618bool SemanticInfo::isValid() const
619{
620 if (document && m_context)
621 return true;
622
623 return false;
624}
625
618626int SemanticInfo::revision() const
619627{
620628 if (document)
13731373TextEditor::BaseTextEditor::Link QmlJSTextEditor::findLinkAt(const QTextCursor &cursor, bool /*resolveTarget*/)
13741374{
13751375 const SemanticInfo semanticInfo = m_semanticInfo;
1376 if (! semanticInfo.isValid())
1377 return Link();
1378
13761379 const unsigned cursorPosition = cursor.position();
13771380
13781381 AST::Node *node = semanticInfo.nodeUnderCursor(cursorPosition);
  
121121public:
122122 SemanticInfo() {}
123123
124 bool isValid() const;
124125 int revision() const;
125126
126127 // Returns the declaring member
  
110110
111111 if (!matchDiagnosticMessage(qmlEditor, pos)) {
112112 const SemanticInfo &semanticInfo = qmlEditor->semanticInfo();
113 if (semanticInfo.revision() != qmlEditor->editorRevision())
113 if (! semanticInfo.isValid() || semanticInfo.revision() != qmlEditor->editorRevision())
114114 return;
115115
116116 QList<AST::Node *> astPath = semanticInfo.astPath(pos);
  
8080
8181void ModelManager::loadQmlTypeDescriptions()
8282{
83 const QString resourcePath = Core::ICore::instance()->resourcePath();
83 loadQmlTypeDescriptions(Core::ICore::instance()->resourcePath());
84 loadQmlTypeDescriptions(Core::ICore::instance()->userResourcePath());
85}
86
87void ModelManager::loadQmlTypeDescriptions(const QString &resourcePath)
88{
8489 const QDir typeFileDir(resourcePath + QLatin1String("/qml-type-descriptions"));
8590 const QStringList xmlExtensions = QStringList() << QLatin1String("*.xml");
8691 const QFileInfoList xmlFiles = typeFileDir.entryInfoList(xmlExtensions,
  
101101 bool emitDocChangedOnDisk);
102102
103103 void loadQmlTypeDescriptions();
104 void loadQmlTypeDescriptions(const QString &path);
104105
105106 void updateImportPaths();
106107
  
136136 if (QmlJSTextEditor *qmljsEditor = qobject_cast<QmlJSTextEditor *>(editor)) {
137137 const SemanticInfo info = qmljsEditor->semanticInfo();
138138
139 if (qmljsEditor->isOutdated()) {
139 if (! info.isValid() || qmljsEditor->isOutdated()) {
140140 // outdated
141141 qWarning() << "TODO: outdated semantic info, force a reparse.";
142142 return 0;
  
330330void QmlOutlineModel::update(const SemanticInfo &semanticInfo)
331331{
332332 m_semanticInfo = semanticInfo;
333 if (! m_semanticInfo.isValid())
334 return;
333335
334336 m_treePos.clear();
335337 m_treePos.append(0);