[M3devel] LONGINT -> more bugs in m3tk
Rodney M. Bates
rodney_bates at lcwb.coop
Tue Apr 26 21:50:08 CEST 2011
On 04/26/2011 11:28 AM, Rodney M. Bates wrote:
> I just checked in a patch tp M3CExpValue.m3 in m3tk, in the head, which I believe will fix this
> bug. I compiled it, but have not tested it, as I am sure Mika has this case to retry
> more quickly than I can.
P.S.: Hats off to whoever adapted m3tk for LONGINT. There are places _everywhere_ that needed
modification. The whole thing is about as pedantic as code gets. Layers upon layers of
linguistic abstractions that do mostly zero semantic abstraction. I traced two declarations
through 10 levels each of referrals to other interfaces, all but one of them just renames
with the same simple name and different qualifying interfaces, before finally getting to
something with some meat.
The whole thing smells very strongly of the Ada/Diana culture of ASTs.
> On 04/19/2011 06:51 AM, Mika Nystrom wrote:
>> Hello m3devel,
>> If anyone knows how to fix the following trivially, please go ahead.
>> "/usr/local/cm3/pkg/m3core/src/C/64BITS/BasicCtypes.i3", line 18,45: type error in arguments to binary operator
>> "/usr/local/cm3/pkg/m3core/src/C/64BITS/BasicCtypes.i3", line 18,25: bad numeric literal
>> "/usr/local/cm3/pkg/m3core/src/C/64BITS/BasicCtypes.i3", line 18,51: bad numeric literal
>> (errors reported by m3tk).
>> The offending line is:
>> INTERFACE BasicCtypes;
>> IMPORT Word, Long;
>> (* the four signed integer types *)
>> signed_char = [-16_7f-1 .. 16_7f];
>> short_int = [-16_7fff-1 .. 16_7fff];
>> int = [-16_7fffffff-1 .. 16_7fffffff];
>> long_int = [-16_7fffffffffffffff -1 .. 16_7fffffffffffffff ];
>> long_long = [-16_7fffffffffffffffL-1L .. 16_7fffffffffffffffL]; (** HERE **)
>> (* the four unsigned integer types *)
>> unsigned_char = [16_0 .. 16_ff];
>> unsigned_short_int = [16_0 .. 16_ffff];
>> unsigned_int = [16_0 .. 16_ffffffff];
>> unsigned_long_int = Word.T;
>> unsigned_long_long = Long.T;
>> (* the three floating types *)
>> float = REAL;
>> double = LONGREAL;
>> long_double = EXTENDED;
>> (* char *)
>> char = signed_char;
>> END BasicCtypes.
>> I'll look at it myself, but not immediately (no time). Workaround for now.
More information about the M3devel