www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 14804] New: Comparing two Nullables does not check if either

https://issues.dlang.org/show_bug.cgi?id=14804

          Issue ID: 14804
           Summary: Comparing two Nullables does not check if either is
                    null
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: phobos
          Assignee: nobody puremagic.com
          Reporter: monkeyworks12 hotmail.com

Currently, comparing two Nullables does not check if either is null. If either
of them are, Nullable.get will assert.

import std.typecons;

void main()
{
    Nullable!int n1 = 0;
    Nullable!int n2;
    Nullable!int n3;

    assert(n1 == n2); //Nullable.get asserts
    assert(n2 == n3); //Nullable.get asserts
}

Instead a custom opEquals should be implemented that checks if either Nullable
is null before comparing their values. They should behave as shown below:

        Nullable!int n4 = 0;

        assert(n1 == n2); //n2 is null; returns false
        assert(n2 == n3); //n2 and n3 are null; returns false

        //Both n1 and n4 and non-null, so compare their values;
        //Returns true
        assert(n1 == n4);

--
Jul 17 2015