<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
Is it unreasonble to expect more/all of these to be constant?<br><br><br>UNSAFE MODULE bug1;<br><br><br>TYPE T1 = RECORD i,j:INTEGER END;<br><br><br><*NOWARN*>VAR a:T1;<br><*NOWARN*>CONST b: UNTRACED REF T1 = NIL;<br><*NOWARN*>CONST c: ADDRESS = ADR(a); (* line 7 *)<br><*NOWARN*>CONST d: ADDRESS = ADR(a.i);<br><*NOWARN*>CONST e: ADDRESS = ADR(a.j);<br><*NOWARN*>CONST f: INTEGER = ADR(a.j) - NIL;<br><*NOWARN*>CONST g: ADDRESS = ADR(b.i);<br><*NOWARN*>CONST h: ADDRESS = ADR(b.j);<br><*NOWARN*>CONST i: INTEGER = ADR(b.j) - NIL;<br><br><*NOWARN*>VAR vc: ADDRESS := ADR(a);<br><*NOWARN*>VAR vd: ADDRESS := ADR(a.i);<br><*NOWARN*>VAR ve: ADDRESS := ADR(a.j);<br><*NOWARN*>VAR vf: INTEGER := ADR(a.j) - NIL; (* oops, didn't mean this one *)<br><*NOWARN*>VAR vg: ADDRESS := ADR(b.i);<br><*NOWARN*>VAR vh: ADDRESS := ADR(b.j);<br><*NOWARN*>VAR vi: INTEGER := ADR(b.j) - NIL;<br><br>BEGIN<br>END bug1.<br><br><br>"../src/bug1.m3", line 7: value is not constant<br>"../src/bug1.m3", line 8: value is not constant<br>"../src/bug1.m3", line 9: value is not constant<br>"../src/bug1.m3", line 10: value is not constant<br>"../src/bug1.m3", line 11: value is not constant<br>"../src/bug1.m3", line 12: value is not constant<br>"../src/bug1.m3", line 13: value is not constant<br><br>It works in C...<br><br>#include <stddef.h><br><br>typedef struct { ptrdiff_t i, j;}T1;<br><br>T1 a;<br>#define b ((T1*)0)<br>T1* const c = &a;<br>ptrdiff_t* const d = &a.i;<br>ptrdiff_t* const e = &a.j;<br>ptrdiff_t const f = offsetof(T1,j);<br>ptrdiff_t* const g = &b->i;<br>ptrdiff_t* const h = &b->j;<br>ptrdiff_t const i = &b->j - (ptrdiff_t*)0;<br><br><br>Thanks,<br> - Jay<br>                                           </body>
</html>