Commit Graph

788 Commits

Author SHA1 Message Date
danrubel 86ce74caaa update NodeBuilder for default value type arguments
This updates NodeBuilder to build nodes for type arguments
in default parameter values.

Change-Id: I8999bdfca9a60d9e1d3feff5cdbd1cdc62cdb4fd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/108120
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-07-03 17:52:41 +00:00
danrubel 9b53686ffb update NodeBuilder for declared identifier implicit type
This updates NodeBuilder to handle for loops of the form

  for (var i in <int>[1, 2, 3]) ...

Change-Id: If796379ff4c95df1e2e5087ca71d3d4cac5c0853
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/108040
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2019-07-03 12:39:27 +00:00
danrubel 851958ee54 update NodeBuilder to handle for loop
This updates NodeBUilder to build a node for the identifier in

  for (int i in <int>[1, 2, 3]) ...

Change-Id: Ifcb90f7b1511dc29ecedceb043986f6705bdbe1c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107980
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2019-07-02 23:40:43 +00:00
danrubel 7a73682c6a update NodeBuilder to handle catch clause
This updates NodeBuilder to create a node for the exception parameter
in a catch clause. Not doing so creates an exception downstream
in the EdgeBuilder.

Change-Id: Idaf0ab62e47018a634ff028af0e3af1d504c02ba
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107923
Reviewed-by: Paul Berry <paulberry@google.com>
2019-07-02 23:40:43 +00:00
danrubel e0eeffaf9b update NodeBuilder parameter tracking when visiting executable declarations
This updates NodeBuilder so that when it visits a method declaration,
it does not count any parameters defined in body statements
as part of the parameters defined in the method signature.

Change-Id: I4da3989eb2bc65c422d94fa264885910850b0ed2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107921
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-07-02 17:39:33 +00:00
Paul Berry f4dc001729 Migration: begin adding support for LUB computations in conditional expressions.
A number of corner cases still need to be addressed, and I need to
generalize the logic to work for `??` expressions.

Change-Id: I6998058698c8b293f7d7b99f3c231a9173b9ff58
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107901
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-07-02 16:12:07 +00:00
Paul Berry fc7049ae7d Migration: implement support for user-definable prefix expressions.
Change-Id: Ie2316625d8ed6fd9ab3aee3b592ce5b82b0cb1e8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107750
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-07-02 10:23:21 +00:00
Paul Berry 77aa5f0c02 Migration: Add support for function-typed formal parameters.
Change-Id: Iae4ba1c052e854bc832fdba7a2e2f53635d5033d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107749
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-07-02 10:23:21 +00:00
Paul Berry 326e970b81 Migration: handle method invocations that resolve to a getter.
Change-Id: I9a41190d883ee50a63d8cd60699da14084da09d7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107748
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-07-02 07:41:45 +00:00
danrubel 2fd4ca570b set DecoratedType.returnType for FunctionType
This CL updates creation of DecoratedType to ensure that the return type
is set if the DecoratedType's type is FunctionType.

Change-Id: I9fd031693f5fd07ea5f0e6e16723b7c9659410ca
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107702
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-07-01 19:49:49 +00:00
Paul Berry 0c6b3d1277 Migration: do better function type formatting in DecoratedType.toString.
We now wrap named argument types in `{}` and optional positional
argument types in `[]`.

A few unit tests have been added to verify this functionality; I
didn't exhaustively test the implementation of DecoratedType though.

Change-Id: I1e3135adc3abc966f8a41d90c1c6e95e9c7c1eda
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107747
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-07-01 15:36:14 +00:00
Paul Berry 79f276e07d Migration: handle field formal parameters.
Change-Id: I15fb64a2cb7ed9bc56593fc8b27170aaa34af8a5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107743
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-06-30 16:39:17 +00:00
Paul Berry c8c3572ca9 Migration: standardize method names in EdgeBuilderTest.
Two methods had names beginning with "visit", to reflect the name of
the visitor method they tested.  But this was inconsistent with the
rest of the methods in EdgeBuilderTest, which are simply named after
the structure whose visitor method they test.

Change-Id: I4616eeff959f4ef84fc8a5da3263ab9c88d8fba2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107742
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-06-30 16:39:17 +00:00
Paul Berry b57ff85906 Migration: clean up and test implicit dynamic return type of Function() syntax.
Change-Id: I6a010f5aa32cee4ece094188992ba472444293c3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107519
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-06-30 16:39:17 +00:00
Paul Berry 0f2eda8644 Migration: add support for function expression invocations.
Change-Id: Icf92c81f677421b00f023c02ce784122dd570e87
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107518
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-06-30 16:39:17 +00:00
Paul Berry a200980da0 Migration: add support for variable and field type inference.
Change-Id: Iae66992d4f9734438776af34b68aabf20f5c15d0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107517
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-06-30 16:39:17 +00:00
Paul Berry ca25f56883 Migration: add support for type inference of function types.
Change-Id: Ic0ebbc4d412e7273127564089431ebe9058ee790
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107516
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-06-30 16:39:17 +00:00
Paul Berry b60dcdbf73 Migration: Remove the create parameter from Variables.decoratedElementType.
We can tell whether a decorated type needs to be created based on
whether the library is being migrated.

