On Mon, 04 May 2009 10:22:49 -0400, Qian Xu <quian...@stud.tu-ilmenau.de> wrote:

Steven Schveighoffer wrote:

I think you might have a bug?

"".dup is the same as s.dup, not sure why you would expect it to be
not-null.

-Steve

If I have not explained clearly.
Here is the full code:

  char[] s;
  assert(s     is null);
  assert(s.dup is null);

  assert(""     !is null); // OK
  assert("".dup !is null); // FAILED

At least the last two lines behave not consistent.
Either both are failed, or both are passed.


OK, your original post was this:

  assert( s.dup  is null); // OK
  assert("".dup !is null); // FAILED


The compiler always returns a null array if you dup an empty array. The reason being: why allocate memory for something that is zero length?

If anything, the oddity is this line:

assert("" !is null);

But of course, no memory is allocated for literals, so at least needless memory allocation does not occur.

To be consistent, I think assert("" is null); should pass, but it's a minor inconsistency at best.

I usually never compare arrays to null for this reason...

-Steve

Reply via email to