diff options
author | Eike Ziller <eike.ziller@qt.io> | 2017-08-15 10:07:51 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2017-08-15 10:07:51 +0200 |
commit | d8fd5292f17bd07d390500f5daa10b46d5573a49 (patch) | |
tree | 24a004a722d7947bd6a354e20a5ad6b651c73073 /src/libs | |
parent | e6a50fd44a68ccb61a852c4576817162a465c2ce (diff) | |
parent | 885f8b53858b5c6158a0c6f2208c24cc042b9f38 (diff) | |
download | qt-creator-d8fd5292f17bd07d390500f5daa10b46d5573a49.tar.gz |
Merge remote-tracking branch 'origin/4.4'
Conflicts:
src/tools/clangbackend/ipcsource/clangiasyncjob.cpp
src/tools/clangbackend/ipcsource/clangjobrequest.cpp
src/tools/clangbackend/ipcsource/clangjobrequest.h
Change-Id: Ib8602530663813ade418f995dfd2a736908cfe75
Diffstat (limited to 'src/libs')
-rw-r--r-- | src/libs/cplusplus/LookupContext.cpp | 2 | ||||
-rw-r--r-- | src/libs/cplusplus/MatchingText.cpp | 5 | ||||
-rw-r--r-- | src/libs/qmljs/qmljscheck.cpp | 3 | ||||
-rw-r--r-- | src/libs/utils/persistentsettings.cpp | 32 | ||||
-rw-r--r-- | src/libs/utils/treemodel.cpp | 23 | ||||
-rw-r--r-- | src/libs/utils/treemodel.h | 2 | ||||
-rw-r--r-- | src/libs/utils/wizard.cpp | 1 |
7 files changed, 45 insertions, 23 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 0e9fccead2..3f09e7b1a2 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -1387,6 +1387,8 @@ void ClassOrNamespace::instantiateNestedClasses(ClassOrNamespace *enclosingTempl void ClassOrNamespace::NestedClassInstantiator::instantiate(ClassOrNamespace *enclosingTemplateClass, ClassOrNamespace *enclosingTemplateClassInstantiation) { + if (_alreadyConsideredNestedClassInstantiations.size() >= 3) + return; if (_alreadyConsideredNestedClassInstantiations.contains(enclosingTemplateClass)) return; _alreadyConsideredNestedClassInstantiations.insert(enclosingTemplateClass); diff --git a/src/libs/cplusplus/MatchingText.cpp b/src/libs/cplusplus/MatchingText.cpp index e2f04e4f0f..447c91ea59 100644 --- a/src/libs/cplusplus/MatchingText.cpp +++ b/src/libs/cplusplus/MatchingText.cpp @@ -326,6 +326,11 @@ static bool allowAutoClosingBrace(const QTextCursor &cursor, int prevState; const Tokens tokens = getTokens(cursor, prevState); + + const Token token = tokenAtPosition(tokens, cursor.positionInBlock()); + if (token.isStringLiteral()) + return false; + if (isAfterNamespaceDefinition(tokens, cursor.positionInBlock())) return false; diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp index 1076bd27c0..52180c4cc3 100644 --- a/src/libs/qmljs/qmljscheck.cpp +++ b/src/libs/qmljs/qmljscheck.cpp @@ -1781,6 +1781,9 @@ const Value *Check::checkScopeObjectMember(const UiQualifiedId *id) addMessage(ErrInvalidMember, idPart->identifierToken, propertyName, objectValue->className()); return 0; } + // resolve references + if (const Reference *ref = value->asReference()) + value = _context->lookupReference(ref); } return value; diff --git a/src/libs/utils/persistentsettings.cpp b/src/libs/utils/persistentsettings.cpp index d665aaabe0..de6e883816 100644 --- a/src/libs/utils/persistentsettings.cpp +++ b/src/libs/utils/persistentsettings.cpp @@ -104,30 +104,17 @@ namespace Utils { struct Context // Basic context containing element name string constants. { - Context(); - - const QString qtCreatorElement; - const QString dataElement; - const QString variableElement; - const QString typeAttribute; - const QString valueElement; - const QString valueListElement; - const QString valueMapElement; - const QString keyAttribute; + Context() {} + const QString qtCreatorElement = QString("qtcreator"); + const QString dataElement = QString("data"); + const QString variableElement = QString("variable"); + const QString typeAttribute = QString("type"); + const QString valueElement = QString("value"); + const QString valueListElement = QString("valuelist"); + const QString valueMapElement = QString("valuemap"); + const QString keyAttribute = QString("key"); }; -Context::Context() : - qtCreatorElement(QLatin1String("qtcreator")), - dataElement(QLatin1String("data")), - variableElement(QLatin1String("variable")), - typeAttribute(QLatin1String("type")), - valueElement(QLatin1String("value")), - valueListElement(QLatin1String("valuelist")), - valueMapElement(QLatin1String("valuemap")), - keyAttribute(QLatin1String("key")) -{ -} - struct ParseValueStackEntry { explicit ParseValueStackEntry(QVariant::Type t = QVariant::Invalid, const QString &k = QString()) : type(t), key(k) {} @@ -225,7 +212,6 @@ QVariantMap ParseContext::parse(QFile &file) qWarning("Error reading %s:%d: %s", qPrintable(file.fileName()), int(r.lineNumber()), qPrintable(r.errorString())); return QVariantMap(); - break; default: break; } // switch token diff --git a/src/libs/utils/treemodel.cpp b/src/libs/utils/treemodel.cpp index 19f3fc72c4..b4684eedfe 100644 --- a/src/libs/utils/treemodel.cpp +++ b/src/libs/utils/treemodel.cpp @@ -689,6 +689,20 @@ void TreeItem::insertChild(int pos, TreeItem *item) } } +void TreeItem::removeChildAt(int pos) +{ + QTC_ASSERT(0 <= pos && pos < m_children.count(), return); + + if (m_model) { + QModelIndex idx = index(); + m_model->beginRemoveRows(idx, pos, pos); + removeItemAt(pos); + m_model->endRemoveRows(); + } else { + removeItemAt(pos); + } +} + void TreeItem::removeChildren() { if (childCount() == 0) @@ -863,6 +877,15 @@ void TreeItem::clear() } } +void TreeItem::removeItemAt(int pos) +{ + TreeItem *item = m_children.at(pos); + item->m_model = nullptr; + item->m_parent = nullptr; + delete item; + m_children.removeAt(pos); +} + void TreeItem::expand() { QTC_ASSERT(m_model, return); diff --git a/src/libs/utils/treemodel.h b/src/libs/utils/treemodel.h index d62670867b..8e0c4407d2 100644 --- a/src/libs/utils/treemodel.h +++ b/src/libs/utils/treemodel.h @@ -54,6 +54,7 @@ public: void prependChild(TreeItem *item); void appendChild(TreeItem *item); void insertChild(int pos, TreeItem *item); + void removeChildAt(int pos); void removeChildren(); void sortChildren(const std::function<bool(const TreeItem *, const TreeItem *)> &cmp); void update(); @@ -90,6 +91,7 @@ private: void operator=(const TreeItem &) = delete; void clear(); + void removeItemAt(int pos); void propagateModel(BaseTreeModel *m); TreeItem *m_parent; // Not owned. diff --git a/src/libs/utils/wizard.cpp b/src/libs/utils/wizard.cpp index 7829744314..d00d0345d6 100644 --- a/src/libs/utils/wizard.cpp +++ b/src/libs/utils/wizard.cpp @@ -432,6 +432,7 @@ void Wizard::showVariables() label->setWordWrap(true); label->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard); scrollArea->setWidget(label); + scrollArea->setWidgetResizable(true); layout->addWidget(scrollArea); layout->addWidget(buttons); |