Commit Graph

788 Commits

Author SHA1 Message Date
Paul Berry 30fcb067e0 Rework how migration_cli_test tests the preview server.
This mechanism is simpler, and it has the advantage that if the
preview server fails to start for some reason, we get a useful failure
message rather than a timeout.

Change-Id: I6ead899b3af02431c2a022fa104c6596ff952917
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/145142
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-04-29 16:20:44 +00:00
Paul Berry 8d79c1f470 Migration: allow assignment to de-promote local variables.
Fixes #41411.

Bug: https://github.com/dart-lang/sdk/issues/41411
Change-Id: Ia88216e3327f42ee1d93143afb2a66839cf05a2b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144161
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-04-28 13:54:28 +00:00
Paul Berry c80ff5f5f7 Migration: nicer text for command-line option errors
Previously we just printed the result of calling Exception.toString(),
so the exception class name appeared in the output.

Change-Id: I789d4e5524cd8614d688252644b80898fd2cda17
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144882
Reviewed-by: Janice Collins <jcollins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-04-27 16:33:23 +00:00
Paul Berry cbdfc7f7ba Migration: add --apply-changes support to new CLI
Change-Id: I803747d09501be4cfa982ae6b3449e84d5752e3c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144881
Reviewed-by: Janice Collins <jcollins@google.com>
2020-04-27 16:33:23 +00:00
Paul Berry b2773e38da Migration: add --no-web-preview support to new CLI
Change-Id: I2fe106ab2a48cdba610990b747ae3b9e1ef1d086
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144861
Reviewed-by: Janice Collins <jcollins@google.com>
2020-04-27 16:33:23 +00:00
Paul Berry 62d05eb515 Migration: stop stubbing out Ansi class for testing.
Simply constructing `Ansi(false)` is sufficient.

Change-Id: Ie1af719962b4003afee338b274c75e50124c62a7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144784
Reviewed-by: Janice Collins <jcollins@google.com>
2020-04-27 16:33:23 +00:00
Paul Berry 8d188a1a9f Migration: begin implementing CLI for the migration tool outside analysis server.
This will allow us to publish the migration tool on pub, so that we
can ship improvements to it that aren't coupled to SDK releases.

As of this CL, basic read-only functionality of the preview site is
working.  However, the ability to apply migrations and add hints to
existing code has not yet been tested.

Change-Id: Ib1588e741efa7be7861fa75b962fd1565765e794
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144808
Reviewed-by: Janice Collins <jcollins@google.com>
2020-04-27 16:33:23 +00:00
Paul Berry eab774c255 Move much of migration tool UI code into pkg/nnbd_migration
Change-Id: Ia3b388b274c908dcc6f9cb9ee4bf004b82681c43
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144320
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-04-23 23:43:42 +00:00
Sam Rawlins 29bc716241 Migrator: Add a late inference component
Fixes #38747

Change-Id: I045a6481424c75828eb7ae1e71c890b10e9d402c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144244
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2020-04-21 23:54:54 +00:00
Paul Berry 52b04b3d28 Migration: code inside a switch statement should not imply non-null intent.
Fixes #41407.

Change-Id: Iec9a520bbbab6f55da569ecc863d92674c351207
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144160
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-04-20 19:09:32 +00:00
Paul Berry 4c8da7543e Migration: handle field formal parameters properly in FixBuilder.
Previously, all parameters returned by
MigrationResolutionHooksImpl.getExecutableParameters were synthetic
ones that came from translating the executable element's decorated
function type to its final post-migration type.  Synthetic parameters
can't be field formal parameters, so this meant that when the
FixBuilder was re-resolving a constructor containing field formal
parameters, references to the field in the constructor body would get
incorrectly interpreted as pointing to the parameter rather than the
field, and that would cause them to be subject to promotion.

The fix is to only return synthetic parameters from
MigrationResolutionHooksImpl.getExecutableParameters when the
executable in question is in a library *not* being migrated.  When
it's in a library that *is* being migrated, we can just return all of
the executable's parameters without translating them, because we know
that the parameters themselves have been visited by the NodeBuilder
and EdgeBuilder, hence they all have thier own associated decorated
types.

Fixes #41405.

Change-Id: I5e3c411dc92fe242a959a5670b9253fbccea2b31
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144122
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-04-20 19:09:32 +00:00
Paul Berry b471ac55a0 Migration: apply guards to conditional branch expression values.
Consider the following code:

  int f(int i) => i == null ? null : i + 1;

Previously, migration would mark the return type of `f` as nullable
even if `i` was non-nullable.  This happened because the edge
connecting the explicit `null` (in the "then branch" of the
conditional) to the return type of `f` is created after visiting the
conditional expression, so the condition guards are no longer in
scope.

With this CL, we create an extra graph node when needed to ensure that
the guard is applied to the expression type.

Change-Id: Ie00eea0b431905241612c6661d69bdb55c0910d2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144121
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2020-04-20 19:09:32 +00:00
Paul Berry 925e3fe782 Migration: detect weak-only code in conditional expressions.
This change adds the ability to detect when one branch of a
conditional expression is weak-only due to nullability.  For example,
in the following code:

  int f(int/*!*/ i) => i == null ? g(null) : i;
  int g(int j) => ...;

the call to `g` can only happen in weak checking mode.  The migrator
also now understands that j only needs to be nullable if i is
nullable.

Fixes #41555.
Partially addresses #41551.

Bug: https://github.com/dart-lang/sdk/issues/41555
Change-Id: I02c9c3072f0104db0f1a5b432fb1f2f8f06d5282
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144120
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2020-04-20 19:09:32 +00:00
Sam Rawlins a4c49f8fce migration_tool: Dummy edges
Helps with https://github.com/dart-lang/sdk/issues/40509 and
https://github.com/dart-lang/sdk/issues/38747

Change-Id: Iac7208ee38dcc6c0b055f9e46c2d755ad0388488
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/143962
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2020-04-20 18:14:32 +00:00
Paul Berry 3dff7f31a7 Migration: rename isEliminateDeadIf to isConditionalWithKnownValue
The new name more accurately reflects the purpose, and will make tests
less confusing when we add analysis of weak-only conditional
expressions in a follow-up CL.

Change-Id: I388f68173a1b41456690ebd0082e9c8d0ebe2e06
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144003
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-04-20 17:26:26 +00:00
Paul Berry 5eb399388e Migration: when not removing weak-only code, visit all subexpressions.
In the FixBuilder, when we are discarding one of the branches of an
if-statement or if-element due to it being weak-only, we only visit
the branch we're keeping; this avoids trying to make changes to code
that's being removed.  However, if we are keeping both branches and
simply warning about one of them being weak-only, then we need to
visit both branches so that fixes are applied to both of them.

Change-Id: I26a1bfcb5f2ef4a111b1117637bce74e42d3db07
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144000
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-04-20 17:26:26 +00:00
Paul Berry a2c9dc18d5 Migration: fix EditPlanner.addCommentPostfix when isInformative = true.
Previously, the spaces inserted by EditPlanner.addCommentPostfix
didn't carry the correct isInformative flag, so they would show up in
final migrated output.

Change-Id: I100ba88040ebff9ae5d406c49b242f6fb17ce7b8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/143887
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-04-20 12:43:46 +00:00
Paul Berry d52dc104d4 Migration: instead of removing weak-only code, warn about it.
Previously we considered such code "dead", but it's not really dead
until Dart 3.0.  Removing it changes weak mode semantics, and we don't
want to do that automatically.

Fixes #41231

Change-Id: I6a88f016b4f3fcba160dcb738558867219715cbb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/143941
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-04-17 17:27:59 +00:00
Paul Berry e221b998b7 Add test cases and TODO reference for #41551
Change-Id: I98cb02eca2143df8ed1c836919ee93bd43f366b6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/143885
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-04-17 17:27:59 +00:00
Paul Berry 4747672929 Migration: fix preview output when accepting a /*late*/ hint.
Change-Id: I383be37cc86d3c83f5b2b332ae14ce35516f858d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/143563
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-04-17 00:17:15 +00:00
Paul Berry fdc13e3f43 Migration: remove hints when performing migration.
Previously, if we migrated a code snippet like this:

  void f(int/*?*/ i) {
    /*late*/ int j = i/*!*/;
  }

the migration result would leave the hints and add the hinted text,
resulting in:

  void f(int?/*?*/ i) {
    /*late*/ late int j = i!/*!*/;
  }

We now simply remove the `/*` and `*/` surrounding each hint (with
whitespace corrections as needed), to produce:

  void f(int? i) {
    late int j = i!;
  }

Change-Id: Ic4e1216cb4693d73d71c9ab1a37d5cc15b8ef334
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/143460
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2020-04-17 00:17:15 +00:00
Paul Berry 1d3105e0b3 Migration: prioritize changes differently if they're due to hints.
Change-Id: I4dfdd0287e488dfac21923c71741d2218a2c070c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/143334
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-04-14 23:33:46 +00:00
Paul Berry 46b49d23ec Migration: track multiple fix reasons for expressions with complex types.
Change-Id: I1a1f78377ed64504e5315b5096914219dc625e78
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/143188
Reviewed-by: Janice Collins <jcollins@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-04-14 23:33:46 +00:00
Sam Rawlins e1822e9626 Migrator: Add new fix kinds: replaceVar, addType
Fixes #41410

Change-Id: I127d309e84423c24eb2563063af433187b9bf057
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/143222
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2020-04-13 20:11:32 +00:00
Janice Collins 40b4389891 Add AnalysisServer client implementation for isolates.
Change-Id: I1b4a9394a996cdc9907273689d2c9dc0c900de55
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142556
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Janice Collins <jcollins@google.com>
2020-04-07 20:02:16 +00:00
Paul Berry 49f6a49056 Migration: remove the PotentialModification class and some of its descendants.
This code was part of the old infrastructure that pre-dated FixBuilder
and is not needed anymore.

Change-Id: I697dbfcd325b2f1c38754890cc8f60679004f7c6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142680
Reviewed-by: Janice Collins <jcollins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-04-07 18:35:56 +00:00
Paul Berry 03c15848d6 Migration: distinguish inserted casts based on whether they are downcasts.
Inserted casts that aren't downcasts are much less likely to be safe
than inserted downcasts.

Change-Id: I21e0ef54b1c4d58c54724a510b25828fc3018142
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142552
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-04-07 18:35:56 +00:00
Paul Berry 8c982a1373 Migration: categorize changes shown in the preview tool.
We now sort changes into the following categories (in order):
- Dead code removals
- Casts added
- Null checks added
- Required keywords added
- Types made nullable
- Casts now unnecessary
- Language version comments removed

The reasoning is that this corresponds roughly to how important it is
for a human to inspect each kind of change to make sure it is safe
(dead code removals, for example, are highly likely to indicate an
incorrect migration, where as dropping of unnecessary casts is benign
and almost certainly correct).

Change-Id: I49e3adac3ac98de1a9298f9caadb76c73a9c67d9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142542
Reviewed-by: Janice Collins <jcollins@google.com>
2020-04-07 18:35:56 +00:00
Konstantin Shcheglov bac08fb339 Implement interfaces subtyping check using allSupertypes.
Change-Id: I43a4b98bae913895c7e176dd24a17fc5df7666e7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142480
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-04-06 00:20:10 +00:00
Paul Berry 40dacf82b9 Migration: add support for a late hint with spaces
Change-Id: If3a95283e4a70d41cfaee72a97525e69ec54be2b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/141917
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2020-04-03 16:18:51 +00:00
Paul Berry 847718195d Migration: handle /*!*/ hint after more expression types.
Change-Id: I5f5b659ce6b07b547ebe3509ce923da02dff584b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/141916
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2020-04-03 16:18:51 +00:00
Paul Berry f04053d767 Migration: do not union inferred types in overrides.
Previously, when handling an override such as:

  abstract class A {
    int/*?*/ f();
  }
  class C implements A {
    f() => 0;
  }

we would create a union edge between the implicit return type of C.f
and the explicit return type of A.f.  This was a problem because
nullability information can propagate bidirectionally through union
edges, so it could result in types unnecessarily becoming nullable,
e.g.:

  abstract class A {
    int/*?*/ f();
  }
  abstract class B {
    int f(); // Should not need to be made nullable
  }
  class C implements A, B {
    f() => 0;
  }

This CL fixes the problem by just making ordinary unidirectional edges
for overrides involving inferred types.

Change-Id: I63a5f1f640b5543fcf39304087592e984aa66694
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/141853
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2020-04-01 12:07:44 +00:00
Paul Berry 4ffb95d631 Migration: add support for /*late*/ hints.
Fixes #41230.

Change-Id: I99b6ad67ebccbc972f72099818a8168003537fa5
Bug: https://github.com/dart-lang/sdk/issues/41230
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/141842
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2020-03-31 22:04:46 +00:00
Paul Berry 1f794f000e Migration: do not propagate exact nullability in violation of a /*!*/ hint.
Fixes #41228.

Bug: https://github.com/dart-lang/sdk/issues/41228
Change-Id: I9c7e7554cee08d9f8f2241ff627bab7cbb16f4da
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/141801
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2020-03-31 22:04:46 +00:00
Paul Berry b7130b0bf7 Migration: improve preview tool display when ! is added due to an explicit hint.
Change-Id: Ie9b2a6cabaf02c46da2e8b8ac1bffa0e699acc64
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/141741
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2020-03-31 22:04:46 +00:00
Paul Berry 8df442e414 Migration: don't use union edges for field formal parameters
Fixes #41182.

