Details
-
Bug
-
Resolution: Out of scope
-
Not Evaluated
-
None
-
5.4.0
-
None
Description
QScriptEngine engine; engine.evaluate( "var obj={" " testObj:{" " testVal:1" " }" "};" "" "function see(a){" " print ('typeof a = '+ typeof a); " " print ('typeof a.testObj = '+ typeof a['testObj']); " " print(' keys = ' + Object.keys(a).join(',')); " "}" ); qDebug() << engine.globalObject().property("obj").toVariant(); qDebug() << engine.newVariant( engine.globalObject().property("obj").toVariant() ).toVariant(); engine.globalObject().property("see").call( QScriptValue(), QScriptValueList() << engine.globalObject().property("obj") ); qDebug() << "------------SEE BUG DOWN-------------------"; engine.globalObject().property("see").call( QScriptValue(), QScriptValueList() << engine.newVariant( engine.globalObject().property("obj").toVariant() ) );
//In stderr & stdout
QVariant(QVariantMap, QMap(("testObj", QVariant(QVariantMap, QMap(("testVal", QVariant(int, 1) ) ) ) ) ) )
QVariant(QVariantMap, QMap(("testObj", QVariant(QVariantMap, QMap(("testVal", QVariant(int, 1) ) ) ) ) ) )
typeof a = object
typeof a.testObj = object
keys = testObj
-----------SEE BUG DOWN------------------
typeof a = object
typeof a.testObj = undefined
keys =
The reason - not full implement of class QVariantDelegate. Not overloaded
virtual bool getOwnPropertySlot(QScriptObject*, JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&); virtual bool getOwnPropertyDescriptor(QScriptObject*, JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertyDescriptor&); virtual void put(QScriptObject*, JSC::ExecState* exec, const JSC::Identifier& propertyName, JSC::JSValue, JSC::PutPropertySlot&); virtual bool deleteProperty(QScriptObject*, JSC::ExecState*, const JSC::Identifier& propertyName); virtual void getOwnPropertyNames(QScriptObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode mode = JSC::ExcludeDontEnumProperties);