From 54884db790720ac0f7ca491cb9e6d7a0395ad4cb Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Fri, 23 Feb 2024 09:07:09 -0800 Subject: [PATCH] update to the latest sdk; update lints (#68) --- .github/workflows/test-package.yml | 2 +- CHANGELOG.md | 4 ++ analysis_options.yaml | 7 ++++ lib/src/editor.dart | 1 + lib/src/errors.dart | 12 +++--- lib/src/list_mutations.dart | 60 +++++++++++++++--------------- lib/src/map_mutations.dart | 32 ++++++++-------- lib/src/source_edit.dart | 2 +- lib/src/strings.dart | 27 +++++++------- lib/src/utils.dart | 7 ++-- lib/src/wrap.dart | 4 +- pubspec.yaml | 13 ++++--- test/test_utils.dart | 4 +- 13 files changed, 97 insertions(+), 78 deletions(-) diff --git a/.github/workflows/test-package.yml b/.github/workflows/test-package.yml index dbdd56a..41d7696 100644 --- a/.github/workflows/test-package.yml +++ b/.github/workflows/test-package.yml @@ -47,7 +47,7 @@ jobs: matrix: # Add macos-latest and/or windows-latest if relevant for this package. os: [ubuntu-latest] - sdk: [2.19.0, stable, dev] + sdk: ['3.0', stable, dev] platform: [vm, chrome] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 diff --git a/CHANGELOG.md b/CHANGELOG.md index 7213676..9472abf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.2.1-wip + +- Require Dart 3.0 + ## 2.2.0 - Fix inconsistent line endings when inserting maps into a document using `\r\n`. diff --git a/analysis_options.yaml b/analysis_options.yaml index d978f81..937e7fe 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1 +1,8 @@ include: package:dart_flutter_team_lints/analysis_options.yaml + +analyzer: + errors: + inference_failure_on_collection_literal: ignore + inference_failure_on_function_invocation: ignore + inference_failure_on_function_return_type: ignore + inference_failure_on_instance_creation: ignore diff --git a/lib/src/editor.dart b/lib/src/editor.dart index 9947d8f..be09f98 100644 --- a/lib/src/editor.dart +++ b/lib/src/editor.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:meta/meta.dart'; +import 'package:source_span/source_span.dart'; import 'package:yaml/yaml.dart'; import 'equality.dart'; diff --git a/lib/src/errors.dart b/lib/src/errors.dart index 51c6243..0e60dd8 100644 --- a/lib/src/errors.dart +++ b/lib/src/errors.dart @@ -44,11 +44,11 @@ class PathError extends ArgumentError { /// Exception thrown when the path contains an alias along the way. /// /// When a path contains an aliased node, the behavior becomes less well-defined -/// because we cannot be certain if the user wishes for the change to -/// propagate throughout all the other aliased nodes, or if the user wishes -/// for only that particular node to be modified. As such, [AliasError] reflects -/// the detection that our change will impact an alias, and we do not intend -/// on supporting such changes for the foreseeable future. +/// because we cannot be certain if the user wishes for the change to propagate +/// throughout all the other aliased nodes, or if the user wishes for only that +/// particular node to be modified. As such, [AliasException] reflects the +/// detection that our change will impact an alias, and we do not intend on +/// supporting such changes for the foreseeable future. @sealed class AliasException extends FormatException { /// The path that caused the error @@ -70,7 +70,7 @@ class AliasException extends FormatException { /// Error thrown when an assertion about the YAML fails. Extends /// [AssertionError] to override the [toString] method for pretty printing. class _YamlAssertionError extends AssertionError { - _YamlAssertionError(message) : super(message); + _YamlAssertionError(super.message); @override String toString() { diff --git a/lib/src/list_mutations.dart b/lib/src/list_mutations.dart index 1d02ded..a76f4bc 100644 --- a/lib/src/list_mutations.dart +++ b/lib/src/list_mutations.dart @@ -10,8 +10,9 @@ import 'strings.dart'; import 'utils.dart'; import 'wrap.dart'; -/// Returns a [SourceEdit] describing the change to be made on [yaml] to achieve -/// the effect of setting the element at [index] to [newValue] when re-parsed. +/// Returns a [SourceEdit] describing the change to be made on [yamlEdit] to +/// achieve the effect of setting the element at [index] to [newValue] when +/// re-parsed. SourceEdit updateInList( YamlEditor yamlEdit, YamlList list, int index, YamlNode newValue) { RangeError.checkValueInInterval(index, 0, list.length - 1); @@ -56,8 +57,8 @@ SourceEdit updateInList( } } -/// Returns a [SourceEdit] describing the change to be made on [yaml] to achieve -/// the effect of appending [item] to the list. +/// Returns a [SourceEdit] describing the change to be made on [yamlEdit] to +/// achieve the effect of appending [item] to the list. SourceEdit appendIntoList(YamlEditor yamlEdit, YamlList list, YamlNode item) { if (list.style == CollectionStyle.FLOW) { return _appendToFlowList(yamlEdit, list, item); @@ -66,8 +67,8 @@ SourceEdit appendIntoList(YamlEditor yamlEdit, YamlList list, YamlNode item) { } } -/// Returns a [SourceEdit] describing the change to be made on [yaml] to achieve -/// the effect of inserting [item] to the list at [index]. +/// Returns a [SourceEdit] describing the change to be made on [yamlEdit] to +/// achieve the effect of inserting [item] to the list at [index]. SourceEdit insertInList( YamlEditor yamlEdit, YamlList list, int index, YamlNode item) { RangeError.checkValueInInterval(index, 0, list.length); @@ -85,8 +86,8 @@ SourceEdit insertInList( } } -/// Returns a [SourceEdit] describing the change to be made on [yaml] to achieve -/// the effect of removing the element at [index] when re-parsed. +/// Returns a [SourceEdit] describing the change to be made on [yamlEdit] to +/// achieve the effect of removing the element at [index] when re-parsed. SourceEdit removeInList(YamlEditor yamlEdit, YamlList list, int index) { final nodeToRemove = list.nodes[index]; @@ -97,17 +98,18 @@ SourceEdit removeInList(YamlEditor yamlEdit, YamlList list, int index) { } } -/// Returns a [SourceEdit] describing the change to be made on [yaml] to achieve -/// the effect of addition [item] into [nodes], noting that this is a flow list. +/// Returns a [SourceEdit] describing the change to be made on [yamlEdit] to +/// achieve the effect of addition [item] into [list], noting that this is a +/// flow list. SourceEdit _appendToFlowList( YamlEditor yamlEdit, YamlList list, YamlNode item) { final valueString = _formatNewFlow(list, item, true); return SourceEdit(list.span.end.offset - 1, 0, valueString); } -/// Returns a [SourceEdit] describing the change to be made on [yaml] to achieve -/// the effect of addition [item] into [nodes], noting that this is a block -/// list. +/// Returns a [SourceEdit] describing the change to be made on [yamlEdit] to +/// achieve the effect of addition [item] into [list], noting that this is a +/// block list. SourceEdit _appendToBlockList( YamlEditor yamlEdit, YamlList list, YamlNode item) { var formattedValue = _formatNewBlock(yamlEdit, list, item); @@ -159,11 +161,11 @@ String _formatNewFlow(YamlList list, YamlNode item, [bool isLast = false]) { return valueString; } -/// Returns a [SourceEdit] describing the change to be made on [yaml] to achieve -/// the effect of inserting [item] into [nodes] at [index], noting that this is -/// a block list. +/// Returns a [SourceEdit] describing the change to be made on [yamlEdit] to +/// achieve the effect of inserting [item] into [list] at [index], noting that +/// this is a block list. /// -/// [index] should be non-negative and less than or equal to [length]. +/// [index] should be non-negative and less than or equal to `list.length`. SourceEdit _insertInBlockList( YamlEditor yamlEdit, YamlList list, int index, YamlNode item) { RangeError.checkValueInInterval(index, 0, list.length); @@ -180,11 +182,11 @@ SourceEdit _insertInBlockList( return SourceEdit(start, 0, formattedValue); } -/// Returns a [SourceEdit] describing the change to be made on [yaml] to achieve -/// the effect of inserting [item] into [nodes] at [index], noting that this is -/// a flow list. +/// Returns a [SourceEdit] describing the change to be made on [yamlEdit] to +/// achieve the effect of inserting [item] into [list] at [index], noting that +/// this is a flow list. /// -/// [index] should be non-negative and less than or equal to [length]. +/// [index] should be non-negative and less than or equal to `list.length`. SourceEdit _insertInFlowList( YamlEditor yamlEdit, YamlList list, int index, YamlNode item) { RangeError.checkValueInInterval(index, 0, list.length); @@ -202,11 +204,11 @@ SourceEdit _insertInFlowList( return SourceEdit(start, 0, formattedValue); } -/// Returns a [SourceEdit] describing the change to be made on [yaml] to achieve -/// the effect of removing [nodeToRemove] from [nodes], noting that this is a -/// block list. +/// Returns a [SourceEdit] describing the change to be made on [yamlEdit] to +/// achieve the effect of removing [nodeToRemove] from [list], noting that this +/// is a block list. /// -/// [index] should be non-negative and less than or equal to [length]. +/// [index] should be non-negative and less than or equal to `list.length`. SourceEdit _removeFromBlockList( YamlEditor yamlEdit, YamlList list, YamlNode nodeToRemove, int index) { RangeError.checkValueInInterval(index, 0, list.length - 1); @@ -277,11 +279,11 @@ SourceEdit _removeFromBlockList( return SourceEdit(start, end - start, ''); } -/// Returns a [SourceEdit] describing the change to be made on [yaml] to achieve -/// the effect of removing [nodeToRemove] from [nodes], noting that this is a -/// flow list. +/// Returns a [SourceEdit] describing the change to be made on [yamlEdit] to +/// achieve the effect of removing [nodeToRemove] from [list], noting that this +/// is a flow list. /// -/// [index] should be non-negative and less than or equal to [length]. +/// [index] should be non-negative and less than or equal to `list.length`. SourceEdit _removeFromFlowList( YamlEditor yamlEdit, YamlList list, YamlNode nodeToRemove, int index) { RangeError.checkValueInInterval(index, 0, list.length - 1); diff --git a/lib/src/map_mutations.dart b/lib/src/map_mutations.dart index 5ae82f3..321987f 100644 --- a/lib/src/map_mutations.dart +++ b/lib/src/map_mutations.dart @@ -11,7 +11,7 @@ import 'strings.dart'; import 'utils.dart'; import 'wrap.dart'; -/// Performs the string operation on [yaml] to achieve the effect of setting +/// Performs the string operation on [yamlEdit] to achieve the effect of setting /// the element at [key] to [newValue] when re-parsed. SourceEdit updateInMap( YamlEditor yamlEdit, YamlMap map, Object? key, YamlNode newValue) { @@ -32,8 +32,8 @@ SourceEdit updateInMap( } } -/// Performs the string operation on [yaml] to achieve the effect of removing -/// the element at [key] when re-parsed. +/// Performs the string operation on [yamlEdit] to achieve the effect of +/// removing the element at [key] when re-parsed. SourceEdit removeInMap(YamlEditor yamlEdit, YamlMap map, Object? key) { assert(containsKey(map, key)); final keyNode = getKeyNode(map, key); @@ -46,7 +46,7 @@ SourceEdit removeInMap(YamlEditor yamlEdit, YamlMap map, Object? key) { } } -/// Performs the string operation on [yaml] to achieve the effect of adding +/// Performs the string operation on [yamlEdit] to achieve the effect of adding /// the [key]:[newValue] pair when reparsed, bearing in mind that this is a /// block map. SourceEdit _addToBlockMap( @@ -95,7 +95,7 @@ SourceEdit _addToBlockMap( return SourceEdit(offset, 0, formattedValue); } -/// Performs the string operation on [yaml] to achieve the effect of adding +/// Performs the string operation on [yamlEdit] to achieve the effect of adding /// the [key]:[newValue] pair when reparsed, bearing in mind that this is a flow /// map. SourceEdit _addToFlowMap( @@ -120,9 +120,9 @@ SourceEdit _addToFlowMap( return SourceEdit(insertionOffset, 0, '$keyString: $valueString, '); } -/// Performs the string operation on [yaml] to achieve the effect of replacing -/// the value at [key] with [newValue] when reparsed, bearing in mind that this -/// is a block map. +/// Performs the string operation on [yamlEdit] to achieve the effect of +/// replacing the value at [key] with [newValue] when reparsed, bearing in mind +/// that this is a block map. SourceEdit _replaceInBlockMap( YamlEditor yamlEdit, YamlMap map, Object? key, YamlNode newValue) { final yaml = yamlEdit.toString(); @@ -156,9 +156,9 @@ SourceEdit _replaceInBlockMap( return SourceEdit(start, end - start, valueAsString); } -/// Performs the string operation on [yaml] to achieve the effect of replacing -/// the value at [key] with [newValue] when reparsed, bearing in mind that this -/// is a flow map. +/// Performs the string operation on [yamlEdit] to achieve the effect of +/// replacing the value at [key] with [newValue] when reparsed, bearing in mind +/// that this is a flow map. SourceEdit _replaceInFlowMap( YamlEditor yamlEdit, YamlMap map, Object? key, YamlNode newValue) { final valueSpan = map.nodes[key]!.span; @@ -167,8 +167,9 @@ SourceEdit _replaceInFlowMap( return SourceEdit(valueSpan.start.offset, valueSpan.length, valueString); } -/// Performs the string operation on [yaml] to achieve the effect of removing -/// the [key] from the map, bearing in mind that this is a block map. +/// Performs the string operation on [yamlEdit] to achieve the effect of +/// removing the [keyNode] from the map, bearing in mind that this is a block +/// map. SourceEdit _removeFromBlockMap( YamlEditor yamlEdit, YamlMap map, YamlNode keyNode, YamlNode valueNode) { final keySpan = keyNode.span; @@ -214,8 +215,9 @@ SourceEdit _removeFromBlockMap( return SourceEdit(start, end - start, ''); } -/// Performs the string operation on [yaml] to achieve the effect of removing -/// the [key] from the map, bearing in mind that this is a flow map. +/// Performs the string operation on [yamlEdit] to achieve the effect of +/// removing the [keyNode] from the map, bearing in mind that this is a flow +/// map. SourceEdit _removeFromFlowMap( YamlEditor yamlEdit, YamlMap map, YamlNode keyNode, YamlNode valueNode) { var start = keyNode.span.start.offset; diff --git a/lib/src/source_edit.dart b/lib/src/source_edit.dart index bb70c2c..d177a19 100644 --- a/lib/src/source_edit.dart +++ b/lib/src/source_edit.dart @@ -73,7 +73,7 @@ class SourceEdit { return SourceEdit(offset, length, replacement); } - throw FormatException('Invalid JSON passed to SourceEdit'); + throw const FormatException('Invalid JSON passed to SourceEdit'); } /// Encodes this object as JSON-compatible structure. diff --git a/lib/src/strings.dart b/lib/src/strings.dart index 41994b9..7bcd5b4 100644 --- a/lib/src/strings.dart +++ b/lib/src/strings.dart @@ -131,10 +131,10 @@ String _tryYamlEncodeLiteral( /// Returns [value] with the necessary formatting applied in a flow context /// if possible. /// -/// If [value] is a [YamlScalar], we try to respect its [style] parameter where -/// possible. Certain cases make this impossible (e.g. a plain string scalar -/// that starts with '>'), in which case we will produce [value] with default -/// styling options. +/// If [value] is a [YamlScalar], we try to respect its [YamlScalar.style] +/// parameter where possible. Certain cases make this impossible (e.g. a plain +/// string scalar that starts with '>'), in which case we will produce [value] +/// with default styling options. String _yamlEncodeFlowScalar(YamlNode value) { if (value is YamlScalar) { assertValidScalar(value.value); @@ -161,10 +161,10 @@ String _yamlEncodeFlowScalar(YamlNode value) { /// Returns [value] with the necessary formatting applied in a block context /// if possible. /// -/// If [value] is a [YamlScalar], we try to respect its [style] parameter where -/// possible. Certain cases make this impossible (e.g. a folded string scalar -/// 'null'), in which case we will produce [value] with default styling -/// options. +/// If [value] is a [YamlScalar], we try to respect its [YamlScalar.style] +/// parameter where possible. Certain cases make this impossible (e.g. a folded +/// string scalar 'null'), in which case we will produce [value] with default +/// styling options. String yamlEncodeBlockScalar( YamlNode value, int indentation, @@ -207,10 +207,11 @@ String yamlEncodeBlockScalar( /// Returns [value] with the necessary formatting applied in a flow context. /// -/// If [value] is a [YamlNode], we try to respect its [style] parameter where -/// possible. Certain cases make this impossible (e.g. a plain string scalar -/// that starts with '>', a child having a block style parameters), in which -/// case we will produce [value] with default styling options. +/// If [value] is a [YamlNode], we try to respect its [YamlScalar.style] +/// parameter where possible. Certain cases make this impossible (e.g. a plain +/// string scalar that starts with '>', a child having a block style +/// parameters), in which case we will produce [value] with default styling +/// options. String yamlEncodeFlowString(YamlNode value) { if (value is YamlList) { final list = value.nodes; @@ -231,8 +232,6 @@ String yamlEncodeFlowString(YamlNode value) { } /// Returns [value] with the necessary formatting applied in a block context. -/// -/// If [value] is a [YamlNode], we respect its [style] parameter. String yamlEncodeBlockString( YamlNode value, int indentation, diff --git a/lib/src/utils.dart b/lib/src/utils.dart index a84db3c..a85a155 100644 --- a/lib/src/utils.dart +++ b/lib/src/utils.dart @@ -6,6 +6,7 @@ import 'package:source_span/source_span.dart'; import 'package:yaml/yaml.dart'; import 'editor.dart'; +import 'wrap.dart'; /// Determines if [string] is dangerous by checking if parsing the plain string /// can return a result different from [string]. @@ -137,13 +138,13 @@ int getMapInsertionIndex(YamlMap map, Object newKey) { return map.length; } -/// Returns the detected indentation step used in [yaml], or -/// defaults to a value of `2` if no indentation step can be detected. +/// Returns the detected indentation step used in [editor], or defaults to a +/// value of `2` if no indentation step can be detected. /// /// Indentation step is determined by the difference in indentation of the /// first block-styled yaml collection in the second level as compared to the /// top-level elements. In the case where there are multiple possible -/// candidates, we choose the candidate closest to the start of [yaml]. +/// candidates, we choose the candidate closest to the start of [editor]. int getIndentation(YamlEditor editor) { final node = editor.parseAt([]); Iterable? children; diff --git a/lib/src/wrap.dart b/lib/src/wrap.dart index 9d4b684..73f7751 100644 --- a/lib/src/wrap.dart +++ b/lib/src/wrap.dart @@ -11,8 +11,8 @@ import 'package:yaml/yaml.dart'; import 'equality.dart'; import 'utils.dart'; -/// Returns a new [YamlMap] constructed by applying [update] onto the [nodes] -/// of this [YamlMap]. +/// Returns a new [YamlMap] constructed by applying [update] onto the nodes of +/// this [YamlMap]. YamlMap updatedYamlMap(YamlMap map, Function(Map) update) { final dummyMap = deepEqualsMap(); dummyMap.addAll(map.nodes); diff --git a/pubspec.yaml b/pubspec.yaml index fd13841..272da40 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,13 +1,16 @@ name: yaml_edit -version: 2.2.0 -description: A library for YAML manipulation with comment and whitespace preservation. +version: 2.2.1-wip +description: >- + A library for YAML manipulation with comment and whitespace preservation. repository: https://github.com/dart-lang/yaml_edit + issue_tracker: https://github.com/dart-lang/yaml_edit/issues + topics: - yaml environment: - sdk: ">=2.19.0 <3.0.0" + sdk: ^3.0.0 dependencies: collection: ^1.15.0 @@ -16,7 +19,7 @@ dependencies: yaml: ^3.1.0 dev_dependencies: - coverage: # we only need format_coverage, don't care what version - dart_flutter_team_lints: ^1.0.0 + coverage: any # we only need format_coverage, don't care what version + dart_flutter_team_lints: ^2.0.0 path: ^1.8.0 test: ^1.17.12 diff --git a/test/test_utils.dart b/test/test_utils.dart index 8a2be42..f60467d 100644 --- a/test/test_utils.dart +++ b/test/test_utils.dart @@ -20,7 +20,7 @@ void expectYamlBuilderValue(YamlEditor builder, Object expected) { expectDeepEquals(builderValue, expected); } -/// Asserts that [builder] has the same internal value as [expected]. +/// Asserts that [actual] has the same internal value as [expected]. void expectDeepEquals(Object? actual, Object expected) { expect( actual, predicate((actual) => deepEquals(actual, expected), '$expected')); @@ -31,7 +31,7 @@ Matcher notEquals(dynamic expected) => isNot(equals(expected)); /// A matcher for functions that throw [PathError]. Matcher throwsPathError = throwsA(isA()); -/// A matcher for functions that throw [AliasError]. +/// A matcher for functions that throw [AliasException]. Matcher throwsAliasException = throwsA(isA()); /// Enum to hold the possible modification methods.