From cb63af70bcd08fed66fb8ad6b873041379f11412 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 9 Mar 2017 14:35:48 +0100 Subject: [PATCH] QmlDebugger: Allow functions and scripts to be specified as strings For some of those it doesn't make much sense to assign a ref and the refs are not stable anyway. Change-Id: I7b6855225f883b93930b8d501495ef9dd62be7a2 Reviewed-by: hjk --- src/plugins/debugger/qml/qmlengine.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 36acdc1f35b..06471158854 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -2144,19 +2144,16 @@ StackFrame QmlEnginePrivate::extractStackFrame(const QVariant &bodyVal) return stackFrame; } - QmlV8ObjectData objectData = extractData(body.value("func")); - QString functionName = objectData.value.toString(); - if (functionName.isEmpty()) - functionName = QCoreApplication::translate("QmlEngine", "Anonymous Function"); - stackFrame.function = functionName; + auto extractString = [this](const QVariant &item) { + return ((item.type() == QVariant::String) ? item : extractData(item).value).toString(); + }; - objectData = extractData(body.value("script")); - stackFrame.file = engine->toFileInProject(objectData.value.toString()); + stackFrame.function = extractString(body.value("func")); + if (stackFrame.function.isEmpty()) + stackFrame.function = QCoreApplication::translate("QmlEngine", "Anonymous Function"); + stackFrame.file = engine->toFileInProject(extractString(body.value("script"))); stackFrame.usable = QFileInfo(stackFrame.file).isReadable(); - - objectData = extractData(body.value("receiver")); - stackFrame.receiver = objectData.value.toString(); - + stackFrame.receiver = extractString(body.value("receiver")); stackFrame.line = body.value("line").toInt() + 1; return stackFrame;