#1223 closed defect (fixed)
Attribute description inheritance doesn't work
Reported by: | Pedro Gea | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | high | Milestone: | Mantainance |
Component: | Kernel | Version: | head |
Severity: | blocker | Keywords: | |
Cc: |
Description
Este tique está relacionado con la gestión de la descripción de los atributos de una clase. Debido a que éstos no existen más que en las instancias, surgen problemas de asignación (véase #1220) y de herencia.
Se sugiere implementar automáticamente un atributo oculto de tipo texto por cada atributo de la clase que se encargue de recoger la descripción del atributo aun cuando no exista el _.autodoc.member
y que se herede entre clases como hacen los métodos.
Se adjunta un ejemplo dónde se puede ver el citado problema de herencia.
Attachments (1)
Change History (13)
Changed 14 years ago by
Attachment: | herencia.tol added |
---|
comment:1 Changed 14 years ago by
Status: | new → accepted |
---|
comment:2 Changed 14 years ago by
El problema que motiva el tique es el indicado en la línea 16 del ejemplo adjunto.
Coincido con los dos puntos del comentario anterior:
- Respecto al primero, me parece lógico y estoy de acuerdo en que sea como es ahora: si método hay uno, descripción hay una, si el método se sobrecarga con una nueva implementación, internamente hay una nueva función y por tanto admitiría una nueva descripción si se desea, aunque por defecto heredaría la descripción del método que sobrecarga.
- Respecto a los atributos (miembros que no son métodos) no me parece muy razonable que se cambie, pero el problema es que no se hereda. Véase, por ejemplo, la descripición que muestra el objeto
b
del ejemplo: no muestra ninguna.
comment:4 Changed 14 years ago by
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
comment:6 Changed 14 years ago by
Así es como queda el comportamiento de la descripción de miembros con respecto a la herencia, según puede comprobarse en el test
- La descripción de los atributos es única para todo el árbol de herencia y debe especificarse en la propia clase raíz para dicho atributo, es decir, donde se declara por primera vez, pues dicha descripción será heredada por todas las clases descendientes de esa clase raíz.
- Si se intenta modificar la descripción de un atributo en una clase heredada saltará un warning avisando de que no es una acción válida y no tendrá efecto.
- La descripción de los métodos puede y debería cambiarse en cada clase heredada que sobrecargue dicho método.
- Si se intenta modificar la descripción de un método no sobrecargado en una clase heredada saltará un warning avisando de que no es una acción válida y no tendrá efecto.
comment:8 Changed 14 years ago by
Hay un error por el que los métodos heredados y no sobrecargados producen un warning incluso aunque no se modifique la descripción
comment:9 Changed 14 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
comment:10 Changed 14 years ago by
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Estoy de acuerdo parcialmente pues tengo serias dudas al respecto de lo planteado: