From 7c1e089fd3d2560322e643c6c1c3b1e73bf04c98 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Fri, 14 Aug 2009 16:57:59 +0200 Subject: Detect evaluation context in the backtrace --- src/script/api/qscriptcontext.cpp | 3 +++ tests/auto/qscriptcontext/tst_qscriptcontext.cpp | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/script/api/qscriptcontext.cpp b/src/script/api/qscriptcontext.cpp index 689ad66..75ad505 100644 --- a/src/script/api/qscriptcontext.cpp +++ b/src/script/api/qscriptcontext.cpp @@ -619,8 +619,11 @@ QString QScriptContext::toString() const QString functionName = info.functionName(); if (functionName.isEmpty()) { if (parentContext()) { + const JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this); if (info.functionType() == QScriptContextInfo::ScriptFunction) result.append(QLatin1String("")); + else if(frame->callerFrame()->hasHostCallFrameFlag()) + result.append(QLatin1String("")); else result.append(QLatin1String("")); } else { diff --git a/tests/auto/qscriptcontext/tst_qscriptcontext.cpp b/tests/auto/qscriptcontext/tst_qscriptcontext.cpp index c72594c..2f96ea0 100644 --- a/tests/auto/qscriptcontext/tst_qscriptcontext.cpp +++ b/tests/auto/qscriptcontext/tst_qscriptcontext.cpp @@ -586,7 +586,7 @@ void tst_QScriptContext::backtrace_data() ).arg("\\n \\n bt('hey'); \\n"); expected << "('hey') at -1" - << "() at 3" //### should be + << "() at 3" << "foo(arg1 = 'hello', arg2 = 456) at testfile:-1" //### line number should be 2 << "() at testfile:4"; @@ -609,7 +609,7 @@ void tst_QScriptContext::backtrace_data() QStringList expected; expected << "('m') at -1" << "bar(a = 'b') at eval.js:2" - << "() at eval.js:4" //### should be + << "() at eval.js:4" << QString("('%1', 'eval.js') at -1").arg(eval_code.replace("\\n", "\n")) << "foo() at testfile:2" << "() at testfile:4"; -- cgit v0.12