Commit Graph

61 Commits

Author SHA1 Message Date
Paul Berry 5569f10236 Migration: infer non-null intent for this in extensions.
Since `this` is essentially a variable in extensions, it should be
treated similarly to variables in terms of inference of non-null
intent; for example, if an extension declaration contains a a method
that unconditionall dereferences `this` (either implicitly or
explicitly), that's a good indication that the user probably doesn't
intend for the extension to be applied to nullable types.

Fixes #44675.

Bug: https://github.com/dart-lang/sdk/issues/44675
Change-Id: I004328f5b1fd6710954363c07f4e9db6bc6ac2cd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/180268
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-01-21 13:33:36 +00:00
Sam Rawlins f6dba2b25f dart migrate: Separate HintAction and HintActionKind into separate file
This addresses a cyclic dependency build issue in google3.

Change-Id: I3ea917f7216e120b827577bde60b874a9bad52af
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/180240
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2021-01-20 21:54:53 +00:00
Paul Berry 9d3b932640 Migration: fix handling of .call tearoff on a function-typed expression.
Change-Id: I18b102ae83afdb051decfc26762619fb5746f73f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/170364
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-11-05 19:18:54 +00:00
Paul Berry f1843b0abe Add special case migration logic for iterator methods.
This logic allows us to migrate code like this:

    int firstEven(Iterable<int> values)
        => values.firstWhere((i) => i.isEven, orElse: () => null);

Into:

    import 'package:collection/collection.dart' show IterableExtension;

    int? firstEven(Iterable<int> values)
        => values.firstWhereOrNull((i) => i.isEven);

Rather than the default behavior, which would migrate it to:

    int? firsteven(Iterable<int?> values)
        => values.firstWhere((i) => i!.isEven, orElse: () => null);

(The new migration is far superior because it doesn't require the
input iterable to accept null).

This functionality is disabled at the moment, because:
- The changes it makes don't show up properly in the web preview.
- The pubspec is not yet properly updated.

I will address these issues in follow-up CLs and then enable the
feature.

Change-Id: I96f3b12d682c586631920b38406bad6aa3f4789e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/168500
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-10-20 17:45:04 +00:00
Paul Berry 194be0b23f During migration, if a getter is nullable, make the setter nullable too.
This is necessary because whatever type is returned by the getter must
be accepted by the setter.

Bug: https://github.com/dart-lang/sdk/issues/43119
Change-Id: I5a43ec3750328081c39c26ba6fb937a9be068eb6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/159644
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-08-21 20:03:00 +00:00
Paul Berry 2e261f9386 Migration: add locations to trace entries that refer to elements.
Bug: https://github.com/dart-lang/sdk/issues/41402
Change-Id: I0dc59ae9d64c6e8ab470b2ddcb5fd42557ba5704
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/148742
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-05-27 21:52:14 +00:00
Paul Berry 15df850fd3 Migration: fix trace display for variable and field types.
Change-Id: Ib601fea6b6edd50a047471fe4eacf56339e4a4a0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147345
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-05-20 15:09:10 +00:00
Mike Fairhurst f943d994d3 [nnbd_migration] Support change hint type in stack trace
Change-Id: I715875bb72d4a19480c5f42e796b4ec4cabe3881
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/148189
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2020-05-19 16:34:20 +00:00
Mike Fairhurst b21ee57ccd [nnbd_migration] Support remove hint action in stack traces
Change-Id: I2878fde38b233747d8cf9e3e8666b5768f3125fa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/148187
Reviewed-by: Paul Berry <paulberry@google.com>
2020-05-19 16:34:20 +00:00
Mike Fairhurst 547b72d55b [nnbd_migration] Create a simple node mapper, part of instrumentation
Change-Id: Ia7b3f60ea6e5ce8518e62013e4deb0d315426f86
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147802
Reviewed-by: Paul Berry <paulberry@google.com>
2020-05-13 22:31:03 +00:00
Mike Fairhurst 424c2ad5a7 [nnbd_migration] Add model for hint actions stored on nullability nodes.
In the future this could change to simply be a `Set<HintActionKind>`, so
that the `AtomicEdit`s can be calculated lazily. However, for the first
pass, they are calculated eagerly. This model lets us do that.