Bug: https://github.com/dart-lang/sdk/issues/41182
Change-Id: I485c1a502e34de758fdd0bc831bc18a665005bd1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140911
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-03-27 21:13:47 +00:00
Mike Fairhurst 2eaa5bcec6 [nnbd_migration] Handle removing language comments after other comments
Change-Id: Iecee603fbef5ff2d0f822728b9ae0d83967afc21
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140770
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
Reviewed-by: Janice Collins <jcollins@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2020-03-26 03:47:57 +00:00
Mike Fairhurst f10e1ed253 [nnbd_migration] Fix #38462, remove @ for @required nullable params
Change-Id: I755cd261a812a714f03cc09b1858d4925e98f88f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140907
Commit-Queue: Paul Berry <paulberry@google.com>
Auto-Submit: Mike Fairhurst <mfairhurst@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2020-03-25 19:40:24 +00:00
Paul Berry bdf8e7b27e Migration: handle introduction of both ! and as on a single expression.
Fixes #40016.

Bug: https://github.com/dart-lang/sdk/issues/40016
Change-Id: I54047d843d5d1670876a5827276899b1a56dcc65
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140905
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-03-25 19:38:34 +00:00
Paul Berry 08c6dd6164 Migration: add FixBuilder support for expression null check hints.
Previously, null check hints were only affecting the behavior of
EdgeBuilder, which meant that we handled simple cases like:

  int f(int/*?*/ x) => x/*!*/;

(because the EdgeBuilder wouldn't build an edge from the type of `x`
to the return type of `f`, so the return type of `f` would be
non-nullable int, and hence the FixBuilder would insert a `!` in order
to prevent an error).

But if there were some *other* reason for the destination type to be
nullable, then no `!` would get inserted.

This CL adds explicit logic to the FixBuilder to ensure that a `/*!*/`
hint causes a `!` to be inserted whether it's necessary or not.

Change-Id: I283bb9793d8d01408333f5b56562286bf19d8773
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140904
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2020-03-25 19:38:34 +00:00
Paul Berry 244b4247e9 Migration: better description text for edges.
Change-Id: I58651c927a741721283c3c4c951673a86aa7a1b3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140883
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2020-03-25 19:38:34 +00:00
Paul Berry 94dadae052 Migration: add support for expression bang hints
Change-Id: I6199c02b16249aade611e316b3b845ea1386ff8a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140440
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-03-24 20:35:15 +00:00
Mike Fairhurst 799560bff7 [nnbd_migration] Remove language version comments during migrate
Bug: 41095
Change-Id: I3262d6da485d78fee1e2dfe4ac22692c5e4b6daf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140369
Reviewed-by: Janice Collins <jcollins@google.com>
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
2020-03-24 16:44:05 +00:00
Paul Berry fbd0c8a468 Migration: mark for-each loop variables as initialized
Change-Id: I3e6be77a5a67af0ef722f6e37802980d63aeb650
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140368
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-03-20 23:50:50 +00:00
Paul Berry f1e98b84f9 Migration: use prefixes when introducing "as" expressions
Change-Id: I0f90dc4707cae35b04df7388a687895b80996fa2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140364
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-03-20 23:50:50 +00:00
Paul Berry 529f52a05a Migration: handle field overrides
Change-Id: I21db786afa80a0e4811341ad605bf2657377810b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140255
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-03-20 20:23:23 +00:00
Paul Berry 051d51f6be Migration: fix the descriptions of nullability nodes associated with parameters.
Previously, parameters with explicit types just got a description of
"explicit type"; now they get a description like "parameter 0 of
Foo.bar".

Change-Id: Ia6134fff48bc7d7e628304333f1c6ba406e8bdc8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139957
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-03-19 14:45:39 +00:00
Paul Berry f2dd2e28f3 Migration: preserve code references for nullability nodes with explicit types.
Previously, when analyzing code like:

  int f() {}

We assigned a NullabilityNodeTarget for `int` that simply said it was
the return type of the element for `f`; the location of `int` in the
source code was lost.  With this CL, we produce the same target, but
we preserve the location information.

Change-Id: Ibfe11485aedf208a39947e5a4903b4fa738e86a7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139954
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-03-19 09:03:17 +00:00
Paul Berry 41b67a9b52 Migration: add grayed-out spaces to indicate types not being made nullable.
Change-Id: I4fa076693c25cf9466d33332030df3983043ffd1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139940
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-03-18 21:18:22 +00:00
Paul Berry 4b9b46ef01 Migration: improve specificity of FixBuilderTest.isMakeNullable
Change-Id: Ibef1db9d1426cc4e8a5e7286f26887504352a767
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139751
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-03-17 17:19:41 +00:00