summaryrefslogtreecommitdiff
path: root/src/libs
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2017-08-15 10:07:51 +0200
committerEike Ziller <eike.ziller@qt.io>2017-08-15 10:07:51 +0200
commitd8fd5292f17bd07d390500f5daa10b46d5573a49 (patch)
tree24a004a722d7947bd6a354e20a5ad6b651c73073 /src/libs
parente6a50fd44a68ccb61a852c4576817162a465c2ce (diff)
parent885f8b53858b5c6158a0c6f2208c24cc042b9f38 (diff)
downloadqt-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.cpp2
-rw-r--r--src/libs/cplusplus/MatchingText.cpp5
-rw-r--r--src/libs/qmljs/qmljscheck.cpp3
-rw-r--r--src/libs/utils/persistentsettings.cpp32
-rw-r--r--src/libs/utils/treemodel.cpp23
-rw-r--r--src/libs/utils/treemodel.h2
-rw-r--r--src/libs/utils/wizard.cpp1
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);