Fix source spans for scalars.
Closes #13
R=pquitslund@google.com, rnystrom@google.com
Review URL: https://codereview.chromium.org//1329183002 .
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6359d97..2dfac86 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 2.1.5
+
+* Fix a bug with 2.1.4 where source span information was being discarded for
+ scalar values.
+
## 2.1.4
* Substantially improve performance.
diff --git a/lib/src/yaml_node.dart b/lib/src/yaml_node.dart
index d4961bb..99f7515 100644
--- a/lib/src/yaml_node.dart
+++ b/lib/src/yaml_node.dart
@@ -166,7 +166,7 @@
/// Users of the library should not use this constructor.
YamlScalar.internal(this.value, ScalarEvent scalar)
: style = scalar.style {
- _span = span;
+ _span = scalar.span;
}
/// Users of the library should not use this constructor.
diff --git a/pubspec.yaml b/pubspec.yaml
index f6a5b1e..f91d9cf 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: yaml
-version: 2.1.4
+version: 2.1.5
author: "Dart Team <misc@dartlang.org>"
homepage: https://github.com/dart-lang/yaml
description: A parser for YAML.
diff --git a/test/yaml_test.dart b/test/yaml_test.dart
index 8091dc5..c4601d5 100644
--- a/test/yaml_test.dart
+++ b/test/yaml_test.dart
@@ -54,6 +54,43 @@
});
});
+ test("includes source span information", () {
+ var yaml = loadYamlNode(r"""
+- foo:
+ bar
+- 123
+""");
+
+ expect(yaml.span.start.line, equals(0));
+ expect(yaml.span.start.column, equals(0));
+ expect(yaml.span.end.line, equals(3));
+ expect(yaml.span.end.column, equals(0));
+
+ var map = yaml.nodes.first;
+ expect(map.span.start.line, equals(0));
+ expect(map.span.start.column, equals(2));
+ expect(map.span.end.line, equals(2));
+ expect(map.span.end.column, equals(0));
+
+ var key = map.nodes.keys.first;
+ expect(key.span.start.line, equals(0));
+ expect(key.span.start.column, equals(2));
+ expect(key.span.end.line, equals(0));
+ expect(key.span.end.column, equals(5));
+
+ var value = map.nodes.values.first;
+ expect(value.span.start.line, equals(1));
+ expect(value.span.start.column, equals(4));
+ expect(value.span.end.line, equals(1));
+ expect(value.span.end.column, equals(7));
+
+ var scalar = yaml.nodes.last;
+ expect(scalar.span.start.line, equals(2));
+ expect(scalar.span.start.column, equals(2));
+ expect(scalar.span.end.line, equals(2));
+ expect(scalar.span.end.column, equals(5));
+ });
+
// The following tests are all taken directly from the YAML spec
// (http://www.yaml.org/spec/1.2/spec.html). Most of them are code examples
// that are directly included in the spec, but additional tests are derived