From 2f3d782c847fde6917a6faedc90232a7560245fc Mon Sep 17 00:00:00 2001 From: Ferdinand Majerech Date: Sun, 23 Aug 2015 09:09:24 +0200 Subject: [PATCH] Fixed compilation with DMD 2.068 Had to use a lot of @trusted as std.variant.VariantN is again less safe. Will need to change that back once it gets safer, or at least isolate code using it so that half of Node API doesn't need to be @trusted. --- source/dyaml/node.d | 26 +++++++++++++------------- source/dyaml/representer.d | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/dyaml/node.d b/source/dyaml/node.d index 6b4d1e8..03d4d4d 100644 --- a/source/dyaml/node.d +++ b/source/dyaml/node.d @@ -266,7 +266,7 @@ struct Node } /// Ditto. // Overload for types where we can make this nothrow. - this(T)(T value, const string tag = null) @safe pure nothrow + this(T)(T value, const string tag = null) @trusted pure nothrow if(scalarCtorNothrow!T) { tag_ = Tag(tag); @@ -321,7 +321,7 @@ struct Node * auto set = Node([1, 2, 3, 4, 5], "tag:yaml.org,2002:set"); * -------------------- */ - this(T)(T[] array, const string tag = null) @safe + this(T)(T[] array, const string tag = null) @trusted if (!isSomeString!(T[])) { tag_ = Tag(tag); @@ -385,7 +385,7 @@ struct Node * auto pairs = Node([1 : "a", 2 : "b"], "tag:yaml.org,2002:pairs"); * -------------------- */ - this(K, V)(V[K] array, const string tag = null) @safe + this(K, V)(V[K] array, const string tag = null) @trusted { tag_ = Tag(tag); @@ -449,7 +449,7 @@ struct Node * auto pairs = Node([1, 2], ["a", "b"], "tag:yaml.org,2002:pairs"); * -------------------- */ - this(K, V)(K[] keys, V[] values, const string tag = null) @safe + this(K, V)(K[] keys, V[] values, const string tag = null) @trusted if(!(isSomeString!(K[]) || isSomeString!(V[]))) in { @@ -740,7 +740,7 @@ struct Node * * Throws: NodeException if this is not a sequence nor a mapping. */ - @property size_t length() const @safe + @property size_t length() const @trusted { if(isSequence) {return value_.get!(const Node[]).length;} else if(isMapping){return value_.get!(const Pair[]).length;} @@ -960,7 +960,7 @@ struct Node * Throws: NodeException if the node is not a collection, index is out * of range or if a non-integral index is used on a sequence node. */ - void opIndexAssign(K, V)(V value, K index) @safe + void opIndexAssign(K, V)(V value, K index) @trusted { if(isSequence()) { @@ -1187,7 +1187,7 @@ struct Node * * Params: value = Value to _add to the sequence. */ - void add(T)(T value) @safe + void add(T)(T value) @trusted { enforce(isSequence(), new Error("Trying to add an element to a " ~ nodeTypeString ~ " node", startMark_)); @@ -1223,7 +1223,7 @@ struct Node * Params: key = Key to _add. * value = Value to _add. */ - void add(K, V)(K key, V value) @safe + void add(K, V)(K key, V value) @trusted { enforce(isMapping(), new Error("Trying to add a key-value pair to a " ~ @@ -1405,7 +1405,7 @@ struct Node // Returns: Constructed node. static Node rawNode(Value value, const Mark startMark, const Tag tag, const ScalarStyle scalarStyle, - const CollectionStyle collectionStyle) @safe + const CollectionStyle collectionStyle) @trusted { Node node; node.value_ = value; @@ -1424,7 +1424,7 @@ struct Node } // Construct Node.Value from a type it can store directly (after casting if needed) - static Value value(T)(T value) @safe nothrow if(allowed!T) + static Value value(T)(T value) @system nothrow if(allowed!T) { static if(Value.allowed!T) { @@ -1686,7 +1686,7 @@ struct Node } // Implementation of contains() and containsKey(). - bool contains_(T, Flag!"key" key, string func)(T rhs) const @safe + bool contains_(T, Flag!"key" key, string func)(T rhs) const @trusted { static if(!key) if(isSequence) { @@ -1751,7 +1751,7 @@ struct Node } // Get index of pair with key (or value, if key is false) matching index. - sizediff_t findPair(T, Flag!"key" key = Yes.key)(const ref T index) const @safe + sizediff_t findPair(T, Flag!"key" key = Yes.key)(const ref T index) const @trusted { const pairs = value_.get!(const Pair[])(); const(Node)* node; @@ -1792,7 +1792,7 @@ struct Node } // Const version of opIndex. - ref const(Node) indexConst(T)(T index) const @safe + ref const(Node) indexConst(T)(T index) const @trusted { if(isSequence) { diff --git a/source/dyaml/representer.d b/source/dyaml/representer.d index 2c436b3..36b53c1 100644 --- a/source/dyaml/representer.d +++ b/source/dyaml/representer.d @@ -274,7 +274,7 @@ final class Representer * -------------------- */ Node representScalar(string tag, string scalar, - ScalarStyle style = ScalarStyle.Invalid) @safe + ScalarStyle style = ScalarStyle.Invalid) @trusted { if(style == ScalarStyle.Invalid){style = defaultScalarStyle_;} return Node.rawNode(Node.Value(scalar), Mark(), Tag(tag), style,