Sur cette page

Erreurs de profondeur de récursivité

Cette catégorie d'avertissement est désignée par qmllint sous le nom « [recursion-depth-errors] ».

Profondeur maximale d'une instruction ou d'une expression dépassée

Que s'est-il passé ?

Une instruction ou une expression QML était trop profondément imbriquée pour le compilateur. Cela ne se produit généralement que pour le code généré, où les instructions ou expressions peuvent être très longues, car la limite de récursivité est habituellement suffisante pour tout document QML raisonnable.

Pourquoi est-ce un problème ?

Le moteur QML ne pourra pas exécuter ce code.

Exemple

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
}

Pour corriger cet avertissement, générez automatiquement des morceaux de code plus courts. Divisez les composants profondément imbriqués en plusieurs fichiers ou en composants intégrés, ou divisez les expressions profondément imbriquées en plusieurs expressions :

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 {}
}

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.