# Packages that deliberately use their own analysis_options.yaml.
#
# Please consult with #hackers-ecosystem before adding anything to this list,
# as the goal is to have consistent analysis options across all packages.
#
# All entries here shoud include a comment explaining why they use different
# options.

# DO NOT move or delete this file without updating
# https://github.com/dart-lang/sdk/blob/main/tools/bots/flutter/analyze_flutter_packages.sh
# and
# https://github.com/flutter/flutter/blob/main/dev/bots/test.dart
# which reference this file from source, but out-of-repo.
# Contact stuartmorgan or devoncarew for assistance if necessary.

# Opts out of unawaited_futures, matching flutter/flutter's disabling due
# to interactions with animation.
- animations
# Deliberately uses flutter_lints, as that's what it is demonstrating.
- flutter_lints/example
# Adopts some flutter_tools rules regarding public api docs due to being an
# extension of the tool and using tools base code.
- flutter_migrate
# Has some test files that are intentionally broken to conduct dart fix tests.
# Also opts out of unawaited_futures, matching flutter/flutter.
- go_router
# Has some constructions that are currently handled poorly by dart format.
- rfw/example
# Disables docs requirements, as it is test code.
- web_benchmarks/testing/test_app
