Commit 1178d623 authored by Thomas Hartmann's avatar Thomas Hartmann
Browse files

QmlJs::Check: using the Option enum to ignore type errors

Unifying the api and exposing the options.
parent d6e08c35
......@@ -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
......
......@@ -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;
......
......@@ -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())));
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment