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

Ya lo intenté pero no pude

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

Status: newaccepted

He tratado de resolverlo pero no lo he conseguido. Seguiré intentándolo cuando tenga menos presión.

Note: See TracTickets for help on using tickets.