Opened 15 years ago
Last modified 14 years ago
#911 accepted doubt
An attribute name hides homonym local names in methods
Reported by: | Pedro Gea | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | OOP | Version: | |
Severity: | major | Keywords: | |
Cc: | irobles@… |
Description
Buscando el motivo de unos errores inesperados en un proyecto encontramos el siguiente comportamiento que no sé si puede considerarse un error.
Se trata de un objeto que tiene un atributo, cuyo nombre (en este caso: "name") también se utiliza como variable local dentro de un método.
Está claro que este uso es claramente desaconsejable, pero nos queda la duda de si el atributo debería ocultar a la variable creada localmente:
NameBlock object = [[ Text name = "attribute"; Real method(Real void) { Text name = "local"; WriteLn("name: "+name); 1 } ]]; Real object::method(?); //> name: attribute
Parece lógico que si permite crear la variable local, sea ésta la que oculta al atributo. En cualquier caso quizá sería conveniente incluir un mensaje de advertencia, que comunique que una está ocultando a la otra.
Change History (2)
comment:1 Changed 15 years ago by
comment:2 Changed 14 years ago by
Status: | new → accepted |
---|
He tratado de resolverlo pero no lo he conseguido. Seguiré intentándolo cuando tenga menos presión.
Ya lo intenté pero no pude