diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index 07a9d247327cdfeaccc28d457ec3410ef17d4e28..0b5eb1943cfcd65cc129671fac88180678990679 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -768,10 +768,21 @@ bool Check::visit(UiPublicMember *ast)
                 QString preferedType;
                 if (init->asNumberValue())
                     preferedType = tr("'int' or 'real'");
-                if (init->asStringValue())
+                else if (init->asStringValue())
                     preferedType = QLatin1String("'string'");
-                if (init->asBooleanValue())
+                else if (init->asBooleanValue())
                     preferedType = QLatin1String("'bool'");
+                else if (init->asColorValue())
+                    preferedType = QLatin1String("'color'");
+                else if (init == _context->valueOwner()->qmlPointObject())
+                    preferedType = QLatin1String("'point'");
+                else if (init == _context->valueOwner()->qmlRectObject())
+                    preferedType = QLatin1String("'rect'");
+                else if (init == _context->valueOwner()->qmlSizeObject())
+                    preferedType = QLatin1String("'size'");
+                else if (init == _context->valueOwner()->qmlVector3DObject())
+                    preferedType = QLatin1String("'vector3d'");
+
                 if (!preferedType.isEmpty())
                     addMessage(HintPreferNonVarPropertyType, ast->typeToken, preferedType);
             }
diff --git a/src/libs/qmljs/qmljsvalueowner.cpp b/src/libs/qmljs/qmljsvalueowner.cpp
index 0b3a7bd265281ae7e5b3f4f59c5cf602b760acf4..cc2d77b7d1c9984d837e9598480707354d413a0e 100644
--- a/src/libs/qmljs/qmljsvalueowner.cpp
+++ b/src/libs/qmljs/qmljsvalueowner.cpp
@@ -849,47 +849,6 @@ void ValueOwner::initializePrototypes()
     f->setOptionalNamedArgumentCount(2);
     _globalObject->setMember("JSON", json);
 
-    // global Qt object, in alphabetic order
-    _qtObject = newObject(/*prototype */ 0);
-    addFunction(_qtObject, QLatin1String("atob"), 1);
-    addFunction(_qtObject, QLatin1String("btoa"), 1);
-    addFunction(_qtObject, QLatin1String("createComponent"), 1);
-    addFunction(_qtObject, QLatin1String("createQmlObject"), 3);
-    addFunction(_qtObject, QLatin1String("darker"), 1);
-    addFunction(_qtObject, QLatin1String("fontFamilies"), 0);
-    addFunction(_qtObject, QLatin1String("formatDate"), 2);
-    addFunction(_qtObject, QLatin1String("formatDateTime"), 2);
-    addFunction(_qtObject, QLatin1String("formatTime"), 2);
-    addFunction(_qtObject, QLatin1String("hsla"), 4);
-    addFunction(_qtObject, QLatin1String("include"), 2);
-    addFunction(_qtObject, QLatin1String("isQtObject"), 1);
-    addFunction(_qtObject, QLatin1String("lighter"), 1);
-    addFunction(_qtObject, QLatin1String("md5"), 1);
-    addFunction(_qtObject, QLatin1String("openUrlExternally"), 1);
-    addFunction(_qtObject, QLatin1String("point"), 2);
-    addFunction(_qtObject, QLatin1String("quit"), 0);
-    addFunction(_qtObject, QLatin1String("rect"), 4);
-    addFunction(_qtObject, QLatin1String("resolvedUrl"), 1);
-    addFunction(_qtObject, QLatin1String("rgba"), 4);
-    addFunction(_qtObject, QLatin1String("size"), 2);
-    addFunction(_qtObject, QLatin1String("tint"), 2);
-    addFunction(_qtObject, QLatin1String("vector3d"), 3);
-    _globalObject->setMember(QLatin1String("Qt"), _qtObject);
-
-    // firebug/webkit compat
-    ObjectValue *consoleObject = newObject(/*prototype */ 0);
-    addFunction(consoleObject, QLatin1String("log"), 1);
-    addFunction(consoleObject, QLatin1String("debug"), 1);
-    _globalObject->setMember(QLatin1String("console"), consoleObject);
-
-    // translation functions
-    addFunction(_globalObject, QLatin1String("qsTr"), 3);
-    addFunction(_globalObject, QLatin1String("QT_TR_NOOP"), 1);
-    addFunction(_globalObject, QLatin1String("qsTranslate"), 5);
-    addFunction(_globalObject, QLatin1String("QT_TRANSLATE_NOOP"), 2);
-    addFunction(_globalObject, QLatin1String("qsTrId"), 2);
-    addFunction(_globalObject, QLatin1String("QT_TRID_NOOP"), 1);
-
     // QML objects
     _qmlFontObject = newObject(/*prototype =*/ 0);
     _qmlFontObject->setClassName(QLatin1String("Font"));
@@ -928,6 +887,47 @@ void ValueOwner::initializePrototypes()
     _qmlVector3DObject->setMember("x", realValue());
     _qmlVector3DObject->setMember("y", realValue());
     _qmlVector3DObject->setMember("z", realValue());
