fix for issue 49 (#79)
Fixes the span for null nodes in block lists.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 258fb62..5b51135 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
## 2.2.1
* Update min Dart SDK to `2.4.0`.
+* Fixed span for null nodes in block lists.
## 2.2.0
diff --git a/lib/src/parser.dart b/lib/src/parser.dart
index 3eba773..4c8aaaf 100644
--- a/lib/src/parser.dart
+++ b/lib/src/parser.dart
@@ -348,12 +348,13 @@
var token = _scanner.peek();
if (token.type == TokenType.blockEntry) {
+ var start = token.span.start;
token = _scanner.advance();
if (token.type == TokenType.blockEntry ||
token.type == TokenType.blockEnd) {
_state = _State.BLOCK_SEQUENCE_ENTRY;
- return _processEmptyScalar(token.span.end);
+ return _processEmptyScalar(start);
} else {
_states.add(_State.BLOCK_SEQUENCE_ENTRY);
return _parseNode(block: true);
diff --git a/pubspec.yaml b/pubspec.yaml
index c0bfd99..0641a2d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: yaml
-version: 2.2.1-dev
+version: 2.2.1
description: A parser for YAML, a human-friendly data serialization standard
homepage: https://github.com/dart-lang/yaml
diff --git a/test/span_test.dart b/test/span_test.dart
index 7ef61d3..4017868 100644
--- a/test/span_test.dart
+++ b/test/span_test.dart
@@ -86,4 +86,85 @@
);
});
});
+
+ group('block', () {
+ YamlList list, nestedList;
+
+ setUpAll(() {
+ const yamlStr = '''
+- foo
+-
+ - one
+ -
+ - three
+ -
+ - five
+ -
+-
+ a : b
+ c : d
+- bar
+''';
+
+ list = loadYaml(yamlStr) as YamlList;
+ nestedList = list.nodes[1] as YamlList;
+ });
+
+ test('root nodes span', () {
+ _expectSpan(list.nodes[0].span, r'''
+line 1, column 3: message
+ ╷
+1 │ - foo
+ │ ^^^
+ ╵''');
+
+ _expectSpan(list.nodes[1].span, r'''
+line 3, column 3: message
+ ╷
+3 │ ┌ - one
+4 │ │ -
+5 │ │ - three
+6 │ │ -
+7 │ │ - five
+8 │ └ -
+ ╵''');
+
+ _expectSpan(list.nodes[2].span, r'''
+line 10, column 3: message
+ ╷
+10 │ ┌ a : b
+11 │ └ c : d
+ ╵''');
+
+ _expectSpan(list.nodes[3].span, r'''
+line 12, column 3: message
+ ╷
+12 │ - bar
+ │ ^^^
+ ╵''');
+ });
+
+ test('null nodes span', () {
+ _expectSpan(nestedList.nodes[1].span, r'''
+line 4, column 3: message
+ ╷
+4 │ -
+ │ ^
+ ╵''');
+
+ _expectSpan(nestedList.nodes[3].span, r'''
+line 6, column 3: message
+ ╷
+6 │ -
+ │ ^
+ ╵''');
+
+ _expectSpan(nestedList.nodes[5].span, r'''
+line 8, column 3: message
+ ╷
+8 │ -
+ │ ^
+ ╵''');
+ });
+ });
}