[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gm2] VAR array parameter type compatibility
From: |
Gaius Mulley |
Subject: |
Re: [Gm2] VAR array parameter type compatibility |
Date: |
Mon, 01 Feb 2010 22:18:35 +0000 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux) |
Fischlin Andreas <address@hidden> writes:
> Hi all,
>
> I agree, this compatibility should actually work and the compiler
> should accept types which have been made equal. Other examples are:
>
> TYPE
> MYSHORTREAL = REAL;
>
> TYPE
> PROCA = PROCEDURE (VAR ARRAY OF REAL);
> PROCB = PROCEDURE (VAR ARRAY OF MYSHORTREAL);
>
> VAR
> pa: PROCA; pb: PROCB;
> x: ARRAY [0..1] OF REAL;
> y: ARRAY [0..1] OF MYSHORTREAL;
>
> PROCEDURE ProcA(VAR z: ARRAY OF REAL);
> PROCEDURE ProcB(VAR z: ARRAY OF MYSHORTREAL);
>
> then pa and pb should be type compatible and interchangeably usable,
> i.e. all following statements should all be legal:
>
> x := y;
> pa := ProcA; pb := ProcB;
> pa(x); pa(y); pb(x); pb(y);
> pa := ProcB; pb := ProcA;
> pa(x); pa(y); pb(x); pb(y);
>
>
> Regards,
> Andreas
>
>
>
> On 01/Feb/2010, at 22:07 , SiTex Graphics wrote:
>
>> Hi Gaius,
>>
>> I have a case where GM2 appears to enforce different type
>> compatibility rules depending on whether a VAR array parameter is a
>> variable or the parameter in a procedure.
>>
>> With
>>
>> TYPE
>> fooADDRESS = ADDRESS;
>>
>> VAR
>> foo : ARRAY [0..9] OF fooADDRESS;
>>
>> GM2 accepts a call to
>>
>> PROCEDURE DoAddress(VAR a : ARRAY OF ADDRESS)
>>
>> passing foo. However, the following call produces a compiler error:
>>
>> PROCEDURE DoFoo(VAR f : ARRAY OF fooADDRESS);
>> BEGIN
>> DoAddress(f);
>> END DoFoo;
>>
>> "'f' cannot be passed to a VAR formal parameter"
>>
>> Test code attached. Compile with
>>
>> gm2 -fiso -c arraytype.mod
>>
>> -Scott
Hi Scott and Andreas,
I agree a bug - it looks as if the type equivalence checking code has
a bug inside the parameter checking component. Thanks for the test
code - it should make tracking this bug down easier
regards,
Gaius