[M3commit] CVS Update: cm3

Tony Hosking hosking at cs.purdue.edu
Wed Feb 3 15:40:08 CET 2010


On 3 Feb 2010, at 06:43, Jay K wrote:

> That is legal? What does it mean? What can you do it with t?

It's a variable of type NULL.  It can only hold the NIL reference.  Agreed, it is not particularly useful.

The warning is there to distinguish:

VAR t: NULL

which a programmer presumably intended to write, from

VAR t:= complicated expression of type NULL (perhaps hidden through various type renaming)

which the programmer possibly did not intend to write.

> I compiled all of cm3 (at least what isn't filtered out on NT386) and it didn't break anything.
>  
>  - Jay
> 
>  
> From: hosking at cs.purdue.edu
> Date: Wed, 3 Feb 2010 00:52:34 -0500
> To: jay.krell at cornell.edu
> CC: m3commit at elegosoft.com
> Subject: Re: [M3commit] CVS Update: cm3
> 
> Clearly the source code is not legal.  It's just that your change breaks legal code:
> 
> VAR t: NULL;
> 
> which should emit a warning but nothing else.
> 
> The problem lies elsewhere...
> 
> 
> On 3 Feb 2010, at 00:22, Jay K wrote:
> 
> The backend should be able to cope with almost anything, I guess.
> But is the source code really legal?
> Shouldn't the front end error?
> The front end should error on some things, obviously.
>  
> Notice that all of the "internal errors" in this scenario are from
> the front end. Just the assertion failure is not.
>  
>  
> The front end doesn't handle its own stack correctly
> here, the errors come from its CG.m3 module that wraps
> the backend.
>  
> If this code is truly illegal and has no valid meaning, I think this is an ok change.
> The NT386 backend I guess should be hardened against front end bugs though.
>  
>  
>  - Jay
> 
>  
> From: hosking at cs.purdue.edu
> Date: Tue, 2 Feb 2010 12:19:16 -0500
> To: jkrell at elego.de
> CC: m3commit at elegosoft.com
> Subject: Re: [M3commit] CVS Update: cm3
> 
> That's the wrong approach.  A warning is not an error.  The backend should be able to cope with it...
> 
> Antony Hosking | Associate Professor | Computer Science | Purdue University
> 305 N. University Street | West Lafayette | IN 47907 | USA
> Office +1 765 494 6001 | Mobile +1 765 427 5484
> 
> 
> 
> 
> On 1 Feb 2010, at 20:17, Jay Krell wrote:
> 
> CVSROOT: /usr/cvs
> Changes by: jkrell at birch. 10/02/01 20:17:28
> 
> Modified files:
> cm3/m3-sys/m3front/src/values/: Variable.m3 
> 
> Log message:
> test case e0\e029:
> 
> MODULE Main;
> TYPE Rec = RECORD a: INTEGER END;
> VAR  r := Rec;    (* warning: variable has type NULL *)
> BEGIN
> INC(r.a)
> END Main.
> 
> followed by internal errors and an assertion failure in m3back
> 
> Change warning to error, and then it never gets to the internal errors.
> 
> 
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3commit/attachments/20100203/52cce225/attachment-0002.html>


More information about the M3commit mailing list