commit | 05ab41c99b0972e75086ecbc3f617ba9a36da372 | [log] [tgz] |
---|---|---|
author | Paul Berry <paulberry@google.com> | Fri Aug 31 13:25:08 2018 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Fri Aug 31 13:25:08 2018 +0000 |
tree | 31dc3573583bfef7c1b81869c9c6405fb7fcd1c4 | |
parent | c5295037c47a87601ad60490c226ac27bf383ca1 [diff] |
Refactor summary tests in preparation for adding a one-phase summary API. I will soon be adding an API for generating summaries that generates them in one phase, as opposed to the current two-phase approach of building unlinked summaries and then linking them together. This is will be needed in order to support full type inference of summaries, since full type inference requires examining the contents of block-bodied closures, and it's not worth the effort of trying serialize the contents of block-bodied closures into unlinked summaries. To prepare for this, the summary tests need to be generalized so that during the transition period they will be able to be run with either API. This CL introduces several classes in a new `test_strategies.dart` file: - Interfaces `SummaryBaseTestStrategy`, `SummaryBlackBoxTestStrategy`, and `SummaryLinkerTestStrategy`. These interfaces define the methods that can be invoked by tests of the summary mechanism. - Implementations of those interfaces: `SummaryBlackBoxTestStrategyPrelink`, `SummaryBlackBoxTestStrategyTwoPhase`, and `SummaryLinkerTestStrategyTwoPhase`. These classes provide the ability to drive the summary mechanism in various ways. When the one-phase API is added, more classes will be added to drive it. - A few private classes occupying intermediate positions in the class hierarchy, as well as auxiliary data structures needed by the above classes. The tests themselves have been moved into mixin classes so that they can be applied to any of the implementations above. Change-Id: Iac3585944297f78f184d35de544aa4c8d8abe99a Reviewed-on: https://dart-review.googlesource.com/72320 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Paul Berry <paulberry@google.com>
Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.
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.
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.
The easiest way to contribute to Dart is to file issues.
You can also contribute patches, as described in Contributing.