+
+    // global Qt object, in alphabetic order
+    _qtObject = newObject(/*prototype */ 0);
+    addFunction(_qtObject, QLatin1String("atob"), &_stringValue, 1);
+    addFunction(_qtObject, QLatin1String("btoa"), &_stringValue, 1);
+    addFunction(_qtObject, QLatin1String("createComponent"), 1);
+    addFunction(_qtObject, QLatin1String("createQmlObject"), 3);
+    addFunction(_qtObject, QLatin1String("darker"), &_colorValue, 1);
+    addFunction(_qtObject, QLatin1String("fontFamilies"), 0);
+    addFunction(_qtObject, QLatin1String("formatDate"), &_stringValue, 2);
+    addFunction(_qtObject, QLatin1String("formatDateTime"), &_stringValue, 2);
+    addFunction(_qtObject, QLatin1String("formatTime"), &_stringValue, 2);
+    addFunction(_qtObject, QLatin1String("hsla"), &_colorValue, 4);
+    addFunction(_qtObject, QLatin1String("include"), 2);
+    addFunction(_qtObject, QLatin1String("isQtObject"), &_booleanValue, 1);
+    addFunction(_qtObject, QLatin1String("lighter"), &_colorValue, 1);
+    addFunction(_qtObject, QLatin1String("md5"), &_stringValue, 1);
+    addFunction(_qtObject, QLatin1String("openUrlExternally"), &_booleanValue, 1);
+    addFunction(_qtObject, QLatin1String("point"), _qmlPointObject, 2);
+    addFunction(_qtObject, QLatin1String("quit"), 0);
+    addFunction(_qtObject, QLatin1String("rect"), _qmlRectObject, 4);
+    addFunction(_qtObject, QLatin1String("resolvedUrl"), &_urlValue, 1);
+    addFunction(_qtObject, QLatin1String("rgba"), &_colorValue, 4);
+    addFunction(_qtObject, QLatin1String("size"), _qmlSizeObject, 2);
+    addFunction(_qtObject, QLatin1String("tint"), &_colorValue, 2);
+    addFunction(_qtObject, QLatin1String("vector3d"), _qmlVector3DObject, 3);
+    _globalObject->setMember(QLatin1String("Qt"), _qtObject);
+
+    // firebug/webkit compat
+    ObjectValue *consoleObject = newObject(/*prototype */ 0);
+    addFunction(consoleObject, QLatin1String("log"), 1);
+    addFunction(consoleObject, QLatin1String("debug"), 1);
+    _globalObject->setMember(QLatin1String("console"), consoleObject);
+
+    // translation functions
+    addFunction(_globalObject, QLatin1String("qsTr"), 3);
+    addFunction(_globalObject, QLatin1String("QT_TR_NOOP"), 1);
+    addFunction(_globalObject, QLatin1String("qsTranslate"), 5);
+    addFunction(_globalObject, QLatin1String("QT_TRANSLATE_NOOP"), 2);
+    addFunction(_globalObject, QLatin1String("qsTrId"), 2);
+    addFunction(_globalObject, QLatin1String("QT_TRID_NOOP"), 1);
 }
 
 const ObjectValue *ValueOwner::qmlKeysObject()
diff --git a/tests/auto/qml/codemodel/check/avoid-var.qml b/tests/auto/qml/codemodel/check/avoid-var.qml
new file mode 100644
index 0000000000000000000000000000000000000000..edbd9138c68beef6c1f93cf79020c2307b747e6e
--- /dev/null
+++ b/tests/auto/qml/codemodel/check/avoid-var.qml
@@ -0,0 +1,20 @@
+import QtQuick 1.0
+
+Item {
+    property int x: 10
+    property var x: 10 // 311 14 16
+    property string x: "abc"
+    property var x: "abc" // 311 14 16
+    property string x: true
+    property var x: true // 311 14 16
+    property color x: Qt.rgba(1, 1, 1, 1)
+    property var x: Qt.rgba(1, 1, 1, 1) // 311 14 16
+    property point x: Qt.point(1, 1)
+    property var x: Qt.point(1, 1) // 311 14 16
+    property rect x: Qt.rect(1, 1, 1, 1)
+    property var x: Qt.rect(1, 1, 1, 1) // 311 14 16
+    property size x: Qt.size(1, 1)
+    property var x: Qt.size(1, 1) // 311 14 16
+    property vector3d x: Qt.vector3d(1, 1, 1)
+    property var x: Qt.vector3d(1, 1, 1) // 311 14 16
+}
diff --git a/tests/auto/qml/codemodel/check/check.pro b/tests/auto/qml/codemodel/check/check.pro
index f965017f897ebf2f611872b894a0277782d884c3..966bb32bf2d99403f3c8f0eb1e1eff44fd06e177 100644
--- a/tests/auto/qml/codemodel/check/check.pro
+++ b/tests/auto/qml/codemodel/check/check.pro
@@ -4,6 +4,7 @@ DEFINES+=QTCREATORDIR=\\\"$$IDE_SOURCE_TREE\\\"
 DEFINES+=TESTSRCDIR=\\\"$$PWD\\\"
 
 include($$IDE_SOURCE_TREE/src/libs/utils/utils.pri)
+include($$IDE_SOURCE_TREE/src/libs/languageutils/languageutils.pri)
 include($$IDE_SOURCE_TREE/src/libs/qmljs/qmljs.pri)
 
 TARGET = tst_codemodel_check
diff --git a/tests/auto/qml/codemodel/check/tst_check.cpp b/tests/auto/qml/codemodel/check/tst_check.cpp
index 68c0cbb600bbd0f4e4a96e62f7446a432ec98ac2..0c529428877b4d6ca4fc7ffd2a130d121908b274 100644
--- a/tests/auto/qml/codemodel/check/tst_check.cpp
+++ b/tests/auto/qml/codemodel/check/tst_check.cpp
@@ -172,8 +172,10 @@ void tst_Check::test()
         }
     }
     if (expectedMessages.size() > messages.size()) {
-        Message missingMessage = expectedMessages.at(messages.size());
-        qDebug() << "expected more messages: " << missingMessage.location.startLine << missingMessage.message;
+        for (int i = messages.size(); i < expectedMessages.size(); ++i) {
+            Message missingMessage = expectedMessages.at(i);
+            qDebug() << "expected message of type" << missingMessage.type << "on line" << missingMessage.location.startLine;
+        }
         QFAIL("more messages expected");
     }
 }