Change-Id: I440c9a310ad103c800de6409d717492bc539b838
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107660
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-06-30 10:43:45 +00:00
Paul Berry 18c21ee9d1 Migration: add support for generic instance creation.
Change-Id: I46d24159a58b7e889cdfa54a9dbb8a94b6c13410
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107645
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-06-30 10:43:45 +00:00
Paul Berry f7ddfdf6ca Migration: don't forget to visit variable initializers in NodeBuilder.
Also visit any annotations present in a variable declaration (we can't
yet test this part well but we might as well add the proper code now).

Change-Id: I1c8f19c9516d1e0f17f024fa136bd7d331ed8ae1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107643
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-06-30 10:43:45 +00:00
Paul Berry 881ca948fd Migration: handle constructor redirections.
Change-Id: I1c74768f94956f830621e238780243c8d974a745
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107641
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
2019-06-28 17:45:29 +00:00
Paul Berry a5070b88de Migration: Remove unused variables from test.
Change-Id: Id052dea7d4f1c464fd57c9482ee8f37cec4e014b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107640
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-06-28 14:09:55 +00:00
Paul Berry bf79e4604c Migration: Add support for synthetic constructors in generic class type aliases.
Change-Id: I8eee88e4dd607623fe109143d01438a5271b3230
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107521
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-06-27 19:34:05 +00:00
Paul Berry 9329d9da59 Migration: Make use of findElement.unnamedConstructor in tests
Change-Id: I2ce903de379b6c6fa1cb5ac7db80e6702bdf37c8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107457
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-06-27 14:47:43 +00:00
Paul Berry 014cca1abd Migration: add support for invocation of generic functions.
Change-Id: I56dbedad452e24aaf57ec1d622ce776089e28de7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107449
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-06-27 02:29:51 +00:00
Paul Berry c1c24c2e19 Migration: Enable support for factory constructors.
It turns out that we don't need any special support for factory
constructors; the migration engine already knows that their return
type should be non-nullable, and it propagates that non-nullability
properly backward from return statements.  So we just need to remove
the error handling logic that prevented factory constructors from
being used.

Change-Id: I7875750fd603ecb2fb65f3831a7883a2d4c9a11a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107380
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-06-26 18:18:46 +00:00
Paul Berry dde0c68dfb Migration: Add support for named constructors.
Change-Id: Ibb1b5daf8ae06a84f3eaf1e70ce703266de4b04c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107361
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-06-26 18:18:46 +00:00
Paul Berry 0db6f216ba Migration: add void type support to DecoratedType.forImplicitType.
Change-Id: Ifae57627d13a4913d86ab8a4789615a23ec66c1c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107441
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-06-26 18:04:46 +00:00
Paul Berry 74071981d7 Migration: Handle contravariant uses of already-migrated classes.
Change-Id: I1ce1adc1975461010ce993ba31ac74856033351e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107320
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-06-26 17:23:56 +00:00
Paul Berry 9ec7b3ebea Migration: add the ability to union decorated function types.
Change-Id: Ife92ab951ee0a60edea12c0d1fe4f242135a8ae3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107440
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-06-26 16:40:36 +00:00
Paul Berry 4c75f452fa Fix a misleading variable name in node_builder_test.dart
Change-Id: If9802562c362efe8d43b30c822211de3a49cca8f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107420
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-06-26 16:40:36 +00:00
Paul Berry 40609fc30e Migration: build decorated types for implicit constructors of class type aliases (with parameters).
Change-Id: I3ff55830e07cba115db7784998b013112d4d07b0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107304
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-06-25 22:13:44 +00:00
Brian Wilkerson 29c0341678 Skip library directives when building edges
Change-Id: I43602f5cfc7455e83b408ccb7ee8adfba0e26d64
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107194
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Auto-Submit: Brian Wilkerson <brianwilkerson@google.com>
2019-06-24 22:21:21 +00:00
Paul Berry fa5b04d718 Migration: build decorated types for implicit constructors of class type aliases (partial).
This CL addresses implicit constructors without parameters.  Implicit
constructors with parameters will take a bit more work to accomplish,
and will be handled in a follow-up CL.

Change-Id: Id12725712198eeeff8e4080e8fa0ca2a1eb46177
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107187
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-06-24 21:20:30 +00:00
Paul Berry 2ac79599b0 Migration: Created decorated types for synthetic default constructors of generic classes.
Fixes #37347.

