Commit ab0c3da0 authored by Eike Ziller's avatar Eike Ziller
Browse files

Merge remote-tracking branch 'origin/2.8'

Conflicts:
	qtcreator.pri
	qtcreator.qbs
	src/plugins/projectexplorer/projectexplorer.cpp

Change-Id: I37e550646f877b50693043894976a693ac22ad5e
parents 113c5600 8b390350
import qbs.base 1.0
import qbs.TextFile
import qbs.fileinfo as FileInfo
import qbs.FileInfo
Module {
Depends { id: qtcore; name: "Qt.core" }
......
......@@ -507,6 +507,10 @@ class Dumper:
#self.debugger.EnableLog("lldb", ["all"])
self.debugger.Initialize()
self.debugger.HandleCommand("settings set auto-confirm on")
if not hasattr(lldb.SBType, 'GetCanonicalType'): # "Test" for 179.5
warn("DISABLING DEFAULT FORMATTERS")
self.debugger.HandleCommand('type category delete gnu-libstdc++')
self.debugger.HandleCommand('type category delete libcxx')
self.process = None
self.target = None
self.eventState = lldb.eStateInvalid
......@@ -559,7 +563,7 @@ class Dumper:
elif c == ',':
if level == 0:
if index == 0:
return inner
return inner.strip()
index -= 1
inner = ''
else:
......@@ -571,7 +575,7 @@ class Dumper:
else:
inner += c
skipSpace = False
return inner
return inner.strip()
def templateArgument(self, typeobj, index):
type = typeobj.GetTemplateArgumentType(index)
......@@ -1142,7 +1146,7 @@ class Dumper:
for i in xrange(m):
child = value.GetChildAtIndex(i)
with UnnamedSubItem(self, "@%d" % (i + 1)):
#self.put('iname="%s",' % self.currentIName)
self.put('iname="%s",' % self.currentIName)
self.put('name="[%s]",' % child.name)
self.putItem(child)
for i in xrange(m, n):
......@@ -1618,6 +1622,7 @@ execfile(os.path.join(currentDir, "qttypes.py"))
def doit():
db = Dumper()
db.report('lldbversion="%s"' % lldb.SBDebugger.GetVersionString())
db.report('state="enginesetupok"')
while True:
......
......@@ -221,10 +221,10 @@ def qdump__QByteArray(d, value):
d.putDisplay(StopDisplay)
elif format == 2:
d.putField("editformat", DisplayLatin1String)
d.putField("editvalue", d.encodeByteArray(value, None))
d.putField("editvalue", d.encodeByteArray(value))
elif format == 3:
d.putField("editformat", DisplayUtf8String)
d.putField("editvalue", d.encodeByteArray(value, None))
d.putField("editvalue", d.encodeByteArray(value))
if d.isExpanded():
d.putArrayData(d.charType(), data, size)
......@@ -1734,10 +1734,14 @@ def qdump__QString(d, value):
d.putDisplay(StopDisplay)
elif format == 2:
d.putField("editformat", DisplayUtf16String)
d.putField("editvalue", d.encodeString(value, None))
d.putField("editvalue", d.encodeString(value))
def qdump__QStringRef(d, value):
if isNull(value["m_string"]):
d.putValue("(null)");
d.putNumChild(0)
return
s = value["m_string"].dereference()
data, size, alloc = d.stringData(s)
data += 2 * int(value["m_position"])
......@@ -2374,9 +2378,10 @@ def qform__std__string():
return "Inline,In Separate Window"
def qdump__std__string(d, value):
qdump__std__stringHelper1(d, value, 1)
def qdump__std__stringHelper1(d, value, charSize):
data = value["_M_dataplus"]["_M_p"]
baseType = value.type.strip_typedefs()
charSize = d.templateArgument(baseType, 0).sizeof
# We can't lookup the std::string::_Rep type without crashing LLDB,
# so hard-code assumption on member position
# struct { size_type _M_length, size_type _M_capacity, int _M_refcount; }
......@@ -2409,9 +2414,7 @@ def qdump_stringHelper(d, data, size, charSize):
d.putDisplay(StopDisplay)
elif format == 2:
d.putField("editformat", displayType)
if n != size:
mem = d.readRawMemory(p, size)
d.putField("editvalue", mem)
d.putField("editvalue", d.readRawMemory(data, size))
def qdump__std____1__string(d, value):
......@@ -2586,13 +2589,15 @@ def qdump__string(d, value):
qdump__std__string(d, value)
def qdump__std__wstring(d, value):
qdump__std__string(d, value)
charSize = d.lookupType('wchar_t').sizeof
qdump__std__stringHelper1(d, value, charSize)
def qdump__std__basic_string(d, value):
qdump__std__string(d, value)
innerType = d.templateArgument(value.type, 0)
qdump__std__stringHelper1(d, value, innerType.sizeof)
def qdump__wstring(d, value):
qdump__std__string(d, value)
qdump__std__wstring(d, value)
def qdump____gnu_cxx__hash_set(d, value):
......
......@@ -39,12 +39,18 @@ CloneType::CloneType(Clone *clone)
FullySpecifiedType CloneType::cloneType(const FullySpecifiedType &type, Subst *subst)
{
TypeSubstPair typeSubstPair = std::make_pair(type, subst);
if (_cache.find(typeSubstPair) != _cache.end())
return _cache[typeSubstPair];
std::swap(_subst, subst);
FullySpecifiedType ty(type);
std::swap(_type, ty);
accept(_type.type());
std::swap(_type, ty);
std::swap(_subst, subst);
_cache[typeSubstPair] = ty;
return ty;
}
......@@ -179,13 +185,22 @@ Symbol *CloneSymbol::cloneSymbol(Symbol *symbol, Subst *subst)
if (! symbol)
return 0;
SymbolSubstPair symbolSubstPair = std::make_pair(symbol, subst);
if (_cache.find(symbolSubstPair) != _cache.end()) {
Symbol *cachedSymbol = _cache[symbolSubstPair];
if (cachedSymbol->scope() == symbol->scope())
return cachedSymbol;
}
Symbol *r = 0;
std::swap(_subst, subst);
std::swap(_symbol, r);
accept(symbol);
std::swap(_symbol, r);
std::swap(_subst, subst);
CPP_CHECK(r != 0);
_cache[symbolSubstPair] = r;
return r;
}
......@@ -394,6 +409,10 @@ const Name *CloneName::cloneName(const Name *name, Subst *subst)
if (! name)
return 0;
NameSubstPair nameSubstPair = std::make_pair(name, subst);
if (_cache.find(nameSubstPair) != _cache.end())
return _cache[nameSubstPair];
const Name *r = 0;
std::swap(_subst, subst);
std::swap(_name, r);
......@@ -401,6 +420,7 @@ const Name *CloneName::cloneName(const Name *name, Subst *subst)
std::swap(_name, r);
std::swap(_subst, subst);
CPP_CHECK(r != 0);
_cache[nameSubstPair] = r;
return r;
}
......
......@@ -27,7 +27,9 @@
#include "Name.h"
#include "NameVisitor.h"
#include "SymbolVisitor.h"
#include <map>
#include <utility>
namespace CPlusPlus {
......@@ -93,6 +95,9 @@ protected:
virtual void visit(ObjCForwardProtocolDeclaration *type);
protected:
typedef std::pair <const FullySpecifiedType, Subst *> TypeSubstPair;
std::map<TypeSubstPair, FullySpecifiedType> _cache;
Clone *_clone;
Control *_control;
Subst *_subst;
......@@ -118,6 +123,9 @@ protected:
virtual void visit(const SelectorNameId *name);
protected:
typedef std::pair <const Name *, Subst *> NameSubstPair;
std::map<NameSubstPair, const Name *> _cache;
Clone *_clone;
Control *_control;
Subst *_subst;
......@@ -163,6 +171,9 @@ protected:
virtual bool visit(ObjCPropertyDeclaration *symbol);
protected:
typedef std::pair <Symbol *, Subst *> SymbolSubstPair;
std::map<SymbolSubstPair, Symbol *> _cache;
Clone *_clone;
Control *_control;
Subst *_subst;
......
......@@ -1232,7 +1232,8 @@ void ClassOrNamespace::NestedClassInstantiator::instantiate(ClassOrNamespace *en
foreach (Symbol *s, nestedClassOrNamespace->_symbols) {
Symbol *clone = _cloner.symbol(s, &_subst);
clone->setScope(s->scope());
if (!clone->enclosingScope()) // Not from the cache but just cloned.
clone->setScope(s->enclosingScope());
nestedClassOrNamespaceInstantiation->_symbols.append(clone);
}
}
......
......@@ -67,7 +67,12 @@ private:
class QmlJS::SharedValueOwner : public ValueOwner
{
public:
SharedValueOwner();
enum SharedValueOwnerKind{
Qt4Kind = 1,
Qt5Kind = 2
};
SharedValueOwner(SharedValueOwnerKind kind = Qt5Kind);
ObjectValue *_objectPrototype;
ObjectValue *_functionPrototype;
......@@ -109,9 +114,18 @@ public:
ColorValue _colorValue;
AnchorLineValue _anchorLineValue;
};
Q_GLOBAL_STATIC(SharedValueOwner, sharedValueOwner)
SharedValueOwner::SharedValueOwner()
SharedValueOwner *ValueOwner::sharedValueOwner(QString kind)
{
static SharedValueOwner qt5owner(SharedValueOwner::Qt5Kind);
static SharedValueOwner qt4owner(SharedValueOwner::Qt4Kind);
if (kind == QLatin1String("Qt4Kind"))
return &qt4owner;
else
return &qt5owner;
}
SharedValueOwner::SharedValueOwner(SharedValueOwnerKind kind)
: ValueOwner(this) // need to avoid recursing in ValueOwner ctor
{
_objectPrototype = newObject(/*prototype = */ 0);
......@@ -526,8 +540,21 @@ SharedValueOwner::SharedValueOwner()
// firebug/webkit compat
ObjectValue *consoleObject = newObject(/*prototype */ 0);
addFunction(consoleObject, QLatin1String("log"), 1);
addFunction(consoleObject, QLatin1String("debug"), 1);
addFunction(consoleObject, QLatin1String("log"), 1, 0, true);
addFunction(consoleObject, QLatin1String("debug"), 1, 0, true);
if (kind == Qt5Kind) {
addFunction(consoleObject, QLatin1String("info"), 1, 0, true);
addFunction(consoleObject, QLatin1String("warn"), 1, 0, true);
addFunction(consoleObject, QLatin1String("error"), 1, 0, true);
addFunction(consoleObject, QLatin1String("assert"), 1, 0, true);
addFunction(consoleObject, QLatin1String("count"), 0, 1);
addFunction(consoleObject, QLatin1String("profile"), 0);
addFunction(consoleObject, QLatin1String("profileEnd"), 0);
addFunction(consoleObject, QLatin1String("time"), 1);
addFunction(consoleObject, QLatin1String("timeEnd"), 1);
addFunction(consoleObject, QLatin1String("trace"), 0);
addFunction(consoleObject, QLatin1String("exception"), 1, 0, true);
}
_globalObject->setMember(QLatin1String("console"), consoleObject);
// translation functions
......
......@@ -66,6 +66,7 @@ class QMLJS_EXPORT ValueOwner
Q_DISABLE_COPY(ValueOwner)
public:
static SharedValueOwner *sharedValueOwner(QString kind = QString());
ValueOwner(const SharedValueOwner *shared = 0);
~ValueOwner();
......
import qbs.base 1.0
import qbs.fileinfo as FileInfo
import qbs.FileInfo
import "../../qbs/defaults.js" as Defaults
Product {
......
import qbs.base 1.0
import qbs.fileinfo as FileInfo
import qbs.FileInfo
import "../QtcPlugin.qbs" as QtcPlugin
import "../../../qbs/defaults.js" as Defaults
......
import qbs.base 1.0
import qbs.fileinfo as FileInfo
import qbs.FileInfo
import "../QtcPlugin.qbs" as QtcPlugin
import "../../../qbs/defaults.js" as Defaults
......
......@@ -7,7 +7,7 @@ include(cpp/cpp.pri)
INCLUDEPATH += ../../tools/utils
greaterThan(QT_MAJOR_VERSION, 4) {
QT += printsupport designer designercomponents
QT += printsupport designer designercomponents-private
} else {
# -- figure out shared dir location
!exists($$[QT_INSTALL_HEADERS]/QtDesigner/private/qdesigner_integration_p.h) {
......
......@@ -522,22 +522,7 @@ void BranchModel::checkoutBranch(const QModelIndex &idx)
// No StashGuard since this function for now is only used with clean working dir.
// If it is ever used from another place, please add StashGuard here
QString errorMessage;
if (m_client->synchronousCheckout(m_workingDirectory, branch, &errorMessage)) {
if (errorMessage.isEmpty()) {
QModelIndex currentIdx = currentBranch();
if (currentIdx.isValid()) {
m_currentBranch = 0;
emit dataChanged(currentIdx, currentIdx);
}
m_currentBranch = indexToNode(idx);
emit dataChanged(idx, idx);
} else {
refresh(m_workingDirectory, &errorMessage); // not sure all went well... better refresh!
}
}
if (!errorMessage.isEmpty())
VcsBase::VcsBaseOutputWindow::instance()->appendError(errorMessage);
m_client->synchronousCheckout(m_workingDirectory, branch);
}
bool BranchModel::branchIsMerged(const QModelIndex &idx)
......
......@@ -1276,7 +1276,8 @@ bool GitClient::synchronousCheckout(const QString &workingDirectory,
QByteArray errorText;
QStringList arguments;
arguments << QLatin1String("checkout") << ref;
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText,
VcsBasePlugin::ExpectRepoChanges);
const QString output = commandOutputFromLocal8Bit(outputText);
outputWindow()->append(output);
if (!rc) {
......
......@@ -446,12 +446,11 @@ void DeviceKitInformation::kitsWereLoaded()
foreach (Kit *k, KitManager::instance()->kits())
fix(k);
connect(DeviceManager::instance(), SIGNAL(deviceAdded(Core::Id)),
this, SLOT(deviceAdded(Core::Id)));
connect(DeviceManager::instance(), SIGNAL(deviceRemoved(Core::Id)),
this, SLOT(deviceRemoved(Core::Id)));
connect(DeviceManager::instance(), SIGNAL(deviceUpdated(Core::Id)),
this, SLOT(deviceUpdated(Core::Id)));
DeviceManager *dm = DeviceManager::instance();
connect(dm, SIGNAL(deviceListChanged()), this, SLOT(devicesChanged()));
connect(dm, SIGNAL(deviceAdded(Core::Id)), this, SLOT(devicesChanged()));
connect(dm, SIGNAL(deviceRemoved(Core::Id)), this, SLOT(devicesChanged()));
connect(dm, SIGNAL(deviceUpdated(Core::Id)), this, SLOT(deviceUpdated(Core::Id)));
connect(KitManager::instance(), SIGNAL(kitUpdated(ProjectExplorer::Kit*)),
this, SLOT(kitUpdated(ProjectExplorer::Kit*)));
......@@ -472,19 +471,9 @@ void DeviceKitInformation::kitUpdated(Kit *k)
setup(k); // Set default device if necessary
}
void DeviceKitInformation::deviceAdded(const Core::Id &id)
void DeviceKitInformation::devicesChanged()
{
Q_UNUSED(id);
DeviceMatcher m;
foreach (Kit *k, KitManager::instance()->kits(&m)) {
setup(k); // Set default device if necessary
}
}
void DeviceKitInformation::deviceRemoved(const Core::Id &id)
{
DeviceMatcher m(id);
foreach (Kit *k, KitManager::instance()->kits(&m))
foreach (Kit *k, KitManager::instance()->kits())
setup(k); // Set default device if necessary
}
......
......@@ -215,9 +215,8 @@ public:
private slots:
void kitsWereLoaded();
void deviceAdded(const Core::Id &id);
void deviceRemoved(const Core::Id &id);
void deviceUpdated(const Core::Id &id);
void devicesChanged();
void kitUpdated(ProjectExplorer::Kit *k);
};
......
......@@ -380,13 +380,21 @@ const QList<Project *> &SessionManager::projects() const
QStringList SessionManager::dependencies(const QString &proName) const
{
QStringList result;
foreach (const QString &dep, m_depMap.value(proName))
result += dependencies(dep);
result << proName;
dependencies(proName, result);
return result;
}
void SessionManager::dependencies(const QString &proName, QStringList &result) const
{
QStringList depends = m_depMap.value(proName);
foreach (const QString &dep, depends)
dependencies(dep, result);
if (!result.contains(proName))
result.append(proName);
}
QStringList SessionManager::dependenciesOrder() const
{
QList<QPair<QString, QStringList> > unordered;
......
......@@ -160,6 +160,7 @@ private:
bool recursiveDependencyCheck(const QString &newDep, const QString &checkDep) const;
QStringList dependencies(const QString &proName) const;
QStringList dependenciesOrder() const;
void dependencies(const QString &proName, QStringList &result) const;
SessionNode *m_sessionNode;
QString m_sessionName;
......
......@@ -229,7 +229,7 @@ void QbsInstallStep::setInstallRoot(const QString &ir)
{
if (m_qbsInstallOptions.installRoot() == ir)
return;
m_qbsInstallOptions.installRoot() = ir;
m_qbsInstallOptions.setInstallRoot(ir);
emit changed();
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment