diff --git a/.github/workflows/test-package.yml b/.github/workflows/test-package.yml index 9bf6845..bc43599 100644 --- a/.github/workflows/test-package.yml +++ b/.github/workflows/test-package.yml @@ -22,8 +22,8 @@ jobs: matrix: sdk: [dev] steps: - - uses: actions/checkout@v3 - - uses: dart-lang/setup-dart@v1 + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d with: sdk: ${{ matrix.sdk }} - id: install @@ -47,10 +47,10 @@ jobs: matrix: # Add macos-latest and/or windows-latest if relevant for this package. os: [ubuntu-latest] - sdk: [2.12.0, dev] + sdk: [2.18.0, dev] steps: - - uses: actions/checkout@v3 - - uses: dart-lang/setup-dart@v1 + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d with: sdk: ${{ matrix.sdk }} - id: install diff --git a/CHANGELOG.md b/CHANGELOG.md index 5963ce8..b5346b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ ## 1.2.0 +* Require Dart 2.18.0 + * Add better support for reading code points in the Unicode supplementary plane: * Added `StringScanner.readCodePoint()`, which consumes an entire Unicode code diff --git a/analysis_options.yaml b/analysis_options.yaml index a4495f2..b507c06 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,75 +1,55 @@ +# https://dart.dev/guides/language/analysis-options include: package:lints/recommended.yaml analyzer: - strong-mode: - implicit-casts: false + language: + strict-casts: true + strict-inference: true + strict-raw-types: true linter: rules: + - always_declare_return_types - avoid_bool_literals_in_conditional_expressions - avoid_catching_errors - avoid_classes_with_only_static_members - - avoid_function_literals_in_foreach_calls + - avoid_dynamic_calls - avoid_private_typedef_functions - avoid_redundant_argument_values - - avoid_renaming_method_parameters - avoid_returning_null_for_future - - avoid_returning_null_for_void - avoid_returning_this - - avoid_single_cascade_in_expression_statements - avoid_unused_constructor_parameters - avoid_void_async - - await_only_futures - - camel_case_types - cancel_subscriptions - comment_references - - constant_identifier_names - - control_flow_in_finally - directives_ordering - - empty_statements - - file_names - - hash_and_equals - - implementation_imports - - iterable_contains_unrelated_type - join_return_with_assignment - lines_longer_than_80_chars - - list_remove_unrelated_type - literal_only_boolean_expressions - missing_whitespace_between_adjacent_strings - no_adjacent_strings_in_list - no_runtimeType_toString - - non_constant_identifier_names + - omit_local_variable_types - only_throw_errors - - overridden_fields - package_api_docs - - package_names - - package_prefixed_library_names - prefer_asserts_in_initializer_lists - prefer_const_constructors - prefer_const_declarations - prefer_expression_function_bodies - prefer_final_locals - - prefer_function_declarations_over_variables - - prefer_initializing_formals - - prefer_inlined_adds - - prefer_interpolation_to_compose_strings - - prefer_is_not_operator - - prefer_null_aware_operators - prefer_relative_imports - - prefer_typing_uninitialized_variables - - prefer_void_to_null - - provide_deprecation_message + - prefer_single_quotes - sort_pub_dependencies - test_types_in_equals - throw_in_finally + - type_annotate_public_apis + - unawaited_futures - unnecessary_await_in_return - - unnecessary_brace_in_string_interps - - unnecessary_getters_setters - unnecessary_lambdas - - unnecessary_null_aware_assignments - - unnecessary_overrides - unnecessary_parenthesis + - unnecessary_raw_strings - unnecessary_statements - - unnecessary_string_interpolations + - use_if_null_to_convert_nulls_to_bools + - use_raw_strings - use_string_buffers - - void_checks + - use_super_parameters diff --git a/lib/src/eager_span_scanner.dart b/lib/src/eager_span_scanner.dart index 3bf5416..db06127 100644 --- a/lib/src/eager_span_scanner.dart +++ b/lib/src/eager_span_scanner.dart @@ -68,8 +68,7 @@ class EagerSpanScanner extends SpanScanner { } } - EagerSpanScanner(String string, {sourceUrl, int? position}) - : super(string, sourceUrl: sourceUrl, position: position); + EagerSpanScanner(super.string, {super.sourceUrl, super.position}); @override bool scanChar(int character) { diff --git a/lib/src/exception.dart b/lib/src/exception.dart index 8aa7aab..57af541 100644 --- a/lib/src/exception.dart +++ b/lib/src/exception.dart @@ -16,6 +16,6 @@ class StringScannerException extends SourceSpanFormatException { /// This may be `null`, indicating that the source URL is unknown. Uri? get sourceUrl => span?.sourceUrl; - StringScannerException(String message, SourceSpan span, String source) - : super(message, span, source); + StringScannerException( + super.message, SourceSpan super.span, String super.source); } diff --git a/lib/src/line_scanner.dart b/lib/src/line_scanner.dart index 4f0673c..5bf701c 100644 --- a/lib/src/line_scanner.dart +++ b/lib/src/line_scanner.dart @@ -73,8 +73,7 @@ class LineScanner extends StringScanner { } } - LineScanner(String string, {sourceUrl, int? position}) - : super(string, sourceUrl: sourceUrl, position: position); + LineScanner(super.string, {super.sourceUrl, super.position}); @override bool scanChar(int character) { diff --git a/lib/src/span_scanner.dart b/lib/src/span_scanner.dart index 806a8f8..413a433 100644 --- a/lib/src/span_scanner.dart +++ b/lib/src/span_scanner.dart @@ -59,13 +59,12 @@ class SpanScanner extends StringScanner implements LineScanner { /// [sourceUrl] is used as [SourceLocation.sourceUrl] for the returned /// [FileSpan]s as well as for error reporting. It can be a [String], a /// [Uri], or `null`. - SpanScanner(String string, {sourceUrl, int? position}) - : _sourceFile = SourceFile.fromString(string, url: sourceUrl), - super(string, sourceUrl: sourceUrl, position: position); + SpanScanner(super.string, {super.sourceUrl, super.position}) + : _sourceFile = SourceFile.fromString(string, url: sourceUrl); /// Creates a new [SpanScanner] that eagerly computes line and column numbers. /// - /// In general [new SpanScanner] will be more efficient, since it avoids extra + /// In general [SpanScanner.new] will be more efficient, since it avoids extra /// computation on every scan. However, eager scanning can be useful for /// situations where the normal course of parsing frequently involves /// accessing the current line and column numbers. diff --git a/lib/src/string_scanner.dart b/lib/src/string_scanner.dart index de566a5..1466944 100644 --- a/lib/src/string_scanner.dart +++ b/lib/src/string_scanner.dart @@ -56,7 +56,7 @@ class StringScanner { /// [position] defaults to 0, the beginning of the string. [sourceUrl] is the /// URL of the source of the string being scanned, if available. It can be /// a [String], a [Uri], or `null`. - StringScanner(this.string, {sourceUrl, int? position}) + StringScanner(this.string, {Object? sourceUrl, int? position}) : sourceUrl = sourceUrl == null ? null : sourceUrl is String @@ -205,7 +205,7 @@ class StringScanner { name = '/$source/'; } else { name = - pattern.toString().replaceAll('\\', '\\\\').replaceAll('"', '\\"'); + pattern.toString().replaceAll(r'\', r'\\').replaceAll('"', r'\"'); name = '"$name"'; } } diff --git a/pubspec.yaml b/pubspec.yaml index c38f3bf..6f14e81 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,11 +4,11 @@ description: A class for parsing strings using a sequence of patterns. repository: https://github.com/dart-lang/string_scanner environment: - sdk: ">=2.12.0 <3.0.0" + sdk: ">=2.18.0 <3.0.0" dependencies: source_span: ^1.8.0 dev_dependencies: - lints: ^1.0.0 + lints: ^2.0.0 test: ^1.16.0