Change-Id: I8eb7ca910f62aa7f10efbad3048096118cfcb4c8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107185
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-06-24 21:20:30 +00:00
Paul Berry c4ad3c30e8 Migration: Created decorated types for synthetic default constructors of non-generic classes.
Partially addresses #37347.

I'll address generic classes in a follow-up CL.

Change-Id: I207465c897f9dfb84848d792cba15ae96c95e394
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107183
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-06-24 20:45:04 +00:00
Paul Berry dac4929e19 Migration: propagate nullability inference through override relationships: parameter types.
Change-Id: Ib41ffa388af9688efc59aea2c196d8fdcf713ad8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107101
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
2019-06-24 12:51:14 +00:00
Paul Berry 559e49aa5e Migration: propagate nullability inference through override relationships: return types.
Parameter types will be handled in a follow-up CL.

Change-Id: I71862fa6cf27aeede24bef60c096f631f6d8f60d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107100
Reviewed-by: Dan Rubel <danrubel@google.com>
2019-06-24 12:51:14 +00:00
Paul Berry 8b523e8efb Migration: rename GraphBuilder to EdgeBuilder.
Nomenclature is more consistent now; the graph is built by a
combination of NodeBuilder (which builds the nodes) and EdgeBuilder
(which builds the edges).

Change-Id: Id162467eab2b3b3cc17ea9f72a0f291665b1a7d9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107022
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-06-22 16:03:02 +00:00
Paul Berry 477ac2d58e Migration: start adding support for assignment of function types.
So far we only handle zero-parameter non-generic functions.  Support
for positional parameters, named parameters, and type parameters will
be added in future CLs.

Change-Id: I5a5907ba595da40352193e0193f908bca4d1bf1c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106040
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-06-21 22:59:41 +00:00
Brian Wilkerson 718ab662c0 Support postfix ++ and -- operators
Change-Id: Ib16f30a8b5d6e94b1a6ec0cddf5c88f58188ea83
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107021
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-06-21 22:43:42 +00:00
Paul Berry e2bc5513f0 Migration: add a data structure for tracking class hierarchy information.
The new data structure, called `DecoratedClassHierarchy`, computes and
caches the variable substitutions necessary to relate a class to one
of its superclasses.  In future CLs, we'll use this information to
create the appropriate contraints for override relationships, and to
compute the correct types when a method dispatch resolves to a method
declared in a superclass.

Note that the analyzer uses `InhertanceManager2` both to determine
what a method call resolves to and to record the appropriate
substitutions.  We can take advantage of its determination of what a
method call resolves to (that information is stored in the resolved
AST), but we need to cmopute the substitutions separately because the
substitutions need to be decorated with nullability nodes.

Change-Id: Ifb334972e509b77151d41f7e0700cd590d7b5417
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106800
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
2019-06-21 22:42:01 +00:00
Brian Wilkerson 7a57e241a3 Support prefix ++ and -- operators
Change-Id: I2437469ad67721736a6b4800f0134e0f358a7dbf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106970
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-06-21 20:48:58 +00:00
Brian Wilkerson c01258a87d Fix handling of &&, || and ?? operators
Change-Id: Ibfe574f381af701932cf30f5fdd77fe50a7c8158
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106961
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-06-21 18:45:27 +00:00
Dan Rubel d0a22c747e add migration engine support for top level setters
Change-Id: I436e673370ed0094b0615d99796f117145c8fbaf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106923
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-06-21 16:50:17 +00:00
Dan Rubel 6089a943be add migration engine support for imported top level var references
In addition to adding imported top level var references support,
this revert GraphBuilder._checkAssignment changes so that the method
conforms to team expectations and addresses comments in
https://dart-review.googlesource.com/c/sdk/+/106562

Change-Id: I3e2b021ec51a1363706a7f6811807d0e6a680df5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106920
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-06-21 16:50:17 +00:00
Dan Rubel 9c62632f49 add migration engine sanity check
This adds a sanity check to ensure that DecorateType.forElement
is not called on elements in libraries that are being migrated.

Change-Id: I394004a70e9ca3c9ac22f30e63e8e48a0cd03204
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106922
Reviewed-by: Paul Berry <paulberry@google.com>
2019-06-21 16:50:17 +00:00
Brian Wilkerson 735eb21529 Add support for &&, || and ?? operators
Change-Id: Ibb6269b349b3d0ffcf1068442c70ef46a6f521eb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106948
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-06-21 14:16:57 +00:00
Dan Rubel 3707cf0c1b add migration engine support for top level var reference
Change-Id: I77039243bc098449e4af976d2500c4d28f9f4012
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106562
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-06-20 15:18:40 +00:00
Dan Rubel cf78d5d7f0 add migration engine support for named parameters in imported packages
This adds support for decorating named parameters in packages
that are imported by the package being migrated.

Change-Id: I1f803b28ad8fedcedca14421b391dc7ab879d05f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106682
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-06-19 21:07:11 +00:00