Paul Berry
7b2e879858
Migration: integrate flow analysis of switch statements.
...
Change-Id: I53fff3cd3a756484e21c5355178f211dd52de78b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114562
Commit-Queue: Paul Berry <paulberry@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
2019-08-26 20:42:26 +00:00
Paul Berry
e0c37247a2
Migration: integrate flow analysis of logical not expressions
...
Change-Id: Ib30d21f63e002346cd1bd08507b6ec15dcf200da
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114540
Reviewed-by: Dan Rubel <danrubel@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-26 14:00:05 +00:00
Paul Berry
9c761e1531
Migration: integrate flow analysis of if-null (??) expressions.
...
Change-Id: Iff78b3fe100d2014a0d9a62d70ae0d4c940b2a72
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114446
Reviewed-by: Dan Rubel <danrubel@google.com >
2019-08-26 12:20:21 +00:00
Paul Berry
75b4090c35
Migration: integrate flow analysis for throw and rethrow.
...
Change-Id: I7a196396b09df95d4275ad019d684850a84f94be
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114442
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-23 21:30:24 +00:00
Paul Berry
6199ac949f
Migration: post-dominator logic for catch clauses.
...
Change-Id: I9e3413924888d3eea7c7ece6c7b8514982c25c7e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114441
Reviewed-by: Mike Fairhurst <mfairhurst@google.com >
2019-08-23 21:30:24 +00:00
Mike Fairhurst
2cadb9d184
[nnbd_migration] Handle untyped list literal expressions.
...
Change-Id: I09f112b0c67118e641e036a108685bd5681d918c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114421
Reviewed-by: Paul Berry <paulberry@google.com >
Commit-Queue: Mike Fairhurst <mfairhurst@google.com >
2019-08-23 20:06:01 +00:00
Paul Berry
33e03fe65f
Migration: node builder support for uses of typedefs.
...
Change-Id: Ib8222f68b9f57672ad1037bc246a0c5c17a721c1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114344
Reviewed-by: Dan Rubel <danrubel@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-23 16:20:48 +00:00
Paul Berry
07a6b19eaa
Migration: integrate flow analysis of for-loops.
...
Change-Id: I1b17f9d6d06d17d7f9be08226d41ae79f17dc6b7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114343
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-23 16:19:49 +00:00
Paul Berry
83458092ef
Migration: add support for inferred types that are generic function types.
...
Change-Id: I36bbc43b8c070f65eb06063ed02ea733489f4cf9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114049
Reviewed-by: Dan Rubel <danrubel@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-22 12:39:12 +00:00
Paul Berry
eee596363b
Migration: decouple DecoratedType from PotentialModification.
...
Previously we had a single class, DecoratedTypeAnnotation, which
coupled together DecoratedType and PotentialModification, allowing one
object to serve both roles. But this won't work for typedef
instantiations, because they will need to be associated with a
potential modification, but they will be created using the shared
infrastructure for inferred types (which just creates a plain
DecoratedType). The solution is to decouple the two roles into two
separate objects.
Change-Id: Idf518def87d950d013e958f13dd94f23803f7113
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114046
Reviewed-by: Dan Rubel <danrubel@google.com >
2019-08-22 12:39:12 +00:00
Paul Berry
1279641cdd
Migration: integrate for-each loops with flow analysis.
...
Change-Id: I360906d9ed4c4bb3a1475323b4ca6b44dc6f90cf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114000
Commit-Queue: Paul Berry <paulberry@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-21 22:18:24 +00:00
Paul Berry
51cd16ecf0
Flow analysis: support for and for-in elements in collections.
...
Change-Id: Ia73c68c2b8a57c62ce2b4984184cf8a712b554af
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113944
Commit-Queue: Paul Berry <paulberry@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Phil Quitslund <pquitslund@google.com >
2019-08-21 21:57:54 +00:00
Paul Berry
b569bf048e
Migration: node builder support for new-style typedefs.
...
Change-Id: Idc0fa7523cca7a49d833b5e97a7712021fcae6f9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113949
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-21 20:35:43 +00:00
Paul Berry
0323fb97bc
Migration: support Function() syntax with type formal parameters.
...
Change-Id: Ib1ab632eb4546d1bd8b71493b7d72f299244fb4e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113945
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-21 16:06:11 +00:00
Paul Berry
d252efaa49
Migration: node builder support for old-style typedefs
...
Change-Id: I39fa3415d10993c0eff4ec12ad148a9f9772bebb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113943
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-21 15:01:59 +00:00
Paul Berry
3fe9ba152f
Migration: implement Variables._decorateDirectSupertypes.
...
Change-Id: I0e35bf57628bcb72525577e646d6c5de168712bd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113844
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-20 20:42:09 +00:00
Mike Fairhurst
3865187956
[nnbd_migration] already-migrated types with 1:1 type args & params.
...
Support creating decorated types for already migrated interface types
that have type arguments, so far as those type arguments equal in number
to the interface type's type parameters. This includes basic cases like
List<int>, which is tested as an api_test.
Reduces AlreadyMigratedCodeDecorator.decorate exceptions from 915 to
538.
Change-Id: Ic82d7fb598db964bfc2ca37898795f124796eba8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113750
Commit-Queue: Mike Fairhurst <mfairhurst@google.com >
Auto-Submit: Mike Fairhurst <mfairhurst@google.com >
Reviewed-by: Paul Berry <paulberry@google.com >
2019-08-20 17:48:40 +00:00
Paul Berry
e34c4319dc
Migration: property decorate implicit bottom types.
...
Change-Id: I5af76bbfb888ce25642cf61e590862b1b471d4b3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113841
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-20 15:20:00 +00:00
Paul Berry
c6e2497569
Migration: capture more exception information and make it easier to examine stack traces.
...
Change-Id: If509121fcf2b1f9b9e0a7bf722945241b90c647b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113840
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-20 15:20:00 +00:00
Paul Berry
0681cc2d36
Migration: extract a common method for doing null checks.
...
Change-Id: I7864d93a7208357075583263c471f4faf20231ec
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113270
Reviewed-by: Mike Fairhurst <mfairhurst@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-19 15:49:43 +00:00
Paul Berry
203038ffc6
Migration: integrate flow analysis of do and continue statements.
...
Change-Id: I5f245046806d58b1eb850ee0b4f89dd16251bcee
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113268
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-19 15:49:43 +00:00
Mike Fairhurst
7c3ea0af6a
Handle non-null iterable types in for ins
...
Change-Id: Ibc8332c70663d90fbb47a27f68d3ac28adce5a69
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113420
Reviewed-by: Paul Berry <paulberry@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Mike Fairhurst <mfairhurst@google.com >
2019-08-16 20:51:41 +00:00
Paul Berry
f62531fe9e
Migration: integrate flow analysis of while loops and break statements.
...
Support for continue statements is deferred until later, because
continue statements don't have much effect on flow analysis of while
loops.
Change-Id: I8bea5ab7669e14a70b631efbdcc3d268c965aa3d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113387
Reviewed-by: Mike Fairhurst <mfairhurst@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-16 20:26:10 +00:00
Paul Berry
e08902e476
Migration: integrate conditional expression handling with flow analysis.
...
Change-Id: I33c0975038caaef0c97216879c1a0d46bc55b1d4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113384
Reviewed-by: Mike Fairhurst <mfairhurst@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-16 20:26:10 +00:00
Paul Berry
eb066376c4
Migration: hook up flow analysis for boolean literals
...
Change-Id: Ic23045615fa8dc505856db40d75f6b71849d4e61
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113363
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-16 17:41:10 +00:00
Paul Berry
4938e4564c
Migration: add support for local functions and function expressions.
...
Change-Id: Icf089c40f219503b42aea744f043249f672b2ed6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113240
Commit-Queue: Paul Berry <paulberry@google.com >
Reviewed-by: Mike Fairhurst <mfairhurst@google.com >
2019-08-16 14:12:17 +00:00
Mike Fairhurst
2d9246000f
[nnbd_migration] handle for elements, for loop conditions
...
Change-Id: I951d0aa4fa08e137655a6257e648530cb92b700b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113300
Reviewed-by: Paul Berry <paulberry@google.com >
Commit-Queue: Mike Fairhurst <mfairhurst@google.com >
2019-08-16 09:45:07 +00:00
Paul Berry
1abeb44105
Migration: use _nonNullableBoolType when possible
...
Change-Id: Ib87c949d5430a6e74292c4639dbbef49fda80e97
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113213
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-15 21:13:07 +00:00
Paul Berry
8e5556e158
Migration: remove the enclosingNode parameter of NodeBuilder._handleExecutableDeclaration
...
It is no longer used.
Change-Id: I2ae21ebc427e77842a1d341be034c2e1bfe0eb82
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113211
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-15 21:02:42 +00:00
Paul Berry
5498d4cf20
Migration: integrate assignments with flow analysis.
...
Change-Id: Icf5605a1dee354f8cbc58ecb645c1921fe5169c5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113210
Commit-Queue: Paul Berry <paulberry@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
2019-08-15 20:41:22 +00:00
Paul Berry
634711ff23
Migration: rework handling of expressions of the form a?.b += c.
...
Previously we just had to store a single node representing the
nullability of a, since we knew we would visit `a?.b` just before
finishing up the handling of `a?.b += c`. However, in a follow-up CL
we're going to have to change the visit order so that `a?.b` is
visited, then `c`, then `a?.b += c` can be finished up. So we need a
map to store the association between expressions like `a?.b` and the
nullabilities of the corresponding `a`'s.
Change-Id: Ib46769e26dc63d7dc3546bddbab0d5a702a1e0a8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113208
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-15 19:49:16 +00:00
Paul Berry
59684dab81
Migration: ensure that all local variables are registered with flow analysis.
...
Change-Id: Ie1d57373801f56ca535b25b3f0b85e8d02935892
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113202
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
2019-08-15 17:07:40 +00:00
Paul Berry
b3aedc8a60
Migration: ensure that flow analysis is set up properly for additional constructs.
...
Previously we only set it up for top level function declarations and
executables inside classes. Now we set it up for fields and top level
variables as well.
Change-Id: I8e40d6bb8403c2fdd259fb539403593f63ca9a18
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113201
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-15 17:07:40 +00:00
Paul Berry
60b9b7096a
Migration: add test infrastructure to verify that visitors don't miss annotation nodes.
...
This required some refactoring of the logic for supporting "permissive
mode".
Change-Id: I946773d9850a84234fb3ecf5581f2429fd9590b7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113200
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-15 17:07:40 +00:00
Paul Berry
bdf433defd
Migration: hook up flow analysis for && and || expressions.
...
Change-Id: I2fa2806d822abf3e6c51247dbfa9d048d86e858e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113128
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-15 13:34:30 +00:00
Paul Berry
12b66ceb9d
Migration: begin hooking up flow analysis.
...
Currently flow analysis is only hooked up for a minimal set of visit
methods that is sufficient to test the basic functionality:
- visitBinaryExpression (currently only handles `== null` and `!= null`)
- visitFunctionDeclaration
- visitIfStatement
- visitReturnStatement
- visitSimpleIdentifier
It will be hooked up to more visit methods in follow-up CLs.
Change-Id: Ifb9be84b99d370dcd2544f29a9b088a8ff0f47b0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113047
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-14 20:05:52 +00:00
Paul Berry
14825ebaf7
Remove defensive coding around type arguments of Future/FutureOr.
...
These types always have a type argument (possibly dynamic).
Change-Id: I5c8ccc9f6b4e48b4f15415d1d59b8f03d09ad92a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113046
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-14 19:08:01 +00:00
Paul Berry
70e31c18a8
Migration: add tests for AlreadyMigratedCodeDecorator.
...
Change-Id: I60c582affb5c08b88221d7aa73c73b7a85e1f603
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113040
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-14 13:36:43 +00:00
Mike Fairhurst
39c74d30a1
[nnbd_migration] more postdominator feedback: postdominating locals lists
...
Change-Id: Ib00a238f09fdc247e05b3754403d60db86e1ffbc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112682
Reviewed-by: Paul Berry <paulberry@google.com >
Commit-Queue: Mike Fairhurst <mfairhurst@google.com >
2019-08-13 17:00:55 +00:00
Paul Berry
59b640ede4
Migration: introduce operator== for decorated types.
...
This is needed for integrating flow analysis with the migration
engine, since flow analysis requires the ability to compare types for
equality.
Change-Id: I7f739d8a47a79d5a8027936cc6dbfbd90dd541e6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112848
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-13 16:49:14 +00:00
Paul Berry
a5772382dc
Migration: refactor infrastructure for testing decorated types.
...
I have a lot more testing of decorated types to land in follow-up CLs;
this CL introduces a mixin containing helper methods that should make
that testing a lot easier.
Change-Id: I29c17ffb4af65498fcd85704dc404343429e09ad
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112847
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-13 16:49:14 +00:00
Mike Fairhurst
998deea338
[nnbd_migration] Handle while loops.
...
Change-Id: I64fe98087cc5da0a97056f0fa96fffbe9f06326f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112406
Auto-Submit: Mike Fairhurst <mfairhurst@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
Reviewed-by: Paul Berry <paulberry@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-12 22:20:23 +00:00
Mike Fairhurst
5d2c17d729
[nnbd_migration] Handle if elements in lists.
...
Change-Id: Ia892668cc31db2453e24778067b7b2c857813482
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112644
Reviewed-by: Paul Berry <paulberry@google.com >
Commit-Queue: Mike Fairhurst <mfairhurst@google.com >
2019-08-12 20:24:20 +00:00
Mike Fairhurst
c5365106c3
[nnbd_migration] polish previous postdominator code
...
Change-Id: Ic99389d331dfa9495c57c16f166610c7149e7fb9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112648
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Paul Berry <paulberry@google.com >
Commit-Queue: Mike Fairhurst <mfairhurst@google.com >
2019-08-12 20:20:10 +00:00
Paul Berry
32e27f68dc
Migration: Add the ability to use null for nullability nodes in substitutions.
...
A nullability node of `null` will be discarded during a substitution.
For instance, attempting to substitute `T=int?null` into `T?1` will
produce `int?1`, rather than `int?2` where `2` is a substitution node.
We will need this functionality in order to compare function types for
equality, which is in turn needed to integrate with flow analysis.
Change-Id: Ife5e3761b083d4584b2aff760dcb104529e7f9d4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112745
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-12 19:05:00 +00:00
Paul Berry
1f7e6370b4
Migration: store decorated type parameter bounds separately from other element decorated types.
...
We will need some special treatment for decorated type parameter
bounds, because sometimes we will need to create type parameters
(e.g. when comparing decorated types). So we store the bounds of
non-ephemeral type parameters (the ones whose enclosing element is
non-null) in the Variables data structure, and we store the bounds of
ephemeral type parameters (the ones whose enclosing element is null)
in an expando.
Change-Id: I918c9baffedab9a8871ecea37c8101b5ef44a5d9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112743
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-12 17:56:45 +00:00
Paul Berry
92562dc5a5
Fix hints in nnbd_migration package.
...
Change-Id: Ib368a301e6dffd92e1697f4a23644fcf0e3ae38b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112741
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-12 17:01:06 +00:00
Paul Berry
f74b0ccfb8
Extract logic from DecoratedType.forElement into a new class, AlreadyMigratedCodeDecorator.
...
I plan to add unit tests for AlreadyMigratedCodeDecorator in a
follow-up CL (I can't add them now because I need to refactor some of
the unit tests to avoid code duplication, and that refactoring depends
on this CL).
Change-Id: Id137f7b003df33306d894fc8771963173757bf45
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112580
Commit-Queue: Paul Berry <paulberry@google.com >
Reviewed-by: Mike Fairhurst <mfairhurst@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-09 20:54:06 +00:00
Paul Berry
621b96f97b
Migration: begin adding infrastructure for reporting unsatisfiable substitutions.
...
Change-Id: I290da86cfdae3d6cfa83032999eaba17a65acd14
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112044
Reviewed-by: Mike Fairhurst <mfairhurst@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-09 14:07:42 +00:00
Mike Fairhurst
e627d8b852
[nnbd_migration] use postdominators to do hard edge detection in most cases
...
Change-Id: I6af934b4a4795a0cfd74519985b24ae171485880
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/111941
Reviewed-by: Paul Berry <paulberry@google.com >
Commit-Queue: Mike Fairhurst <mfairhurst@google.com >
2019-08-09 07:12:00 +00:00