From afb499a1384292c3cc40c4aa37d6990a3e1096ca Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 4 Jun 2020 15:45:08 +0200 Subject: [PATCH] QmlJSCheck: Add Error message for recursively instantiated type Change-Id: I68b46a929c65fb21ee8473cda44f7de4e40009c7 Reviewed-by: Thomas Hartmann --- src/libs/qmljs/qmljscheck.cpp | 3 +++ src/libs/qmljs/qmljsstaticanalysismessage.cpp | 2 ++ src/libs/qmljs/qmljsstaticanalysismessage.h | 1 + 3 files changed, 6 insertions(+) diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp index 65069cff59e..b90236e026b 100644 --- a/src/libs/qmljs/qmljscheck.cpp +++ b/src/libs/qmljs/qmljscheck.cpp @@ -942,6 +942,9 @@ void Check::visitQmlObject(Node *ast, UiQualifiedId *typeId, if (checkTypeForDesignerSupport(typeId)) addMessage(WarnUnsupportedTypeInVisualDesigner, typeErrorLocation, typeName); + if (QFileInfo(_doc->fileName()).baseName() == getRightMostIdentifier(typeId)->name.toString()) + addMessage(ErrTypeIsInstantiatedRecursively, typeErrorLocation, typeName); + if (checkTypeForQmlUiSupport(typeId)) addMessage(ErrUnsupportedTypeInQmlUi, typeErrorLocation, typeName); diff --git a/src/libs/qmljs/qmljsstaticanalysismessage.cpp b/src/libs/qmljs/qmljsstaticanalysismessage.cpp index 4bbd00bbf5d..10f918abe47 100644 --- a/src/libs/qmljs/qmljsstaticanalysismessage.cpp +++ b/src/libs/qmljs/qmljsstaticanalysismessage.cpp @@ -245,6 +245,8 @@ StaticAnalysisMessages::StaticAnalysisMessages() tr("Duplicate import (%1)."), 1); newMsg(ErrHitMaximumRecursion, Error, tr("Hit maximum recursion limit when visiting AST.")); + newMsg(ErrTypeIsInstantiatedRecursively, Error, + tr("Type cannot be instantiated recursively (%1)."), 1); } } // anonymous namespace diff --git a/src/libs/qmljs/qmljsstaticanalysismessage.h b/src/libs/qmljs/qmljsstaticanalysismessage.h index 50a70ab2096..64a8baa4e00 100644 --- a/src/libs/qmljs/qmljsstaticanalysismessage.h +++ b/src/libs/qmljs/qmljsstaticanalysismessage.h @@ -89,6 +89,7 @@ enum Type MaybeWarnEqualityTypeCoercion = 126, WarnConfusingExpressionStatement = 127, StateCannotHaveChildItem = 128, + ErrTypeIsInstantiatedRecursively = 129, HintDeclarationsShouldBeAtStartOfFunction = 201, HintOneStatementPerLine = 202, WarnImperativeCodeNotEditableInVisualDesigner = 203,