typecons.Option: Fix assigning nothing
This commit is contained in:
parent
4566cf7857
commit
410b865df9
@ -367,8 +367,15 @@ struct Option(T)
|
|||||||
ref typeof(this) opAssign(U)(ref U that)
|
ref typeof(this) opAssign(U)(ref U that)
|
||||||
if (is(U == Option))
|
if (is(U == Option))
|
||||||
{
|
{
|
||||||
this.value = that;
|
if (that.isNothing)
|
||||||
this.isNothing_ = that.isNothing;
|
{
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.value = that.get;
|
||||||
|
this.isNothing_ = false;
|
||||||
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -515,6 +522,15 @@ struct Option(T)
|
|||||||
assert(OptionT(Hashable(1U)).toHash() == 1U);
|
assert(OptionT(Hashable(1U)).toHash() == 1U);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Can assign Option that is nothing
|
||||||
|
@nogc nothrow pure @safe unittest
|
||||||
|
{
|
||||||
|
auto option1 = Option!int(5);
|
||||||
|
Option!int option2;
|
||||||
|
option1 = option2;
|
||||||
|
assert(option1.isNothing);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new $(D_PSYMBOL Option).
|
* Creates a new $(D_PSYMBOL Option).
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user