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
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
a3b3dc00ca
Migration: recategorize some tests.
...
These tests were accidentally moved into
edge_builder_flow_analysis_test.dart, but they don't test flow
analysis. Moving them back to edge_builder_test.dart.
Change-Id: I701b8785d43c7ddb50b16ad25bd4061057638ed8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113362
Reviewed-by: Brian Wilkerson <brianwilkerson@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
Mike Fairhurst
2c4fed3839
[nnbd_migration] Remove additional while loop TODOs
...
Change-Id: I6c31fb6186b3bb274c08b6a4ccbae46b22599537
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113301
Commit-Queue: Paul Berry <paulberry@google.com >
Auto-Submit: Mike Fairhurst <mfairhurst@google.com >
Reviewed-by: Paul Berry <paulberry@google.com >
2019-08-16 09:41:27 +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
3f5f9831d8
Migration: move edge builder flow analysis tests to their own file.
...
Change-Id: I984cfe6a041753cdefefaa2ad12cfaf00e120b6c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113220
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Paul Berry <paulberry@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
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
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
9ed7471aaf
[nnbd_migration] Add api test for how we don't plan to handle postdominators of cfg edits
...
Change-Id: I8588297a42584a474508a61c4fb83268da7ab615
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112757
Commit-Queue: Mike Fairhurst <mfairhurst@google.com >
Reviewed-by: Paul Berry <paulberry@google.com >
2019-08-13 00:35:53 +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
Mike Fairhurst
26592626c6
[nnbd_migration] Remove TODO now that do-while is more supported
...
Change-Id: Idfaa290290954d6b4bdf131a26f760b85c7e4312
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112649
Reviewed-by: Paul Berry <paulberry@google.com >
Commit-Queue: Mike Fairhurst <mfairhurst@google.com >
2019-08-12 20:16:15 +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
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
Mike Fairhurst
689388525c
[nnbd_migration] Handle do while
...
Change-Id: I97071b6b59c9450fddcf7f3ea2da19c99bff4682
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112407
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Paul Berry <paulberry@google.com >
Commit-Queue: Mike Fairhurst <mfairhurst@google.com >
2019-08-08 21:46:02 +00:00
Brian Wilkerson
c565fbf9d6
Fix a couple of hints in the nnbd migrator
...
Change-Id: Iaa2442432fe300fd116224a2c2d75e9d76d4e1e2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112260
Reviewed-by: Paul Berry <paulberry@google.com >
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
2019-08-07 19:27:54 +00:00
Paul Berry
83ab0a5ea9
Migration: handle an assignment from a type parameter's bound to its type.
...
Change-Id: Iceda253691735fa3b8104f76f14b596aa4bd621a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112145
Reviewed-by: Dan Rubel <danrubel@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-07 15:15:00 +00:00
Paul Berry
6103ecd6f1
Migration: add support for nullability propagation through implicit downcasts.
...
We don't yet translate implicit downcasts into explicit ones; that
will be added in a future CL.
Change-Id: If601a0ab185707864094d5da3f898cecf7171054
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112163
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-06 22:03:37 +00:00
Paul Berry
9139de8b88
Migration: handle an assignment from a type parameter type to its bound.
...
Change-Id: I1a022030a4991be6ca2ae70592ec2d60d254baf3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112162
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-06 22:03:37 +00:00
Paul Berry
595f5c9b3e
Migration: add support to EdgeBuilder for assignment of complex generic types.
...
Change-Id: Ia1a754c0174b71dfeb420309324307b391e3eb4e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112160
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-06 22:03:37 +00:00
Paul Berry
2a7a9b5572
Migration: don't make hard edges for function parameter and return types.
...
I don't see a clear justification for using hard edges here, so I'd
rather err on the side of caution and wait to see if a need arises
when we start trying to do trial migrations.
Change-Id: Id72c3a08827adfcfa92aedeb80d5304879822147
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112141
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-06 22:03:37 +00:00
Paul Berry
bcb9d1582a
Migration: Move EdgeBuilder._checkAssignment to a mixin so it can be unit tested.
...
Change-Id: Iad865fac809b872c8dbd5b40f21e8dde2f3f0aa8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112140
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-06 22:03:37 +00:00
Paul Berry
a2d0f6bd74
Migration: fix DecoratedType.toString for bottom types.
...
Change-Id: I0cce10ddbfefc80ddb94a703a4086847f5fac891
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112048
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2019-08-06 22:03:37 +00:00
Paul Berry
8248e9edb2
Migration: fix DecoratedType.toString for generic interface types.
...
Change-Id: Ic882ea84cdb6bbe80802a4d29d07edc78ac362d8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112045
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-06 19:24:19 +00:00
Mike Fairhurst
c0f23ce8bc
[nnbd_migration] fix kind -> description, drop empty, tests
...
Change-Id: I7224167ae26344336f665827b145c57319076d73
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/111382
Reviewed-by: Dan Rubel <danrubel@google.com >
Reviewed-by: Paul Berry <paulberry@google.com >
2019-08-02 07:35:41 +00:00
Paul Berry
7582d344d6
Migration: handle assignment of null to generic type.
...
Change-Id: I439095cf3d3abb3e780084561e4fc620d47ad492
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/111660
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-08-01 16:08:23 +00:00
Paul Berry
776f2d34e9
Migration: implement "exact nullability" propagation.
...
This allows us to properly handle contraviariant uses of generics,
where the nullability of a generic parameter needs to be propagated in
the reverse of the usual dependency direction.
Change-Id: Id31f906bb7e3fbbf0846144a4715b9a6591aceda
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/111303
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-07-31 03:56:28 +00:00
Paul Berry
8c699b96e5
Migration: fix some erroneous comments in nullability node test.
...
These comments were copy/pasted from other tests and weren't properly
updated.
Change-Id: Ib1a0279184bb8dbaeb3601676d24301728a812a8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/111302
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-07-30 18:13:30 +00:00
Paul Berry
e147c3e0c8
Migration: ensure that NodeBuilder visits executable metadata and constructor initializers.
...
Change-Id: I9969e9f35f89a91890f9ef15d6505df5c36c1b0a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/111181
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-07-30 12:43:37 +00:00
Paul Berry
db16503080
Migration: test generic field initializers
...
These already work, but we want to make sure they don't regress.
Change-Id: I7b67b2e105e0de6be9db5cac66c0278d03ccb3bd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/111143
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
2019-07-30 12:43:37 +00:00
Paul Berry
60029e19fa
Migration: add support for constructor field initializers.
...
Change-Id: I69642d52a0ff996c73806731d4ed4d3df260efbc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/111001
Reviewed-by: Mike Fairhurst <mfairhurst@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-07-29 20:10:03 +00:00
Paul Berry
436a505e00
Migration: fix handling of constructors that redirect to the unnamed constructor.
...
Change-Id: I08786c9f209a93d71c877cdf9552de7f854e9883
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/111080
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2019-07-29 18:17:33 +00:00
danrubel
766e542e53
handle return in async function
...
This updates EdgeBuilder to handle return statements in async functions
when the return value is not a Future...
Future<int> f() async { return 1; }
Change-Id: Icc2a375546d01592c99ababb9652ce8108ae7dd6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/108181
Commit-Queue: Dan Rubel <danrubel@google.com >
Reviewed-by: Paul Berry <paulberry@google.com >
2019-07-03 20:14:37 +00:00