summaryrefslogtreecommitdiff
path: root/src/libs/qmljs/qmljscheck.cpp
diff options
context:
space:
mode:
authorThomas Hartmann <Thomas.Hartmann@digia.com>2013-11-13 17:20:01 +0100
committerThomas Hartmann <Thomas.Hartmann@digia.com>2013-11-14 10:03:15 +0100
commitf4aa51565b972f7556d7ab983da62e2c0a05c117 (patch)
treefa10f3c3af29a11d1fd3abc2009554ef5c6f2ba6 /src/libs/qmljs/qmljscheck.cpp
parentefe2f64efe41c3c9ee02c245cae061c3afe4028f (diff)
downloadqt-creator-f4aa51565b972f7556d7ab983da62e2c0a05c117.tar.gz
QmlJS: Add warning if we use a Qt Quick 1 code model for Qt Quick 2
In some cases we use a Qt Quick 1 code model for a file with Qt Quick 2 imports. This patch adds a warning for this, since auto completion is incomplete. Change-Id: I60888fd269c02f38da097104f5ecc982dd65573a Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Diffstat (limited to 'src/libs/qmljs/qmljscheck.cpp')
-rw-r--r--src/libs/qmljs/qmljscheck.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index 09cd99cab5..e693799b32 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -538,10 +538,15 @@ Check::Check(Document::Ptr doc, const ContextPtr &context)
, _scopeBuilder(&_scopeChain)
, _importsOk(false)
, _inStatementBinding(false)
+ , _imports(0)
+ , _isQtQuick2(false)
+
{
- const Imports *imports = context->imports(doc.data());
- if (imports && !imports->importFailed())
+ _imports = context->imports(doc.data());
+ if (_imports && !_imports->importFailed()) {
_importsOk = true;
+ _isQtQuick2 = isQtQuick2();
+ }
_enabledMessages = Message::allMessageTypes().toSet();
disableMessage(HintAnonymousFunctionSpacing);
@@ -737,6 +742,13 @@ void Check::visitQmlObject(Node *ast, UiQualifiedId *typeId,
if (iter.error() != PrototypeIterator::NoError)
typeError = true;
const ObjectValue *lastPrototype = prototypes.last();
+ foreach (const ObjectValue *objectValue, prototypes) {
+ if (objectValue->className() == QLatin1String("QGraphicsObject")
+ && _isQtQuick2) {
+ addMessage(WarnAboutQtQuick1InsteadQtQuick2, typeErrorLocation);
+ }
+ }
+
if (iter.error() == PrototypeIterator::ReferenceResolutionError) {
if (const QmlPrototypeReference *ref =
value_cast<QmlPrototypeReference>(lastPrototype->prototype())) {
@@ -1355,6 +1367,16 @@ void Check::warnAboutUnnecessarySuppressions()
}
}
+bool Check::isQtQuick2() const
+{
+ foreach (const Import &import, _imports->all()) {
+ if (import.info.name() == QLatin1String("QtQuick")
+ && import.info.version().majorVersion() == 2)
+ return true;
+ }
+ return false;
+}
+
bool Check::visit(NewExpression *ast)
{
checkNewExpression(ast->expression);