Ouptut non-NOTIFYable warnings again
authorAaron Kennedy <aaron.kennedy@nokia.com>
Mon, 25 Jul 2011 05:01:30 +0000 (15:01 +1000)
committerQt by Nokia <qt-info@nokia.com>
Tue, 26 Jul 2011 04:29:54 +0000 (06:29 +0200)
Task-number: QTBUG-20280

Change-Id: Ia950c8c9dfa14e568a306beeb72474b2d5049db1
Reviewed-on: http://codereview.qt.nokia.com/2069
Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>

src/declarative/qml/qdeclarativeexpression.cpp
src/declarative/qml/qdeclarativeexpression_p.h
src/declarative/qml/v8/qv8bindings.cpp

index ebbfb8c..ff19a07 100644 (file)
@@ -516,8 +516,7 @@ v8::Local<v8::Value> QDeclarativeJavaScriptExpression::evaluate(v8::Handle<v8::F
     }
 
     if (!watcher.wasDeleted() && notifyOnValueChanged()) {
-        guardList.updateGuards(m_notifyObject, m_notifyIndex, expressionString(), 
-                               ep->capturedProperties);
+        guardList.updateGuards(m_notifyObject, m_notifyIndex, this, ep->capturedProperties);
     }
 
     if (lastCapturedProperties.count())
@@ -531,7 +530,7 @@ v8::Local<v8::Value> QDeclarativeJavaScriptExpression::evaluate(v8::Handle<v8::F
 }
 
 void QDeclarativeJavaScriptExpression::GuardList::updateGuards(QObject *notifyObject, int notifyIndex,
-                                                               const QStringRef &expression,
+                                                               QDeclarativeJavaScriptExpression *expression,
                                                                const CapturedProperties &properties)
 {
     Q_ASSERT(notifyObject);
@@ -605,10 +604,11 @@ void QDeclarativeJavaScriptExpression::GuardList::updateGuards(QObject *notifyOb
                 }
             }
 
-        } else if (!expression.isEmpty()) {
+        } else {
             if (!outputWarningHeader) {
+                QString e = expression->expressionIdentifier();
                 outputWarningHeader = true;
-                qWarning() << "QDeclarativeExpression: Expression" << expression
+                qWarning() << "QDeclarativeExpression: Expression" << qPrintable(e)
                            << "depends on non-NOTIFYable properties:";
             }
 
index 2a26c26..e9ee699 100644 (file)
@@ -153,7 +153,7 @@ public:
     inline void setScopeObject(QObject *v);
 
 protected:
-    inline virtual QStringRef expressionString();
+    inline virtual QString expressionIdentifier();
 
 private:
     quint32 m_requiresThisObject:1;
@@ -173,7 +173,7 @@ private:
 
         typedef QPODVector<QDeclarativeEnginePrivate::CapturedProperty> CapturedProperties;
         void updateGuards(QObject *guardObject, int guardObjectNotifyIndex,
-                          const QStringRef &expression, const CapturedProperties &properties);
+                          QDeclarativeJavaScriptExpression *, const CapturedProperties &properties);
 
     private:
         QDeclarativeNotifierEndpoint *endpoints;
@@ -213,7 +213,7 @@ public:
     bool expressionFunctionValid:1;
     bool extractExpressionFromFunction:1;
 
-    inline virtual QStringRef expressionString();
+    inline virtual QString expressionIdentifier();
 
     QString expression;
 
@@ -291,9 +291,9 @@ void QDeclarativeJavaScriptExpression::setScopeObject(QObject *v)
     m_scopeObject = v; 
 }
 
-QStringRef QDeclarativeJavaScriptExpression::expressionString() 
+QString QDeclarativeJavaScriptExpression::expressionIdentifier() 
 { 
-    return QStringRef(); 
+    return QString();
 }
 
 QDeclarativeJavaScriptExpression::GuardList::GuardList() 
@@ -323,9 +323,9 @@ QDeclarativeExpression *QDeclarativeExpressionPrivate::get(QDeclarativeExpressio
     return expr->q_func();
 }
 
-QStringRef QDeclarativeExpressionPrivate::expressionString()
+QString QDeclarativeExpressionPrivate::expressionIdentifier()
 {
-    return QStringRef(&expression);
+    return QLatin1String("\"") + expression + QLatin1String("\"");
 }
 
 QT_END_NAMESPACE
index fe881a1..4f5543e 100644 (file)
@@ -63,6 +63,9 @@ public:
 
         void update() { QDeclarativeAbstractBinding::update(); }
 
+        // Inherited from QDeclarativeJavaScriptExpression
+        inline virtual QString expressionIdentifier();
+
         // Inherited from QDeclarativeAbstractBinding
         virtual void setEnabled(bool, QDeclarativePropertyPrivate::WriteFlags flags);
         virtual void update(QDeclarativePropertyPrivate::WriteFlags flags);
@@ -161,6 +164,11 @@ void QV8BindingsPrivate::Binding::update(QDeclarativePropertyPrivate::WriteFlags
     }
 }
 
+QString QV8BindingsPrivate::Binding::expressionIdentifier()
+{
+    return parent->url.toString() + QLatin1String(":") + QString::number(line);
+}
+
 void QV8BindingsPrivate::Binding::destroy()
 {
     enabled = false;