{"record":{"id":"d3330cbce346cdbb","repo":"slint-ui/slint","slug":"invalid-parent-reference","errorCode":null,"errorMessage":"invalid parent reference","messagePattern":"invalid parent reference","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/compiler/llr/expression.rs","lineNumber":1119,"sourceCode":"            cu: &super::CompilationUnit,\n            sc: SubComponentIdx,\n            parent: Option<&ParentScope<'_>>,\n            path: &[SubComponentInstanceIdx],\n            f: impl FnOnce(ParentScope<'_>) -> R,\n        ) -> R {\n            if let [first, rest @ ..] = path {\n                let ps = ParentScope { sub_component: sc, repeater_index: None, parent };\n                let child = cu.sub_components[sc].sub_components[*first].ty;\n                descend(cu, child, Some(&ps), rest, f)\n            } else {\n                f(ParentScope { sub_component: sc, repeater_index: None, parent })\n            }\n        }\n        let EvaluationScope::SubComponent(mut sc, mut parent) = self.current_scope else {\n            panic!(\"not in a sub-component scope\")\n        };\n        for _ in 0..parent_level {\n            let p = parent.expect(\"invalid parent reference\");\n            sc = p.sub_component;\n            parent = p.parent;\n        }\n        descend(self.compilation_unit, sc, parent, sub_component_path, f)\n    }\n\n    pub fn current_sub_component(&self) -> Option<&super::SubComponent> {\n        let EvaluationScope::SubComponent(i, _) = self.current_scope else { return None };\n        self.compilation_unit.sub_components.get(i)\n    }\n\n    pub fn current_global(&self) -> Option<&super::GlobalComponent> {\n        let EvaluationScope::Global(i) = self.current_scope else { return None };\n        self.compilation_unit.globals.get(i)\n    }\n\n    pub fn parent_sub_component_idx(&self, parent: usize) -> Option<SubComponentIdx> {\n        let EvaluationScope::SubComponent(mut sc, mut par) = self.current_scope else {","sourceCodeStart":1101,"sourceCodeEnd":1137,"githubUrl":"https://github.com/slint-ui/slint/blob/bb937076de3f7919766c1f25e2e969367cf77e9a/internal/compiler/llr/expression.rs#L1101-L1137","documentation":"While lowering an expression in a sub-component scope, walking `parent_level` levels up ran past the root of the parent chain. The parent reference was exhausted but more levels were requested — an invalid or inconsistent parent_level was computed.","triggerScenarios":"A binding or expression uses `parent` (or `100%` sizing via parent references) across more levels than the element's actual nesting depth, e.g. `parent.parent` inside the root sub-component, or a pass that mis-computes `parent_level` for a two-way binding in a deeply repeated subtree.","commonSituations":"User .slint code referencing `parent` at the top-level component; compiler passes counting parent hops wrongly after repeater/sub-component refactorings.","solutions":["Fix the user code so it does not climb above the root component (remove extra `parent.` hops)","In compiler code, verify `parent_level` computation matches the actual sub-component chain depth before lowering","Add a diagnostic in an earlier pass that rejects out-of-range parent references with a user-facing error"],"exampleFix":"// .slint user code — before\nroot-level element referencing parent.parent  // exceeds depth\n// after\nreference only existing parent levels, e.g. `parent` once at most from a child","handlingStrategy":"validation","validationCode":"if parent_level > depth_of(sc) { return Err(\"parent reference exceeds nesting depth\"); }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Avoid `parent.` chains deeper than the actual component nesting in .slint code","Teach an early pass to emit a diagnostic for over-deep parent references"],"tags":["rust","compiler","panic","parent-reference"],"backgroundTag":"internal-invariant-violation","analyzedSha":"bb937076de3f7919766c1f25e2e969367cf77e9a","analyzedAt":"2026-09-16T01:37:20.251Z","contentChangedAt":"2026-09-16T01:37:20.251Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}