Change-Id: I07108ae0876d5e0efe7b35559cedb4cbd1c13605
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147624
Reviewed-by: Paul Berry <paulberry@google.com>
2020-05-13 22:31:03 +00:00
Sam Rawlins ae5eb469dc Fix trace for unnamed constructors; remove stack frame icon
Bug: https://github.com/dart-lang/sdk/issues/41851
Change-Id: Ib3a4b76f094c2c4ce55e8617138ab6403b9d80f6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147825
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2020-05-13 18:12:02 +00:00
Paul Berry 83a2b2e51d Migration: exclude "never" node from "why not nullable" traces
Change-Id: I7b1e22b439dc32b5272e13c947f86e640ffc366b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147050
Reviewed-by: Janice Collins <jcollins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-05-12 17:50:39 +00:00
Paul Berry 6ef6d3ca89 Migration: sort declarations in instrumentation.dart.
Change-Id: I8c4c38300de959a38d00d6b3fad8f490060c1018
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146982
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-05-08 12:40:49 +00:00
Paul Berry 8061d2d6cc Migration: add support for a machine-readable summary of migration results.
Change-Id: Id41bc9869448dd4ed63286cab814bf7687baaaad
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146620
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-05-05 17:35:22 +00:00
Sam Rawlins 5ab3f3506f migrator: quiver's checkNotNull implies non-null intent
Fixes https://github.com/dart-lang/sdk/issues/39315

Change-Id: I136975064c6aadf9b8548afe9b5928d4ee6775a3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/145569
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2020-04-30 16:15:32 +00:00
Sam Rawlins 5506769402 Count variables checked with ArgumentError.checkNotNull as not null
Fixes https://github.com/dart-lang/sdk/issues/39644

Change-Id: I552e87e7c57dd2c5a012b76d9c73c24fefb19785
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/145025
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2020-04-29 22:35:18 +00:00
Sam Rawlins 61755dea19 Migrator: Infer late for test variables
Fixes https://github.com/dart-lang/sdk/issues/38291

This change also involves moving the "package" where test sources are
written and analyzed; It used to be /home/test (or /project in some
places); and a pubspec.yaml was written (or a .packages file) which
specified the package's name was "test". However, this conflicts with
adding an entry for a mock copy of the actual _test_ package. A
.packages file cannot have two entries for a package named "test", so
the package where all test sources are written is changed to "tests"
(located at /home/tests).

Change-Id: I462b88a814931dc2d4f1e72d07e3daf64768a399
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144994
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2020-04-29 22:09:28 +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
Mike Fairhurst 3de4d76b4a [nnbd_migration] Use offsets instead of column numbers in traces
Change-Id: I37f44c1a4713106e15b346739354b73592d208d5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/143721
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
2020-04-17 19:07:44 +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 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 c3a0bb086a Migration: Add "why not nullable" traces where "!"s are inserted.
Change-Id: I0367f869d59da0397589df7df43170f1ecbcb69c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139401
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-03-13 16:31:11 +00:00
Paul Berry 93448a47c6 Migration: change trace view to alternate between edges and nodes.
Previously, we only included edges in the trace view, which resulted
in a lot of missing information.  Generally the reasoning process
looks like "type at A is nullable because of an expression at B, which
propagates nullability from a type at C, which is nullable because of
an expression at D, etc."  This change makes the trace reflect that
reasoning process better.

Change-Id: I27d1b7aac736529b6f1fa2f7be8dea0d3eca9a6c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139064
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-03-11 21:30:40 +00:00
Paul Berry 2ec127a305 Migration: give nullability nodes human-readable names.
Change-Id: I86b510c6cc9afacb7d720af214c8f4e5a311c9ff
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138885
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-03-11 15:20:59 +00:00
Paul Berry fb496ee160 Fix "unknown" in CodeReference.toString
Change-Id: I90ac36e9ef2d1488802b48cdfa5aebf9f876520a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138840
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-03-10 22:03:21 +00:00
Paul Berry 043af430c1 Migraiton: Add function names to trace output.
This makes them look a lot more like real stacktraces.

