Skip to content

Changelog

  • The five rules of the core, ctx_in_cleanup, release_on_the_call, catch_without_check, sync_fake_async and bare_await, come from the new package async_job_lints, for code on async_job alone. This plugin includes them under the same names, so diagnostics: and // ignore: stay as they are. Their changes are listed in the changelog of async_job_lints. The ids of the quick fixes of release_on_the_call and catch_without_check begin with async_job_lints.fix. instead of solo_lints.fix., so an editor binding that names an old id needs the new one. Name one of the two plugins, not both.
  • The README describes the package as the plugin for solo and flutter_solo, and the rules of the core link to the README of async_job_lints.
  • The package has an example: a recorder with three mistakes, the lines the plugin reports and the same job fixed.
  • pubspec.yaml names the documentation site, and pub.dev links to it.
  • The blocks of the README ask for this version.
  • The tests run against async_job and solo 1.0.0; the rules have not changed.
  • The README no longer names wait among the members of the context, since async_job 1.0 has no ctx.wait. Its Versions section says that the rules still know wait, the name of abandonable before 1.0.
  • The blocks of the README ask for this version.
  • The README links to the page of the package on the documentation site.
  • The README says that dart analyze shows the diagnostics of the plugin on the root of the package or on single files, but not on a folder below the root, such as lib.
  • The README no longer says that flutter analyze reports the diagnostics of the plugin: from Flutter 3.44 on it shows none of them, and a Flutter package runs dart analyze for the plugin.
  • bare_await, a lint: an await in a job body that waits past the context, so a cancellation of the job does not end the wait, and an await for that reads a stream past ctx.each. It is quiet in cleanup, in the actions of join and uncancellable, in unattended work, in finally, in a body made with cancellable: false and on a release right after ctx.disown.
  • The README says how to raise a rule to a warning, that dart fix does not apply the quick fixes of a plugin, and that Dart 3.12 prints each diagnostic of the analyzer twice in a package that names a plugin.

Initial release. An analyzer plugin for code built on async_job and solo, for Dart 3.10 and later.

  • ctx_in_cleanup, a warning: a waiting member of the context called in cleanup, where it throws StateError.
  • release_on_the_call, a warning: a release registered on the line under the call that brings the resource, where a cancellation loses it.
  • catch_without_check, a lint: a broad catch in a body that acts before asking the job whether it was cancelled.
  • sync_fake_async, a warning: an async callback of fakeAsync or FakeAsync.run.
  • await_own_queue, a warning: a job of a Solo controller that waits for a job queued on the same controller, or for its close() or cancelAll().
  • key_per_request, a lint: a Policy.droppable job whose key reads no argument while its body does, so a later caller gets the result of the first.
  • ignore_failure_hides_bugs, a lint: ignoreFailure() on a job that names its expected errors in isExpectedError, which hides the bugs the predicate lets through.
  • Quick fixes for release_on_the_call (the release moves into dispose: or discard: of the call), catch_without_check (ctx.check(); becomes the first line of the catch) and key_per_request (the arguments the body reads go into the key).