lazarus
[Arriba] [Todas las Listas]

Re: [Lazarus] Overloading Con tipo genérico como parmeter causa compile

To: lazarus@xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [Lazarus] Overloading Con tipo genérico como parmeter causa compiler error.
From: Sven Barth <pascaldragon@xxxxxxxxxxxxxx>
Date: Tue, 01 May 2012 11:21:51 +0200
Delivery-date: Tue, 01 May 2012 05:22:13 -0400
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=h+SQehd9/reE+u3V96gWuvy+gastZ7QDADxR3uFUT9s=; b=euvtrjht2AUuslB9PlmGqLCnz4poWEdqHiZ83Orv447HgLea3Oc4Nt0O5wLO0CKTcp EypenKT22qZsgZaf1OvHIS36vQ2UUOVQBaA07bkAYTAEAYXe2bSvoianxmBlaJPiUNE1 LNWJeqvGUlp4TDCXhILkJlaO08KWGAACuj+9smiJNBDFF81TERVhIPGpK/TWPUJG/fTH pEB1jywfZKfeS9RIz0cvt483PEyEKJkbOsxEf1zzLK+rmI1SWmzM+L9oAxc+X+O2GRXH NUTkOBb4xozzuMnY4oH28+M67WEErqsCXjbgo/krAd8GtAyC46MCUYrHZhQ5rhCWa64p cZtA==
Envelope-to: traductor@xxxxxxxxxxx
In-reply-to: <4F9EB397.5070809@ziesig.org>
List-archive: <http://lists.lazarus.freepascal.org/pipermail/lazarus>
List-help: <mailto:lazarus-request@lists.lazarus.freepascal.org?subject=help>
List-id: Lazarus mailing list <lazarus.lists.lazarus.freepascal.org>
List-post: <mailto:lazarus@lists.lazarus.freepascal.org>
List-subscribe: <http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus>, <mailto:lazarus-request@lists.lazarus.freepascal.org?subject=subscribe>
List-unsubscribe: <http://lists.lazarus.freepascal.org/mailman/options/lazarus>, <mailto:lazarus-request@lists.lazarus.freepascal.org?subject=unsubscribe>
References: <4F9EB397.5070809@ziesig.org>
Reply-to: Lazarus mailing list <lazarus@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
User-agent: Mozilla/5.0 (X11; Linux i686; rv:11.0) Gecko/20120406 Thunderbird/11.0.1
En 30.04.2012 17:45, Donald *R. *Ziesig Escribió:
*Hi Todo!

Estoy trabajando en una biblioteca de tipo genérica y corrió a un problema en *compile
tiempo.

El Tipo
genérico *TMyType<*T> = función
*
*
*
de clase *IndexOf( Elemento : *T ) : *Integer; *overload;
*functionIndexOf( *aName : Cadena) : *Integer; *overload;

// *generics1.*pas Error: la Función es ya Delantero Público\declarado
"*TMyType.*IndexOf(*AnsiString):*LongInt;"

// O, invierte el *declarations:

función *IndexOf( *aName : Cadena ) : *Integer; *overload;
función *IndexOf( Elemento : *T ) : *Integer; *overload;

// *generics1.*pas Error: la Función es ya Delantero Público\declarado
"*TMyType.*IndexOf(<*undefined Tipo>):*LongInt;"

fin;

los errores Similares ocurren en implementación del *overloaded *subprograms, cuando
dentro:

// *generics1.*pas Error: función *header "*IndexOf" no empareja adelante
: *var el nombre cambia *aName => Elemento


El trabajo obvio-alrededor es para evitar *overloading con tipo genérico como
parámetros, pero que es realmente un *hack en este caso.

Mantiene arriba del trabajo GRANDE,

Qué versión de FPC pruebas con? Si era 2.6.0 o 2.6.1 o cualquier cosa más viejo entonces complacer probar con una versión de tronco reciente. Fijé este problema hace algunas semanas. Si tú ya probado con una versión de tronco reciente de FPC que complacer abrir un *bug informe para el *compiler con un ejemplo sencillo que no depende en el LCL y tener que *compile.

Consideraciones,
*Sven


--
_______________________________________________
*Lazarus *mailing lista
Lazarus@xxxxxxxxxxxxxxxxxxxxxxxxxxxx
*http://listas.*lazarus.*freepascal.*org/*mailman/*listinfo/*lazarus

On 30.04.2012 17:45, Donald R. Ziesig wrote:
Hi All!

I am working on a generic type library and ran into a problem at compile
time.

type
generic TMyType<T> = class
*
*
*
function IndexOf( Item : T ) : Integer; overload;
functionIndexOf( aName : String) : Integer; overload;

// generics1.pas Error: Function is already declared Public\Forward
"TMyType.IndexOf(AnsiString):LongInt;"

// or, reverse the declarations:

function IndexOf( aName : String ) : Integer; overload;
function IndexOf( Item : T ) : Integer; overload;

// generics1.pas Error: Function is already declared Public\Forward
"TMyType.IndexOf(<undefined type>):LongInt;"

end;

Similar errors occur in implementation of the overloaded subprograms, as
in:

// generics1.pas Error: function header "IndexOf" doesn't match forward
: var name changes aName => Item


The obvious work-around is to avoid overloading with generic types as
parameters, but that is really a hack in this case.

Keep up the GREAT work,

What version of FPC did you try with? If it was 2.6.0 or 2.6.1 or anything older then please try with a recent trunk version. I fixed this problem some weeks ago. If you already tested with a recent trunk version of FPC than please open a bug report for the compiler with a simple example that does not depend on the LCL and should compile.

Regards,
Sven


--
_______________________________________________
Lazarus mailing list
Lazarus@xxxxxxxxxxxxxxxxxxxxxxxxxxxx
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

<Anterior por Tema] Tema Actual [Siguiente por Tema>