close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#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)

herencia.tol (919 bytes) - added by Pedro Gea 14 years ago.

Download all attachments as: .zip

Change History (13)

Changed 14 years ago by Pedro Gea

Attachment: herencia.tol added

comment:1 Changed 14 years ago by Víctor de Buen Remiro

Status: newaccepted

Estoy de acuerdo parcialmente pues tengo serias dudas al respecto de lo planteado:

  1. En el caso de un método sobrecargado tiene sentido cambiar la descripción, pero si no hay sobrecarga de la funcionalidad me parece absurdo y desconcertante.
  2. En el caso de un objeto miembro que no es un método no me parece razonable cambiar la descripción en ningún caso, pues ni la motivación ni la forma de uso pueden cambiar por causa de la herencia. Sólo el valor por defecto es susceptible de ser modificado.

comment:2 Changed 14 years ago by Pedro Gea

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:

  1. 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.
  2. 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:3 Changed 14 years ago by Víctor de Buen Remiro

(In [3582]) Refs #1223

comment:4 Changed 14 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: acceptedclosed

(In [3588]) Fixes #1223
Fixes #1228
Refs #1220

comment:5 Changed 14 years ago by Víctor de Buen Remiro

(In [3590]) Refs #1223

comment:6 Changed 14 years ago by Víctor de Buen Remiro

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:7 Changed 14 years ago by Víctor de Buen Remiro

(In [3598]) Refs #1223

comment:8 Changed 14 years ago by Víctor de Buen Remiro

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 Víctor de Buen Remiro

Resolution: fixed
Status: closedreopened

comment:10 Changed 14 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: reopenedclosed

(In [3599]) Fixes #1223

comment:11 Changed 14 years ago by Víctor de Buen Remiro

(In [3601]) Fixes #1223

comment:12 Changed 14 years ago by Jorge

(In [3772]) refs #1220, #1223 -- #1228, updating to changes in _.autodoc.member.

Note: See TracTickets for help on using tickets.