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 16 years ago

Closed 16 years ago

Last modified 16 years ago

#715 closed defect (fixed)

Falso mensaje de advertencia de ocultación de métodos

Reported by: Víctor de Buen Remiro Owned by: Víctor de Buen Remiro
Priority: highest Milestone: OOP Implementation
Component: OOP Version: 2.0.1
Severity: trivial Keywords:
Cc: Javier Portugal

Description

Cuando se crea una instancia de clase o un NameBlock dentro de un método de otra instancia o NameBlock que contiene algun método en común con la primera, entonces salta un mensaje de advertencia de ocultación de métodos que no tiene ningún sentido.

Por ejemplo, el siguiente código TOL

  Class ClaseA
  {
    Text _.name;
    Text GetName(Real unused) { _.name }
  };

  Class ClaseB
  {
    Text _.name;
    Text GetName(Real unused) { _.name };
    ClaseA GetClaseA(Text sufix)
    {
      Text name = GetName(0)+"."+sufix;
      ClaseA a = [[Text _.name = name]] 
    }
  };

  ClaseB b = 
  [[
    Text _.name = "b"     
  ]];
    
  ClaseA _.a = b::GetClaseA("a");

genera el mensaje

Warning: [1] La función global Text GetName oculta el miembro de NameBlock publicado b::GetName

Y resulta completamente falso pues realmente no hay ninguna ocultación de ningún tipo sino un cambio de ámbito perfectamente posible, en el cual a::GetName sustituye a b::GetName con todo el derecho del mundo.

Change History (2)

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

Resolution: fixed
Status: newclosed

(In [1184]) Fixes #715

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

(In [1191]) Fixes #715

Note: See TracTickets for help on using tickets.