From 45efd5b5b10395f6df71ef51889187c3056f4bd0 Mon Sep 17 00:00:00 2001 From: Christian Kamm <christian.d.kamm@nokia.com> Date: Tue, 16 Feb 2010 13:28:43 +0100 Subject: [PATCH] Don't show 'invalid property name' errors if we can't resolve the type. The idea is that it may be a plugin-provided type. We don't want user code to be riddled with error markers in that case. Reviewed-by: Roberto Raggi --- src/libs/qmljs/qmljscheck.cpp | 12 +++++++++--- src/libs/qmljs/qmljscheck.h | 3 ++- src/plugins/qmljseditor/qmljseditor.cpp | 9 +++++---- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp index d265f2d6333..75759b26424 100644 --- a/src/libs/qmljs/qmljscheck.cpp +++ b/src/libs/qmljs/qmljscheck.cpp @@ -71,7 +71,7 @@ bool Check::visit(UiProgram *ast) bool Check::visit(UiObjectDefinition *ast) { - visitQmlObject(ast, ast->initializer); + visitQmlObject(ast, ast->qualifiedTypeNameId, ast->initializer); return false; } @@ -79,12 +79,18 @@ bool Check::visit(UiObjectBinding *ast) { checkScopeObjectMember(ast->qualifiedId); - visitQmlObject(ast, ast->initializer); + visitQmlObject(ast, ast->qualifiedTypeNameId, ast->initializer); return false; } -void Check::visitQmlObject(AST::Node *ast, AST::UiObjectInitializer *initializer) +void Check::visitQmlObject(Node *ast, UiQualifiedId *typeId, + UiObjectInitializer *initializer) { + if (! _context.lookupType(_doc.data(), typeId)) { + warning(typeId->identifierToken, QLatin1String("unknown type")); + return; + } + const ObjectValue *oldScopeObject = _context.qmlScopeObject(); const ObjectValue *oldExtraScope = _extraScope; const bool oldAllowAnyProperty = _allowAnyProperty; diff --git a/src/libs/qmljs/qmljscheck.h b/src/libs/qmljs/qmljscheck.h index 452b4b7c909..dea80974179 100644 --- a/src/libs/qmljs/qmljscheck.h +++ b/src/libs/qmljs/qmljscheck.h @@ -53,7 +53,8 @@ protected: virtual bool visit(AST::UiArrayBinding *ast); private: - void visitQmlObject(AST::Node *ast, AST::UiObjectInitializer *initializer); + void visitQmlObject(AST::Node *ast, AST::UiQualifiedId *typeId, + AST::UiObjectInitializer *initializer); void checkScopeObjectMember(const AST::UiQualifiedId *id); void warning(const AST::SourceLocation &loc, const QString &message); diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index 6360da2a87e..319dc009551 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -1114,9 +1114,6 @@ static void appendExtraSelectionsForMessages( const QTextDocument *document) { foreach (const DiagnosticMessage &d, messages) { - if (d.isWarning()) - continue; - const int line = d.loc.startLine; const int column = qMax(1U, d.loc.startColumn); @@ -1130,7 +1127,11 @@ static void appendExtraSelectionsForMessages( else sel.cursor.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor); - sel.format.setUnderlineColor(Qt::red); + if (d.isWarning()) + sel.format.setUnderlineColor(Qt::darkYellow); + else + sel.format.setUnderlineColor(Qt::red); + sel.format.setUnderlineStyle(QTextCharFormat::WaveUnderline); sel.format.setToolTip(d.message); -- GitLab