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 <hjk@qt.io>
This commit is contained in:
Ulf Hermann
2017-03-09 14:35:48 +01:00
parent dbe77890cd
commit cb63af70bc

View File

@@ -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;