Change-Id: I0c060f72f8676ab6d5c0272532b90931b815fddf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138607
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2020-03-09 22:00:59 +00:00
Paul Berry a74253987b Migration: add trace functionality to the preview tool.
This establishes the base functionality.  A lot of follow-up work is
needed from here:

- Each trace should have an entry at the top of it pointing to the
  thing that was made nullable.

- The source code links in traces don't include lengths, so we can't
  highlight whole identifiers when the user clicks on a link.

- Description strings are currently generated by running toString() on
  the individual nullability nodes and edges, resulting in long-winded
  and useless descriptions.

Change-Id: Ibb370bae6bedc7a8c86092462785023002a48ac3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138481
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-03-05 17:21:54 +00:00
Mike Fairhurst 3ae91fc8c5 [nnbd_migration] Add an edge origin for return;
Change-Id: I94e56933c4fb8d8c8b80ca0c427fc34c56674d04
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137841
Reviewed-by: Paul Berry <paulberry@google.com>
2020-02-28 23:26:22 +00:00
Mike Fairhurst e9df1ee07a [nnbd_migration] Add an edge origin for inferred parameter substitution
Change-Id: I37ce933e05a6b7ad7b8fdcc26f44968ae92516be
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137658
Reviewed-by: Paul Berry <paulberry@google.com>
2020-02-28 23:26:22 +00:00
Mike Fairhurst 734ad9c00c [nnbd_migration] Add an edge origin for type name parameters.
Change-Id: Ifad0a0ae6e641360ac5be5eea5c61e667be33cbc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137432
Reviewed-by: Paul Berry <paulberry@google.com>
2020-02-28 23:26:22 +00:00
Paul Berry 85f6d51c3f Migration: infer nullability for uninitialized toplevel vars and static fields.
Fixes https://github.com/dart-lang/sdk/issues/40700.

Change-Id: I4b33b65961bf9c06c6ae68691f9e337dcee2af66
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/136901
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-02-25 16:21:21 +00:00
Paul Berry a49dce0631 Migration: remove the "propagation step" part of the instrumentation interface.
It didn't wind up being used, and its presence limits our ability to
modify the graph propagation algorithm (which I plan to do in a
follow-up CL).

Change-Id: I48a9b879f25295075e8d95eb3fb0185839303957
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/133425
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2020-01-29 18:30:46 +00:00
Mike Fairhurst 3e453e5adf [nnbd_migration] union resolved typedef nodes with inferred ones
Change-Id: Iaccdc9e2f61219c876957377f15c8b43555661b4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/133430
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2020-01-27 22:08:09 +00:00
Brian Wilkerson 500822341e First steps to allow migration to be incrementally rerun
Change-Id: Ib4e682739a732ad9b8863ecb780ad88e5cbd9c6d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/132921
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2020-01-22 20:23:38 +00:00
Paul Berry 31bfacfda4 Migration: change API to make use of FixBuilder's "changes" data structure.
The new FixBuilder component of the migration engine communicates the
changes it produces using a "changes" data structure of type Map<int,
List<AtomicEdit>>, and is not compatible with the old
SingleNullabilityFix class (which made the incorrect assumption that
each SourceEdit was associated with a single fix).  This CL changes
the migration engine's instrumentation API to use this data structure,
and changes its listener API to avoid reference to the
SingleNullabilityFix class.  This allows SingleNullabilityFix to be
deleted.

This required changing AtomicEditWithReason so that it can hold
multiple fix reasons, and a NullabilityFixDescription.  It does so
using a new object, AtomicEditInfo, and AtomicEditWithReason is
renamed to AtomicEditWithInfo.

In addition, the old FixInfo class is removed, since it carries the
same information as the new AtomicEditWithInfo class.

