diff options
author | Thomas Hartmann <Thomas.Hartmann@digia.com> | 2013-11-13 17:20:01 +0100 |
---|---|---|
committer | Thomas Hartmann <Thomas.Hartmann@digia.com> | 2013-11-14 10:03:15 +0100 |
commit | f4aa51565b972f7556d7ab983da62e2c0a05c117 (patch) | |
tree | fa10f3c3af29a11d1fd3abc2009554ef5c6f2ba6 /src/libs/qmljs/qmljscheck.cpp | |
parent | efe2f64efe41c3c9ee02c245cae061c3afe4028f (diff) | |
download | qt-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.cpp | 26 |
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); |