D - no error on missing return value [beta 0.58]
Walter,
I though this had been fixed, or has it been fixed such that no return value
means <return-type>.init
strangely
printf( " null -> %.*s", foo === null ? foo : "null" ); // 3 '=' works
printf( " null -> %.*s", foo ? foo : "null" ); // causes access
violation
I has assumed that bar = foo ? foo : "null"; would be the same as
if( foo ) bar = foo; else bar = "null";
or
if( foo !== null ) bar = foo; else bar = "null"; // !2'='
-------------------------------------------------------------------
import c.stdio;
char[] func( int[] foo ){
char[] rv;
int i = 0;
if ( foo )
while( i < foo.length ) {
i+=foo[i];
if ( i > foo.length ) { return rv; }
rv ~= "A";
}
}
int[] nums = [1,2,3,4];
int main( char[][] argv )
{
char[] foo = func( nums );
printf( "1,2,3,4 -> %.*s", foo );
foo = func( null );
// printf( " null -> %.*s", foo ? foo : "null" ); access violation
printf( " null -> %.*s", foo === null ? foo : "null" );
return 0;
}
Mar 07 2003








"Walter" <walter digitalmars.com>