Ticket #911 (accepted doubt)

Opened 8 years ago

Last modified 7 years ago

An attribute name hides homonym local names in methods

Reported by: pgea Owned by: vdebuen
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

Changed 8 years ago by vdebuen

Ya lo intenté pero no pude

Changed 7 years ago by vdebuen

  • status changed from new to accepted

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.