From 1178d623d53317fbd5be4674ba8183b197f57113 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann <Thomas.Hartmann@nokia.com> Date: Tue, 1 Mar 2011 14:36:09 +0100 Subject: [PATCH] QmlJs::Check: using the Option enum to ignore type errors Unifying the api and exposing the options. --- src/libs/qmljs/qmljscheck.cpp | 5 ++--- src/libs/qmljs/qmljscheck.h | 14 ++++++++------ .../designercore/model/texttomodelmerger.cpp | 7 ++++++- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp index a3754470b8e..a7b59253681 100644 --- a/src/libs/qmljs/qmljscheck.cpp +++ b/src/libs/qmljs/qmljscheck.cpp @@ -371,11 +371,10 @@ Check::Check(Document::Ptr doc, const Snapshot &snapshot, const Context *linkedC , _snapshot(snapshot) , _context(*linkedContextNoScope) , _scopeBuilder(&_context, doc, snapshot) - , _ignoreTypeErrors(false) , _options(WarnDangerousNonStrictEqualityChecks | WarnBlocks | WarnWith | WarnVoid | WarnCommaExpression | WarnExpressionStatement | WarnAssignInCondition | WarnUseBeforeDeclaration | WarnDuplicateDeclaration - | WarnCaseWithoutFlowControlEnd) + | WarnCaseWithoutFlowControlEnd | ErrCheckTypeErrors) , _lastValue(0) { } @@ -474,7 +473,7 @@ void Check::visitQmlObject(Node *ast, UiQualifiedId *typeId, _scopeBuilder.push(ast); if (! _context.lookupType(_doc.data(), typeId)) { - if (! _ignoreTypeErrors) + if (_options & ErrCheckTypeErrors) error(typeId->identifierToken, Check::tr("unknown type")); // suppress subsequent errors about scope object lookup by clearing diff --git a/src/libs/qmljs/qmljscheck.h b/src/libs/qmljs/qmljscheck.h index fea38f50cbc..8df87ee0f94 100644 --- a/src/libs/qmljs/qmljscheck.h +++ b/src/libs/qmljs/qmljscheck.h @@ -58,10 +58,6 @@ public: QList<DiagnosticMessage> operator()(); - - void setIgnoreTypeErrors(bool ignore) - { _ignoreTypeErrors = ignore; } - enum Option { WarnDangerousNonStrictEqualityChecks = 1 << 0, WarnAllNonStrictEqualityChecks = 1 << 1, @@ -74,10 +70,17 @@ public: WarnUseBeforeDeclaration = 1 << 8, WarnDuplicateDeclaration = 1 << 9, WarnDeclarationsNotStartOfFunction = 1 << 10, - WarnCaseWithoutFlowControlEnd = 1 << 11 + WarnCaseWithoutFlowControlEnd = 1 << 11, + ErrCheckTypeErrors = 1 << 12 }; Q_DECLARE_FLAGS(Options, Option) + const Options options() const + { return _options; } + + void setOptions(Options options) + { _options = options; } + protected: virtual bool preVisit(AST::Node *ast); virtual void postVisit(AST::Node *ast); @@ -130,7 +133,6 @@ private: QList<DiagnosticMessage> _messages; - bool _ignoreTypeErrors; Options _options; const Interpreter::Value *_lastValue; diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 39c3d9c33bb..5b5f24454b7 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -608,8 +608,13 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH m_document = doc; QList<RewriterView::Error> errors; + + foreach (const QmlJS::DiagnosticMessage &diagnosticMessage, ctxt.diagnosticLinkMessages()) { + errors.append(RewriterView::Error(diagnosticMessage, QUrl::fromLocalFile(doc->fileName()))); + } + Check check(doc, snapshot, m_lookupContext->context()); - check.setIgnoreTypeErrors(true); + check.setOptions(check.options() & ~Check::ErrCheckTypeErrors); foreach (const QmlJS::DiagnosticMessage &diagnosticMessage, check()) if (diagnosticMessage.isError()) errors.append(RewriterView::Error(diagnosticMessage, QUrl::fromLocalFile(doc->fileName()))); -- GitLab