gm2
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Still more :)


From: Dragiša Durić
Subject: Re: Still more :)
Date: Fri, 08 May 2020 13:56:46 +0200

I have a really ancient PrintF like library... It's formatting is based
on this StrIO down under (which was a fix for GPM2 when I moved to it
in 90's), and to invoke it I would do:

  a := 10;
  TermIO.PrintF("Ej #d\n", TermIO.Arr1{ADR(a)});

But compiling this is no go...

test.mod:16:46: error: the only functions permissible in a constant expression 
are: CAP, CHR, CMPLX, FLOAT, HIGH, IM, LENGTH, MAX, MIN, ODD, ORD, RE, SIZE, 
TSIZE, TRUNC, VAL and gcc builtins
   16 |   TermIO.PrintF("Ej #d\n", TermIO.Arr1{ADR(a)});
      |                                              ^

Is there a way to bypass this without full rewrite of my formatting
libraries to C?

Thanks,
dd

On Fri, 2020-05-08 at 13:45 +0200, Dragiša Durić wrote:
> Hi Gaius,
> 
> /opt/local/lib/gcc/x86_64-pc-linux-
> gnu/11.0.0/m2/m2iso/Storage.def:58:1: error: the 2nd element does not
> exist in the array declaration used by the compound literal
> 
> My DEFINITION MODULE is like:
> 
> DEFINITION MODULE mStrIO;
> 
> FROM 
>   SYSTEM
> IMPORT
>   ADDRESS;
> 
> TYPE
>   Arr1  = ARRAY [0..0] OF ADDRESS;  
>   Arr2  = ARRAY [0..1] OF ADDRESS;  
>   Arr3  = ARRAY [0..2] OF ADDRESS;  
>   Arr4  = ARRAY [0..3] OF ADDRESS;  
>   Arr5  = ARRAY [0..4] OF ADDRESS;  
>   Arr6  = ARRAY [0..5] OF ADDRESS;  
>   Arr7  = ARRAY [0..6] OF ADDRESS;  
>   Arr8  = ARRAY [0..7] OF ADDRESS;  
>   Arr9  = ARRAY [0..8] OF ADDRESS;  
>   Arr10 = ARRAY [0..9] OF ADDRESS;  
>   Arr11 = ARRAY [0..10] OF ADDRESS;  
>   Arr12 = ARRAY [0..11] OF ADDRESS;  
>   Arr13 = ARRAY [0..12] OF ADDRESS;  
>   Arr14 = ARRAY [0..13] OF ADDRESS;  
>   Arr15 = ARRAY [0..14] OF ADDRESS;  
>   Arr16 = ARRAY [0..15] OF ADDRESS;  
>   Arr17 = ARRAY [0..16] OF ADDRESS;  
>   Arr18 = ARRAY [0..17] OF ADDRESS;  
>   Arr19 = ARRAY [0..18] OF ADDRESS;  
>   Arr20 = ARRAY [0..19] OF ADDRESS;
>   Arr21 = ARRAY [0..20] OF ADDRESS;
>   Arr22 = ARRAY [0..21] OF ADDRESS;
>   
>   ArrMax = Arr22;
> 
> CONST
>   Arr0 = Arr1 { NIL };
> ...
> 
> 
> And when this DEF is included in my compile... above error. Out of
> place.
> 
> Another one out of places was:
> 
> /opt/local/lib/gcc/x86_64-pc-linux-
> gnu/11.0.0/m2/m2iso/Storage.def:58:1: error: not all variant record
> alternatives in the CASE clause are specified, hint you either need
> to specify each value of ‘CARDINAL’ or use an ELSE clause 
> 
> Easy to fix now I am in shape :), but probably something You would
> like
> to fix.
> 
> BTW, did You receive another archive I sent to You?
> 
> Regards,
> Dragiša
> 
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]