On 11/30/10, Simen kjaeraas <simen.kja...@gmail.com> wrote: > Simen kjaeraas <simen.kja...@gmail.com> wrote: > >> It works in many cases, but not for function calls > > Some more testing brought this bug to my attention: > > void bar( ref int n ) { > n++; > } > > void main( string[] args ) { > const int n = args.length * 0; > assert( is( typeof( n ) == const(int) ) ); > bar( n ); // Uhm... > assert( n == 1 ); // WTF?!? > } > > > I would say this is seriously bad. > http://d.puremagic.com/issues/show_bug.cgi?id=5291 > > > -- > Simen >
It seems this is a problem with ref. If you use "in" the compiler gets some of its senses back: void bar( in int n ) { n++; } void main( string[] args ) { const int n = args.length * 0; assert( is( typeof( n ) == const(int) ) ); bar( n ); // compile error assert( n == 1 ); }