Check dart sources with --fatal-lints --fatal-hints

Fixes #804

Downstream projects (Flutter, etc) use stricter checking than Mojo
traditionally has. The most visible impact of this has been that generated
.mojom.dart files have introducted analyzer errors.

This change makes the `mojo/tools/mojob.py test` dart analysis phase treat
lints and hints as fatal. On top of that it corrects various code conform to
this higher standart and modifies the dart bindings generator to comply too.

Most of the changes seem harmless, a few could be correcting subtle errors.

R=zra@google.com

Review URL: https://codereview.chromium.org/2149533004 .

Cr-Mirrored-From: https://github.com/domokit/mojo
Cr-Mirrored-Commit: 54766d900eba8e1737bf3e7ddf8470ab4079bc1c
5 files changed
tree: bf590200cdc86c8d5328f15052631b5d84a9f043
  1. build/
  2. c/
  3. cpp/
  4. dart/
  5. go/
  6. interfaces/
  7. java/
  8. js/
  9. platform/
  10. python/
  11. rust/
  12. third_party/
  13. tools/
  14. .gitignore
  15. BUILD.gn
  16. LICENSE
  17. mojo.gni
  18. mojo_application.gni
  19. mojo_sdk.gni
  20. README.md
README.md

Mojo Public API

The Mojo Public API is a binary stable API to the Mojo system.

It consists of support for a number of programming languages (with a directory for each support language), some “build” tools and build-time requirements, and interface definitions for Mojo services (specified using an IDL).

Note that there are various subdirectories named tests/. These contain tests of the code in the enclosing directory, and are not meant for use by Mojo applications.

C/CPP/JS

The c/, cpp/, js/ subdirectories define the API for C, C++, and JavaScript, respectively.

The basic principle for these directories is that they consist of the source files that one needs at build/deployment/run time (as appropriate for the language), organized in a natural way for the particular language.

Interfaces

The interfaces/ subdirectory contains Mojo IDL (a.k.a. .mojom) descriptions of standard Mojo services.

Platform

The platform/ subdirectory contains any build-time requirements (e.g., static libraries) that may be needed to produce a Mojo application for certain platforms, such as a native shared library or as a NaCl binary.

Tools

The tools/ subdirectory contains tools that are useful/necessary at build/deployment time. These tools may be needed (as a practical necessity) to use the API in any given language, e.g., to generate bindings from Mojo IDL files.