{"record":{"id":"f982f168b7aa2ea8","repo":"FyroxEngine/Fyrox","slug":"property-path-is-not-inheritable","errorCode":null,"errorMessage":"Property {path} is not inheritable!","messagePattern":"Property (.+?) is not inheritable!","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"fyrox-graph/src/lib.rs","lineNumber":573,"sourceCode":"                        if let Some(parent_inheritable) = parent_field.as_inheritable_variable() {\n                            parent_value = parent_inheritable.inner_value_ref().try_clone_box();\n                        }\n                    }\n                    Err(e) => Log::err(format!(\n                        \"Failed to resolve parent path {path}. Reason: {e:?}\"\n                    )),\n                });\n\n            // Check whether the child's field is inheritable and modified.\n            let mut need_revert = false;\n\n            self.inner_mut()\n                .resolve_path_mut(path, &mut |result| match result {\n                    Ok(child_field) => {\n                        if let Some(child_inheritable) = child_field.as_inheritable_variable_mut() {\n                            need_revert = child_inheritable.is_modified();\n                        } else {\n                            Log::err(format!(\"Property {path} is not inheritable!\"))\n                        }\n                    }\n                    Err(e) => Log::err(format!(\n                        \"Failed to resolve child path {path}. Reason: {e:?}\"\n                    )),\n                });\n\n            // Try to apply it to the child.\n            if need_revert {\n                if let Some(parent_value) = parent_value {\n                    let mut was_set = false;\n\n                    let mut parent_value = Some(parent_value);\n\n                    self.inner_mut().set_field_by_path(\n                        path,\n                        parent_value.take().unwrap(),\n                        &mut |result| match result {","sourceCodeStart":555,"sourceCodeEnd":591,"githubUrl":"https://github.com/FyroxEngine/Fyrox/blob/76c91aad8eca488ce527b1af707be8b3b24ad72d/fyrox-graph/src/lib.rs#L555-L591","documentation":"Logged in fyrox-graph's revert_inheritable_property when the child's property at the given path resolves successfully but is not an InheritableVariable. Only inheritable variables support the modified/revert mechanism, so the revert cannot proceed. Usually means targeting a plain (non-inherited) field.","triggerScenarios":"resolve_path_mut finds the field, but as_inheritable_variable_mut returns None — the field is a plain field (e.g. a raw f32/String) rather than an InheritableVariable-wrapped property.","commonSituations":"Attempting to revert properties that were never inheritable (e.g. name, id), engine version changes converting fields to/from inheritable, editor plugins reverting arbitrary paths.","solutions":["Only call revert_inheritable_property on fields wrapped in InheritableVariable","Check the field definition in fyrox source to confirm it is inheritable before reverting","Fall back to directly setting the desired value on non-inheritable fields","Skip plain fields silently instead of logging an error when batch-reverting"],"exampleFix":"// before\nLog::err(format!(\"Property {path} is not inheritable!\"));\n// after\n// Use direct assignment for non-inheritable fields:\nnode.as_reflect_mut().set_field_by_path(path, parent_value)?;","handlingStrategy":"type-guard","validationCode":"// only revert fields declared as InheritableVariable<T> in the node definition","typeGuard":"fn is_inheritable(field: &dyn Reflect) -> bool { field.as_inheritable_variable().is_some() }","tryCatchPattern":"if child_field.as_inheritable_variable_mut().is_some() {\n    // revert\n} else {\n    Log::debug(format!(\"{path} is not inheritable; skipping\"));\n}","preventionTips":["Wrap revertable fields in InheritableVariable at definition time","Check field type before invoking revert APIs","Handle plain fields with direct assignment instead of the revert mechanism"],"tags":["reflection","inheritance","property-path","fyrox"],"backgroundTag":"unsupported-operation","analyzedSha":"76c91aad8eca488ce527b1af707be8b3b24ad72d","analyzedAt":"2026-09-10T16:04:01.633Z","contentChangedAt":"2026-09-10T16:04:01.633Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}