(theme): Evita referencias cíclicas de parent()

Como `Theme::parent()` se resuelve en tiempo de ejecución, una
referencia cíclica (en la que un tema acaba siendo padre de sí mismo,
directa o transitivamente) no puede descartarse en compilación. Se
detecta al registrar el tema y aborta el arranque si procede.
This commit is contained in:
Manuel Cillero 2026-08-09 18:45:17 +02:00
parent 825283caa3
commit 8cb5e035dc
3 changed files with 40 additions and 0 deletions

View file

@ -56,6 +56,11 @@ pub trait Theme: Extension + Send + Sync {
/// no los sobrescribe.
///
/// La implementación por defecto devuelve `None` (tema sin padre).
///
/// Una referencia circular (un tema acaba siendo padre de sí mismo, directa o transitivamente)
/// no puede descartarse en tiempo de compilación. PageTop la detecta al registrar el tema y
/// aborta el arranque de la aplicación si encuentra una, para evitar bucles infinitos o
/// desbordamientos de pila al usar el tema.
fn parent(&self) -> Option<ThemeRef> {
None
}