Begin reworking ResolutionStorer API to look more like the Factory class.

This CL makes the following changes:

- Removes the type parameters from the ResolutionStorer interface;
  they remain in the implementation (which is now called
  _ResolutionStorer).  In a follow-up CL I will add type parameters to
  ResolutionStorer to match those expected by Factory.  In the long
  term, once the types have settled down, I'll fuse ResolutionStorer
  and _ResolutionStorer back together and make the types more
  concrete.

- Removes the "...Enter" calls from ResolutionStorer and
  TypeInferenceListener.  Now all the information needed by the
  analyzer is passed in the "...Exit" methods (and the word "Exit" has
  been dropped from the method names).  As a consequence,
  _ResolutionStorer no longer needs to use a stack of function
  pointers to defer work from the "...Enter" to the "...Exit" calls.

- Removes the TypeInferenceBase class and moves the base class methods
  into ResolutionStorer.  This makes TypeInferenceListener a strictly
  abstract interface class, which is easier to reason about.

- Adds a KernelTypeInferenceListener class, which implements
  TypeInferenceListener and does nothing.  This is used during top
  level type inference, where we don't need to report resolution
  information to the analyzer.  Eventually this will be replaced with
  ToplevelInferenceFactory.

In a follow-up CL I will add additional parameters to the
ResolutionStorer methods so that they match the Factory method
signatures exactly, and add an "implements" clause to keep them in
sync.

Change-Id: I908b643293d051474dfb4ff24430430bc1572672
Reviewed-on: https://dart-review.googlesource.com/61403
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
7 files changed
tree: 26306cafa2c66a317579e0dd0dc3f817c800c21c
  1. .github/
  2. build/
  3. client/
  4. docs/
  5. pkg/
  6. runtime/
  7. samples/
  8. samples-dev/
  9. sdk/
  10. tests/
  11. third_party/
  12. tools/
  13. utils/
  14. .clang-format
  15. .gitattributes
  16. .gitconfig
  17. .gitignore
  18. .gn
  19. .mailmap
  20. .packages
  21. AUTHORS
  22. BUILD.gn
  23. CHANGELOG.md
  24. codereview.settings
  25. dartdoc_options.yaml
  26. DEPS
  27. LICENSE
  28. PATENTS
  29. PRESUBMIT.py
  30. README.dart-sdk
  31. README.md
  32. WATCHLISTS
README.md

Dart

Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.

Using Dart

Visit the dartlang.org to learn more about the language, tools, getting started, and more.

Browse pub.dartlang.org for more packages and libraries contributed by the community and the Dart team.

Building Dart

If you want to build Dart yourself, here is a guide to getting the source, preparing your machine to build the SDK, and building.

There are more documents on our wiki.

Contributing to Dart

The easiest way to contribute to Dart is to file issues.

You can also contribute patches, as described in Contributing.

License & patents

See LICENSE and PATENTS.