From 20d30b6b3a253eebedc927dbb91685bbec52cfee Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Mon, 26 Mar 2018 22:59:28 +0200 Subject: Add support for proper lexical scoping This is still to some extend work in progress as lexically scoped for loops won't yet do the right thing. let and const variables are still accessible before they are declared, and the global scope doesn't yet have a proper context for lexically declared variables. Change-Id: Ie39f74a8fccdaead437fbf07f9fc228a444c26ed Reviewed-by: Simon Hausmann --- src/plugins/qmltooling/qmldbg_debugger/qv4datacollector.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/plugins/qmltooling/qmldbg_debugger/qv4datacollector.cpp') diff --git a/src/plugins/qmltooling/qmldbg_debugger/qv4datacollector.cpp b/src/plugins/qmltooling/qmldbg_debugger/qv4datacollector.cpp index c33d0026d5..99d106d5f6 100644 --- a/src/plugins/qmltooling/qmldbg_debugger/qv4datacollector.cpp +++ b/src/plugins/qmltooling/qmldbg_debugger/qv4datacollector.cpp @@ -81,8 +81,9 @@ QV4::Heap::CallContext *QV4DataCollector::findScope(QV4::Heap::ExecutionContext for (; scope > 0 && ctx; --scope) ctx = ctx->outer; - return (ctx && ctx->type == QV4::Heap::ExecutionContext::Type_CallContext) ? - static_cast(ctx) : nullptr; + if (!ctx || (ctx->type != QV4::Heap::ExecutionContext::Type_CallContext && ctx->type != QV4::Heap::ExecutionContext::Type_BlockContext)) + return nullptr; + return static_cast(ctx); } QVector QV4DataCollector::getScopeTypes(int frame) @@ -108,8 +109,9 @@ int QV4DataCollector::encodeScopeType(QV4::Heap::ExecutionContext::ContextType s return 2; case QV4::Heap::ExecutionContext::Type_CallContext: return 1; - case QV4::Heap::ExecutionContext::Type_QmlContext: - default: + case QV4::Heap::ExecutionContext::Type_BlockContext: + return 3; + default: // QV4::Heap::ExecutionContext::Type_QmlContext: return -1; } } -- cgit v1.2.3