diff options
Diffstat (limited to 'src/ext_depends/D-YAML/source')
| -rw-r--r-- | src/ext_depends/D-YAML/source/dyaml/exception.d | 5 | ||||
| -rw-r--r-- | src/ext_depends/D-YAML/source/dyaml/loader.d | 17 | ||||
| -rw-r--r-- | src/ext_depends/D-YAML/source/dyaml/node.d | 4 | ||||
| -rw-r--r-- | src/ext_depends/D-YAML/source/dyaml/reader.d | 3 | ||||
| -rw-r--r-- | src/ext_depends/D-YAML/source/dyaml/scanner.d | 6 | 
5 files changed, 33 insertions, 2 deletions
| diff --git a/src/ext_depends/D-YAML/source/dyaml/exception.d b/src/ext_depends/D-YAML/source/dyaml/exception.d index 2f13a44..46d3047 100644 --- a/src/ext_depends/D-YAML/source/dyaml/exception.d +++ b/src/ext_depends/D-YAML/source/dyaml/exception.d @@ -94,6 +94,9 @@ struct MarkedYAMLExceptionData  // Base class of YAML exceptions with marked positions of the problem.  abstract class MarkedYAMLException : YAMLException  { +    /// Position of the error. +    Mark mark; +      // Construct a MarkedYAMLException with specified context and problem.      this(string context, const Mark contextMark, string problem, const Mark problemMark,           string file = __FILE__, size_t line = __LINE__) @safe pure nothrow @@ -102,6 +105,7 @@ abstract class MarkedYAMLException : YAMLException                      (contextMark != problemMark ? contextMark.toString() ~ '\n' : "") ~                      problem ~ '\n' ~ problemMark.toString() ~ '\n';          super(msg, file, line); +        mark = problemMark;      }      // Construct a MarkedYAMLException with specified problem. @@ -110,6 +114,7 @@ abstract class MarkedYAMLException : YAMLException          @safe pure nothrow      {          super(problem ~ '\n' ~ problemMark.toString(), file, line); +        mark = problemMark;      }      /// Construct a MarkedYAMLException from a struct storing constructor parameters. diff --git a/src/ext_depends/D-YAML/source/dyaml/loader.d b/src/ext_depends/D-YAML/source/dyaml/loader.d index 7e7096c..09c19db 100644 --- a/src/ext_depends/D-YAML/source/dyaml/loader.d +++ b/src/ext_depends/D-YAML/source/dyaml/loader.d @@ -165,6 +165,7 @@ struct Loader          void name(string name) pure @safe nothrow @nogc          {              name_ = name; +            scanner_.name = name;          }          /// Specify custom Resolver to use. @@ -392,3 +393,19 @@ struct Loader      auto doc = Loader.fromString(yaml).load();      assert(doc.isValid);  } + +@safe unittest +{ +    import std.exception : collectException; + +    auto yaml = q"EOS +    value: invalid: string +EOS"; +    auto filename = "invalid.yml"; +    auto loader = Loader.fromString(yaml); +    loader.name = filename; + +    Node unused; +    auto e = loader.load().collectException!ScannerException(unused); +    assert(e.mark.name == filename); +} diff --git a/src/ext_depends/D-YAML/source/dyaml/node.d b/src/ext_depends/D-YAML/source/dyaml/node.d index 5cb318e..e96bcec 100644 --- a/src/ext_depends/D-YAML/source/dyaml/node.d +++ b/src/ext_depends/D-YAML/source/dyaml/node.d @@ -27,7 +27,7 @@ import dyaml.exception;  import dyaml.style;  /// Exception thrown at node related errors. -class NodeException : YAMLException +class NodeException : MarkedYAMLException  {      package:          // Construct a NodeException. @@ -37,7 +37,7 @@ class NodeException : YAMLException          this(string msg, Mark start, string file = __FILE__, size_t line = __LINE__)              @safe          { -            super(msg ~ "\nNode at: " ~ start.toString(), file, line); +            super(msg, start, file, line);          }  } diff --git a/src/ext_depends/D-YAML/source/dyaml/reader.d b/src/ext_depends/D-YAML/source/dyaml/reader.d index 9fe42fc..ae44c80 100644 --- a/src/ext_depends/D-YAML/source/dyaml/reader.d +++ b/src/ext_depends/D-YAML/source/dyaml/reader.d @@ -405,6 +405,9 @@ final class Reader          /// Get file name.          string name() const @safe pure nothrow @nogc { return name_; } +        /// Set file name. +        void name(string name) pure @safe nothrow @nogc { name_ = name; } +          /// Get current line number.          uint line() const @safe pure nothrow @nogc { return line_; } diff --git a/src/ext_depends/D-YAML/source/dyaml/scanner.d b/src/ext_depends/D-YAML/source/dyaml/scanner.d index 2009521..3f0f394 100644 --- a/src/ext_depends/D-YAML/source/dyaml/scanner.d +++ b/src/ext_depends/D-YAML/source/dyaml/scanner.d @@ -185,6 +185,12 @@ struct Scanner              return tokens_.empty;          } +        /// Set file name. +        void name(string name) @safe pure nothrow @nogc +        { +            reader_.name = name; +        } +      private:          /// Most scanning error messages have the same format; so build them with this          /// function. | 
