diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-01-18 12:34:59 +0100 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@nokia.com> | 2010-01-18 13:40:44 +0100 |
commit | a704b974b52eed7771078047d3a03015e1d6984f (patch) | |
tree | 56442910920a74939108f37c67d9cc385edfa131 /src/plugins/debugger/script/scriptengine.cpp | |
parent | f717f51bacc66b5f5b181b339dcb5ebf986a52a9 (diff) | |
download | qt-creator-a704b974b52eed7771078047d3a03015e1d6984f.tar.gz |
Script engine: Fix locals/QT_NO_CAST_FROM_ASCII
Diffstat (limited to 'src/plugins/debugger/script/scriptengine.cpp')
-rw-r--r-- | src/plugins/debugger/script/scriptengine.cpp | 152 |
1 files changed, 80 insertions, 72 deletions
diff --git a/src/plugins/debugger/script/scriptengine.cpp b/src/plugins/debugger/script/scriptengine.cpp index ca6989c252..f5197a6439 100644 --- a/src/plugins/debugger/script/scriptengine.cpp +++ b/src/plugins/debugger/script/scriptengine.cpp @@ -27,6 +27,8 @@ ** **************************************************************************/ +#define QT_NO_CAST_FROM_ASCII + #include "scriptengine.h" #include "debuggerdialogs.h" @@ -52,7 +54,6 @@ #include <QtCore/QFileInfo> #include <QtCore/QTimer> -#include <QtGui/QAction> #include <QtGui/QApplication> #include <QtGui/QToolTip> @@ -286,8 +287,8 @@ bool ScriptEngine::importExtensions() extensions.append(QLatin1String(qtExtensionsC[e])); if (m_scriptEngine->importedExtensions().contains(extensions.front())) return true; - QDir dir("/home/apoenitz/dev/qtscriptgenerator"); - if (!dir.cd("plugins")) { + QDir dir(QLatin1String("/home/apoenitz/dev/qtscriptgenerator")); + if (!dir.cd(QLatin1String("plugins"))) { fprintf(stderr, "plugins folder does not exist -- did you build the bindings?\n"); return false; } @@ -313,7 +314,7 @@ bool ScriptEngine::importExtensions() "Make sure that the bindings have been built, " "and that this executable and the plugins are " "using compatible Qt libraries.", - qPrintable(failExtensions.join(", ")), qPrintable(dir.absolutePath())); + qPrintable(failExtensions.join(QLatin1String(", "))), qPrintable(dir.absolutePath())); } } return failExtensions.isEmpty(); @@ -495,7 +496,7 @@ void ScriptEngine::setToolTipExpression(const QPoint &mousePos, */ QToolTip::hideText(); - if (exp.isEmpty() || exp.startsWith("#")) { + if (exp.isEmpty() || exp.startsWith(QLatin1Char('#'))) { QToolTip::hideText(); return; } @@ -505,18 +506,18 @@ void ScriptEngine::setToolTipExpression(const QPoint &mousePos, return; } - if (exp.startsWith('"') && exp.endsWith('"')) { + if (exp.startsWith(QLatin1Char('"')) && exp.endsWith(QLatin1Char('"'))) { QToolTip::showText(m_toolTipPos, tr("String literal %1").arg(exp)); return; } - if (exp.startsWith("++") || exp.startsWith("--")) - exp = exp.mid(2); + if (exp.startsWith(QLatin1String("++")) || exp.startsWith(QLatin1String("--"))) + exp.remove(0, 2); - if (exp.endsWith("++") || exp.endsWith("--")) - exp = exp.mid(2); + if (exp.endsWith(QLatin1String("++")) || exp.endsWith(QLatin1String("--"))) + exp.remove(0, 2); - if (exp.startsWith("<") || exp.startsWith("[")) + if (exp.startsWith(QLatin1Char('<')) || exp.startsWith(QLatin1Char('['))) return; if (hasSideEffects(exp)) { @@ -549,8 +550,8 @@ void ScriptEngine::setToolTipExpression(const QPoint &mousePos, void ScriptEngine::assignValueInDebugger(const QString &expression, const QString &value) { - XSDEBUG("ASSIGNING: " << expression + '=' + value); - m_scriptEngine->evaluate(expression + '=' + value); + XSDEBUG("ASSIGNING: " << (expression + QLatin1Char('=') + value)); + m_scriptEngine->evaluate(expression + QLatin1Char('=') + value); updateLocals(); } @@ -652,16 +653,17 @@ void ScriptEngine::updateLocals() manager()->stackHandler()->setFrames(stackFrames); // - // Build locals + // Build locals, deactivate agent meanwhile. // + m_scriptEngine->setAgent(0); + WatchData data; data.iname = "local"; - data.name = "local"; + data.name = QString::fromLatin1(data.iname); data.scriptValue = context->activationObject(); manager()->watchHandler()->beginCycle(); updateSubItem(data); manager()->watchHandler()->endCycle(); - // FIXME: Use an extra thread. This here is evil m_stopped = true; showStatusMessage(tr("Stopped."), 5000); @@ -669,116 +671,122 @@ void ScriptEngine::updateLocals() //SDEBUG("LOOPING"); QApplication::processEvents(); } - //SDEBUG("RUNNING AGAIN"); + setState(InferiorRunningRequested); + setState(InferiorRunning); + // Clear any exceptions occurred during locals evaluation. + m_scriptEngine->clearExceptions(); + m_scriptEngine->setAgent(m_scriptAgent.data()); + SDEBUG("Continuing"); } void ScriptEngine::updateWatchData(const WatchData &data) { updateSubItem(data); - //manager()->watchHandler()->rebuildModel(); +} + +static inline QString msgDebugInsert(const WatchData &d0, const QList<WatchData>& children) +{ + QString rc; + QTextStream str(&rc); + str << "INSERTING " << d0.toString() << '\n'; + foreach(const WatchData &c, children) + str << " " << c.toString() << '\n'; + return rc; } void ScriptEngine::updateSubItem(const WatchData &data0) { WatchData data = data0; - //SDEBUG("\nUPDATE SUBITEM: " << data.toString()); + QList<WatchData> children; + SDEBUG("\nUPDATE SUBITEM: " << data.toString() << data.scriptValue.toString()); QTC_ASSERT(data.isValid(), return); if (data.isTypeNeeded() || data.isValueNeeded()) { - QScriptValue ob = data.scriptValue; + const QScriptValue &ob = data.scriptValue; if (ob.isArray()) { - data.setType("Array"); - data.setValue(" "); + data.setType(QLatin1String("Array"), false); + data.setValue(QString(QLatin1Char(' '))); } else if (ob.isBool()) { - data.setType("Bool"); - data.setValue(ob.toBool() ? "true" : "false"); + data.setType(QLatin1String("Bool"), false); + data.setValue(ob.toBool() ? QLatin1String("true") : QLatin1String("false")); data.setHasChildren(false); } else if (ob.isDate()) { - data.setType("Date"); - data.setValue(ob.toDateTime().toString().toUtf8()); + data.setType(QLatin1String("Date"), false); + data.setValue(ob.toDateTime().toString()); data.setHasChildren(false); } else if (ob.isError()) { - data.setType("Error"); - data.setValue(" "); + data.setType(QLatin1String("Error"), false); + data.setValue(QString(QLatin1Char(' '))); } else if (ob.isFunction()) { - data.setType("Function"); - data.setValue(" "); + data.setType(QLatin1String("Function"), false); + data.setValue(QString(QLatin1Char(' '))); } else if (ob.isNull()) { - data.setType("<null>"); - data.setValue("<null>"); + const QString nullValue = QLatin1String("<null>"); + data.setType(nullValue, false); + data.setValue(nullValue); } else if (ob.isNumber()) { - data.setType("Number"); - data.setValue(QString::number(ob.toNumber()).toUtf8()); + data.setType(QLatin1String("Number"), false); + data.setValue(QString::number(ob.toNumber())); data.setHasChildren(false); } else if (ob.isObject()) { - data.setType("Object"); - data.setValue(" "); + data.setType(QLatin1String("Object"), false); + data.setValue(QString(QLatin1Char(' '))); } else if (ob.isQMetaObject()) { - data.setType("QMetaObject"); - data.setValue(" "); + data.setType(QLatin1String("QMetaObject"), false); + data.setValue(QString(QLatin1Char(' '))); } else if (ob.isQObject()) { - data.setType("QObject"); - data.setValue(" "); + data.setType(QLatin1String("QObject"), false); + data.setValue(QString(QLatin1Char(' '))); } else if (ob.isRegExp()) { - data.setType("RegExp"); - data.setValue(ob.toRegExp().pattern().toUtf8()); + data.setType(QLatin1String("RegExp"), false); + data.setValue(ob.toRegExp().pattern()); } else if (ob.isString()) { - data.setType("String"); - data.setValue(ob.toString().toUtf8()); + data.setType(QLatin1String("String"), false); + data.setValue(ob.toString()); } else if (ob.isVariant()) { - data.setType("Variant"); - data.setValue(" "); + data.setType(QLatin1String("Variant"), false); + data.setValue(QString(QLatin1Char(' '))); } else if (ob.isUndefined()) { - data.setType("<undefined>"); - data.setValue("<unknown>"); + data.setType(QLatin1String("<undefined>"), false); + data.setValue(QLatin1String("<unknown>")); data.setHasChildren(false); } else { - data.setType("<unknown>"); - data.setValue("<unknown>"); + const QString unknown = QLatin1String("<unknown>"); + data.setType(unknown, false); + data.setValue(unknown); data.setHasChildren(false); } - manager()->watchHandler()->insertData(data); - return; } if (data.isChildrenNeeded()) { - int numChild = 0; QScriptValueIterator it(data.scriptValue); while (it.hasNext()) { it.next(); WatchData data1; - data1.iname = data.iname + "." + it.name().toLatin1(); + data1.iname = data.iname + '.' + it.name().toLatin1(); data1.exp = it.name().toLatin1(); data1.name = it.name(); data1.scriptValue = it.value(); - if (manager()->watchHandler()->isExpandedIName(data1.iname)) + if (manager()->watchHandler()->isExpandedIName(data1.iname)) { data1.setChildrenNeeded(); - else + } else { data1.setChildrenUnneeded(); - manager()->watchHandler()->insertData(data1); - ++numChild; + } + children.push_back(data1); } - //SDEBUG(" ... CHILDREN: " << numChild); - data.setHasChildren(numChild > 0); + data.setHasChildren(!children.isEmpty()); data.setChildrenUnneeded(); - manager()->watchHandler()->insertData(data); - return; } if (data.isHasChildrenNeeded()) { - int numChild = 0; QScriptValueIterator it(data.scriptValue); - while (it.hasNext()) { - it.next(); - ++numChild; - } - data.setHasChildren(numChild > 0); - //SDEBUG(" ... CHILDCOUNT: " << numChild); - manager()->watchHandler()->insertData(data); - return; + data.setHasChildren(it.hasNext()); } - QTC_ASSERT(false, return); + SDEBUG(msgDebugInsert(data, children)); + manager()->watchHandler()->insertData(data); + if (!children.isEmpty()) + manager()->watchHandler()->insertBulkData(children); } void ScriptEngine::showDebuggerOutput(int channel, const QString &m) |