This required deleting the "incremental workflow" functionality from
UnitRenderer.  This functionality was disabled, and I believe it
wouldn't have worked anyway (since it, too, made the incorrect
assumption that each SourceEdit was associated with a single fix).

Change-Id: Id965cfd803b408c66f15436017b87fc3e46521c6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/132306
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-01-19 16:50:01 +00:00
Mike Fairhurst 693c3c444d [nnbd_migration] Make list constructor nullable if specified length
Change-Id: Ia65768ddf6c7da11a44b362d3c99cc0372a14e84
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130891
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-01-10 20:41:01 +00:00
Mike Fairhurst a9e91396a7 [nnbd_migration] Support enums
Change-Id: Ib15b821691168359d0b31b185b5c7deb7da3c7e6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/129500
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
2019-12-23 23:13:02 +00:00
Paul Berry f2b7af83e7 Migration: eliminate some explicit uses of always/never nodes from node_builder.dart.
Change-Id: I40a23b907016dca537073834e4ec1280c8acaf2a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125931
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-11-22 15:17:54 +00:00
Sam Rawlins 535cbf5db9 NNBD preview: Text for return type with nullable return type in subclass
Change-Id: Ia829b3f8cb7f09b10180478394608a05cdcdbb6d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125984
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2019-11-21 21:07:25 +00:00
Paul Berry 6fa41ae6f9 Migration: remove _notNull* fields from EdgeBuilder.
We want to create a separate nullability node for each non-nullable
node so that instrumentation can explain to the user where it came
from.

Change-Id: Id51a3366284e8c51c466458c1c14de963cd0bd05
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125551
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-11-21 15:19:15 +00:00
Mike Fairhurst e34e734b56 [nnbd_migration] track causations for substitution nodes
Change-Id: I7da4f2923d9b99b0bd6c16644a7adeaeda437340
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125463
Reviewed-by: Paul Berry <paulberry@google.com>
2019-11-18 18:49:39 +00:00
Paul Berry 33c95a8508 Migration: account for definite assignment.
Fixes #38344.

Change-Id: I64d17fe1e571fc708632c0e48b6556e2094a91e9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125443
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-11-15 22:38:36 +00:00
Mike Fairhurst a6635d006b [nnbd_migration] Show "exact nullability" in output directory.
Change-Id: I29545fe358282aa05dee10ed7ff5e86ea899581e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125222
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2019-11-15 18:27:24 +00:00
Paul Berry bd43ef8144 Migration: stop using "never" for the result type of an "is" check
Change-Id: I02b80817e46e0544b38dceb7b8a3f92aebede1d3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125229
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-11-15 02:02:35 +00:00
Paul Berry 9cb0b678ce Migration: remove more explicit uses of never from EdgeBuilder.
With this change, we no longer use the "never" graph node for:

- instance creations

- explicit references to `this` or `super`

- the static type of `throw` and `rethrow` expressions

Change-Id: I995be86ee0f4d8002c70cf98e7e5d2767529d00b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125226
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-11-15 02:02:35 +00:00
Paul Berry ad4b93da9e Migration: stop using the "never" node for the type of literals.
Change-Id: I4195dd989d295dc9a468ada0e643c9a971f3a9d1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125223
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-11-14 18:25:29 +00:00
Paul Berry eeb89b2e5b Migration: ensure that uninitialized fields are nullable.
Change-Id: I1dc0a2c80ea52566aa4eb6b5e9ce745ad635d517
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125220
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-11-14 17:03:07 +00:00
Sam Rawlins 06aef10d76 nnbd preview: Remove descriptionPrefix; don't link Details which will link to some bizarre Never node
Bug: https://github.com/dart-lang/sdk/issues/39247
Change-Id: I6f34ecf745e8db75534affdeadc3d47acac079b3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125062
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-11-14 01:09:35 +00:00
Paul Berry 8938a5ed2d Migration: make an edge origin for assignments of dynamic.
Change-Id: I75d037aa7ee890488a92e113f58094b5733a9b8f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125004
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-11-13 00:27:32 +00:00