From eec591ff1c9394a7ffdc103f4d4337ccd708de11 Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Mon, 4 Jul 2011 09:24:24 +0200
Subject: [PATCH] QmlJS: Make 'length' property available on all
 FunctionValues.

Change-Id: I62bb8f41177521db1f3213d6bd804d8e4852560d
Reviewed-on: http://codereview.qt.nokia.com/1044
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@nokia.com>
---
 src/libs/qmljs/qmljsinterpreter.cpp | 13 +------------
 src/libs/qmljs/qmljsinterpreter.h   |  5 -----
 2 files changed, 1 insertion(+), 17 deletions(-)

diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp
index 8e0c63f7f3a..a0ab5d1ab49 100644
--- a/src/libs/qmljs/qmljsinterpreter.cpp
+++ b/src/libs/qmljs/qmljsinterpreter.cpp
@@ -1097,6 +1097,7 @@ void Activation::setArguments(const ValueList &arguments)
 FunctionValue::FunctionValue(ValueOwner *valueOwner)
     : ObjectValue(valueOwner)
 {
+    setMember(QLatin1String("length"), valueOwner->numberValue());
 }
 
 FunctionValue::~FunctionValue()
@@ -1205,18 +1206,6 @@ const Value *Function::argument(int index) const
     return _arguments.at(index);
 }
 
-const Value *Function::lookupMember(const QString &name, const Context *context,
-                                    const ObjectValue **foundInScope, bool examinePrototypes) const
-{
-    if (name == "length") {
-        if (foundInScope)
-            *foundInScope = this;
-        return valueOwner()->numberValue();
-    }
-
-    return FunctionValue::lookupMember(name, context, foundInScope, examinePrototypes);
-}
-
 const Value *Function::invoke(const Activation *activation) const
 {
     return activation->thisObject(); // ### FIXME it should return undefined
diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h
index a56412337f4..4a5f1f57bff 100644
--- a/src/libs/qmljs/qmljsinterpreter.h
+++ b/src/libs/qmljs/qmljsinterpreter.h
@@ -549,11 +549,6 @@ public:
     void addArgument(const Value *argument);
     void setReturnValue(const Value *returnValue);
 
-    // ObjectValue interface
-    virtual const Value *lookupMember(const QString &name, const Context *context,
-                                      const ObjectValue **foundInObject = 0,
-                                      bool examinePrototypes = true) const;
-
     // FunctionValue interface
     virtual const Value *returnValue() const;
     virtual int argumentCount() const;
-- 
GitLab