[M3devel] typenames vs. lexical scope vs. backend?

Jay K jay.krell at cornell.edu
Sat Oct 23 12:06:39 CEST 2010


Um.. the same name can be different types, in different scopes.


<*NOWARN*>PROCEDURE F1() =
TYPE T1 = INTEGER;
BEGIN
END F1;

<*NOWARN*>PROCEDURE F2() =
TYPE T1 = LONGINT;
BEGIN
END F2;

=>

(16) declare_procedure name:Main__F1 n_params:0 return_type:void lev:0 exported:false
(17) declare_typename my_id:0x195C2A74 name:T1

(18) declare_procedure name:Main__F2 n_params:0 return_type:void lev:0 exported:false
(19) declare_typename my_id:0x5562176 name:T1
(20) comment comment:F1
(21) set_source_line 6

(22) begin_procedure procedure:Main__F1
(23)     set_source_line 7
(24)     set_source_line 9
(25)     exit_proc type:void
(26) end_procedure procedure:Main__F1

(27) comment comment:F2
(28) set_source_line 0xB(11)
(29) begin_procedure procedure:Main__F2
(30)     set_source_line 0xC(12)
(31)     set_source_line 0xE(14)
(32)     exit_proc type:void
(33) end_procedure procedure:Main__F2


Is the backend to record the types within some scope, and then observe
the scopes coming back?


Or, then again, are typenames worth much to the backend?
Well, maybe.
They aren't needed for display the values of variables,
but they might be nice in expressions that include casts?

I'm thinking maybe the right thing is to ignore them in the backend.
??

 - Jay
 		 	   		  


More information about the M3devel mailing list