Merge pull request #144 from Herringway/add-for-empty-node
allow uninitialized nodes to become sequence/mapping nodes merged-on-behalf-of: BBasile <BBasile@users.noreply.github.com>
This commit is contained in:
commit
468c497465
|
@ -1531,6 +1531,10 @@ struct Node
|
|||
*/
|
||||
void add(T)(T value)
|
||||
{
|
||||
if (!isValid)
|
||||
{
|
||||
setValue(Node[].init);
|
||||
}
|
||||
enforce(isSequence(),
|
||||
new NodeException("Trying to add an element to a " ~ nodeTypeString ~ " node", startMark_));
|
||||
|
||||
|
@ -1546,6 +1550,19 @@ struct Node
|
|||
add(5.0f);
|
||||
assert(opIndex(4).as!float == 5.0f);
|
||||
}
|
||||
with(Node())
|
||||
{
|
||||
add(5.0f);
|
||||
assert(opIndex(0).as!float == 5.0f);
|
||||
}
|
||||
with(Node(5.0f))
|
||||
{
|
||||
assertThrown!NodeException(add(5.0f));
|
||||
}
|
||||
with(Node([5.0f : true]))
|
||||
{
|
||||
assertThrown!NodeException(add(5.0f));
|
||||
}
|
||||
}
|
||||
|
||||
/** Add a key-value pair to a mapping.
|
||||
|
@ -1565,6 +1582,10 @@ struct Node
|
|||
*/
|
||||
void add(K, V)(K key, V value)
|
||||
{
|
||||
if (!isValid)
|
||||
{
|
||||
setValue(Node.Pair[].init);
|
||||
}
|
||||
enforce(isMapping(),
|
||||
new NodeException("Trying to add a key-value pair to a " ~
|
||||
nodeTypeString ~ " node",
|
||||
|
@ -1581,6 +1602,19 @@ struct Node
|
|||
add(5, "6");
|
||||
assert(opIndex(5).as!string == "6");
|
||||
}
|
||||
with(Node())
|
||||
{
|
||||
add(5, "6");
|
||||
assert(opIndex(5).as!string == "6");
|
||||
}
|
||||
with(Node(5.0f))
|
||||
{
|
||||
assertThrown!NodeException(add(5, "6"));
|
||||
}
|
||||
with(Node([5.0f]))
|
||||
{
|
||||
assertThrown!NodeException(add(5, "6"));
|
||||
}
|
||||
}
|
||||
|
||||
/** Determine whether a key is in a mapping, and access its value.
|
||||
|
|
Loading…
Reference in a new issue