Revision control

++ // Copyright (C) 2023 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
++
++ /*!
++ \ingroup qmllint-warnings-and-errors
++
++ \title Recursion depths errors
++ \brief [recursion-depth-errors] Qml statement or expression is too deeply nested.
++
++ \qmllintwarningcategory recursion-depth-errors
++
++ \section1 Maximum statement or expression depth exceeded
++ \section2 What happened?
++ A QML statement or expression was too deeply nested for the compiler. This usually only happens for
++ generated code where statements or expressions can be very long, as the recursion limit is usually
++ large enough for any sensible QML document.
++
++ \section2 Why is this bad?
++ The QML engine will not be able to run this code.
++
++ \section2 Example
++ \qml
++ import QtQuick
++
++ Item {
++ function f() {
++ let x = 1 + 1 + .... + 1 // maximum depth exceeded: add too many ones together
++ return x
++ }
++
++ Item { Item { .... } } // maximum depth exceeded: too many nested Item's
++ }
++ \endqml
++
++ To fix this warning, auto-generate smaller code pieces. Split deeply nested
++ Components in multiple files or inline components, or split deeply nested
++ expressions into multiple expressions:
++ \qml
++ import QtQuick
++
++ Item {
++ function f() {
++ let x = 1 + 1 + .... + 1 // first half of the split
++ x += 1 + 1 + .... + 1 // second half of the split
++ return x
++ }
++
++ component NestedItem : Item { Item {... }} // first half of the nested Item
++ component DeeplyNestedItem: Item { ... NestedItem{} ... } // second half of the nested Items + NestedItem
++ DeeplyNestedItem {}
++ }
++ \endqml
++ */
++