diff options
Diffstat (limited to 'src/qml/jsruntime/qv4context.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4context.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4context.cpp b/src/qml/jsruntime/qv4context.cpp index 85bcadd8d2..40c02ef4ee 100644 --- a/src/qml/jsruntime/qv4context.cpp +++ b/src/qml/jsruntime/qv4context.cpp @@ -475,3 +475,19 @@ ReturnedValue ExecutionContext::getPropertyAndBase(String *name, Heap::Object ** ScopedValue n(scope, name); return engine()->throwReferenceError(n); } + +Heap::FunctionObject *ExecutionContext::getFunctionObject() const +{ + Scope scope(d()->engine); + ScopedContext it(scope, this->d()); + for (; it; it = it->d()->parent) { + if (const CallContext *callCtx = it->asCallContext()) + return callCtx->d()->function; + else if (it->asCatchContext() || it->asWithContext()) + continue; // look in the parent context for a FunctionObject + else + break; + } + + return 0; +} |