The _transformOrShare function is only useful when elements might be
identical(), but copyWith always returns a new instance, so the 'share'
option is never the case.
Change-Id: I4fd573538a4447da70c051c5e9a4a6449d49f4c6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221989
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
There are a lot of implicit casts, so this CL includes:
benchmark/, many in test/, and tool/.
Most changes are quite mechanical, using `Object?`.
I also changed some functions to use types other than `dynamic`.
Bug: https://github.com/dart-lang/sdk/issues/41651
Change-Id: Id77037aae71d41e2bdca52958fdc01c43d3d51a8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221885
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Previously only a super helper would be created as needed when there was
a super getter or setter call a constructor. If both a get and set exist
only the first encountered would trigger a helper to be generated. The
second helper would be missing and the call to it would trigger an
exception.
Now the helpers are tracked with unique names to avoid collisions.
Fixes: https://github.com/dart-lang/sdk/issues/47698
Change-Id: I561adc0ce8f97e81a9e12d749d4d80e1f5e73f38
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221743
Commit-Queue: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Mark Zhou <markzipan@google.com>
The change is somewhat limited (for example, it doesn't allow the
replacement to be in a different library than the original), but I
believe that it's sufficient for the known use cases and can be extended
in future CLs.
Change-Id: Ic9b2ae42244134f63c36c88f3dc790e3655a7037
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221900
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
So, stop using DeclarationsTracker for it.
Change-Id: Ia53c0729e71ddbc4c9bc19902b21b9d621b2235c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221864
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
We have added more examples, and some of them uses the structure of:
````dart
/// ```dart
/// var x = something;
/// ```
/// and then you can also floo the thing
/// ```
/// x.floo(...);
/// ```
````
The following chunks of the same example can now be written as:
````dart
/// ```dart continued
/// x.floo(...);
/// ```
````
Change handling of imports,
and introduce a `top` template different from `none`.
The `none` template gets nothing for free.
The sample must be completely self-contained.
Is triggered by the sample containing a `library` declaration,
because we can't add anything before that.
The `top` template allows top-level declarations,
but does introduce automatic imports and "samples can expect"
code if the sample doesn't contain `import`s.
Is triggered by top-level declarations other than `library`.
Also some restructuring of the code to make this feature easier
to implement.
Change-Id: If2288147face01efad2ad656aa52183cb4c8b3bf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221343
Commit-Queue: Lasse Nielsen <lrn@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
This CL extracts part of the IncrementalCompiler into subcomponents.
This is part of an effort to make the state and state changes of the
incremental compiler more explicit.
Change-Id: I59cbb30558082f4db392d925bb704d03c31ccb90
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221940
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
This replaces the previous implementation (and the topological sort of
classes, on which it was based) which was O(|vertices|*|edges|). The new
implementation is O(|vertices|+|edges|).
Change-Id: I4f5f1e63b4c7dd67d6f17c087724c20d4d33bf83
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221820
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
The results are now updated by the builder, so the builder status
does not need to poll the database for the results to finish processing.
The script is also migrated to null safety.
Change-Id: I7913f7fb0a8eedc074a4b79eb75c1c2813525c17
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221780
Commit-Queue: William Hesse <whesse@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
When ABI-specific integers are introduced, their mappings can be
partial. We need to account for this in the marshaller.
This CL refactors the marshaller API to take an char** error return
parameter and changes the return type to a pointer (nullable) rather
than a reference.
Note that with only this CL we can not generate errors yet, because all
native types are still complete.
TEST=runtime/vm/compiler/ffi/native_type_vm_test.cc
TEST=tests/ffi*
Bug: https://github.com/dart-lang/sdk/issues/42816
Change-Id: Id97e73795c357e129e6280e8c5b528d18072c14d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221632
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
In https://dart-review.googlesource.com/c/sdk/+/221360 I requested using
macros for repetitive cases in switch statements.
Turns out that this is harder to read than just the list of cases.
Also, it forces an extra level indentation by the formatter because the
braces cannot be part of case statement, which again makes it harder to
read the code.
TEST=This is just a formatting change.
Change-Id: I0b2d8c6b1e73da371dba215c2e0c1ad28fd0903f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221822
Reviewed-by: Ryan Macnak <rmacnak@google.com>
When ABI-specific integers are introduced, their mappings can be
partial. We need to account for this in the transformation and the code
we generate.
In the transformation, all sizes and offsets become nullable.
In the generated code we add `null` constants and a call to check
whether the value is not-null at runtime.
Note that with only this CL we can not generate nulls yet, because all
size and offset mappings are still complete.
TEST=pkg/front_end/testcases/nnbd/ffi*
TEST=tests/ffi*
Bug: https://github.com/dart-lang/sdk/issues/42563
Change-Id: I80d45f3f52001670bc0679a033f7daa22198d55e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221631
Reviewed-by: Ryan Macnak <rmacnak@google.com>
We're going to extend this logic in subsequent CLs, so lets give this
abstraction its own place to live.
TEST=just moving file contents
Change-Id: Ie6b267e77dd3a772bb3bbf0b79b33946ee767b0e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221630
Reviewed-by: Ryan Macnak <rmacnak@google.com>
This reverts commit ab0d8dc3b1.
Reason for revert: Speculating this is the cause for hangs in Flutter's `test/integration.shard/timeline_test.dart: Can connect to the timeline without getting ANR from the application`.
Original change's description:
> [vm] Emit timeline events around virtual memory allocation / deallocation.
>
> TEST=ci
> Change-Id: I0b29e2e6f7f530e29af0962f1243d708a1ca2225
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/220804
> Reviewed-by: Dan Field <dnfield@google.com>
> Reviewed-by: Siva Annamalai <asiva@google.com>
> Commit-Queue: Ryan Macnak <rmacnak@google.com>
# Not skipping CQ checks because original CL landed > 1 day ago.
Change-Id: Ia8af447babd7291df4be746e8b8010242cbccc63
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221861
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Dan Field <dnfield@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
I was pretty confused about what was being compared until this change
was able to highlight that no edits were made.
Bug: https://github.com/dart-lang/sdk/issues/47678
Change-Id: I1d37070437658063d4b84f2fb5f4a33923bf5d92
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221840
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Sets and gets to late variables count as uncovered even when they are
covered, because they have internal branches that throw exceptions.
These exceptions should not be hit in well formed code, so they
shouldn't count towards coverage totals.
These exceptions are all thrown using static functions on the internal
LateError class, so we can just ignore any calls that target a function
on this class.
Bug: https://github.com/dart-lang/coverage/issues/341
Fixes: https://github.com/dart-lang/coverage/issues/341
Change-Id: I1dfa5d64b7a2030121d84d7aad7c7a1649b900a8
TEST=Added a unit test
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221740
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Liam Appelbe <liama@google.com>
This does not fix#42641, but removes a recursion that can make #42641
look different.
Change-Id: Id070cea0eb10501f1750b2719ed710a938170038
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221480
Reviewed-by: Mayank Patke <fishythefish@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
This CL changes the handling of late static fields to be similar to the
handling of late instance fields. That is, if the field does not need a
load guard and has an initializer, the new InitLateStaticField and
InitLateFinalStaticField stubs are used, which directly call the
initializer function instead of going to the runtime. Thus, the only
runtime call left in these cases is when a late final static field is
modified by the initializer function, in which case an appropiate
exception is thrown.
In the case where a late static field might call the initializer
function but no initializer exists, a LateInitializationErrorSlowPath is
generated to be called if the field value is the sentinel, also similar
to the late instance field case.
TEST=Refactoring, so existing tests.
Change-Id: I95887022d8ece1164a8f7c34b77d9de8c53aa898
Bug: https://github.com/dart-lang/sdk/issues/45138
Cq-Include-Trybots: luci.dart.try:vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try,vm-kernel-linux-release-ia32-try,vm-kernel-linux-release-x64-try,vm-kernel-nnbd-linux-release-ia32-try,vm-kernel-nnbd-linux-release-simarm-try,vm-kernel-nnbd-linux-release-simarm64-try,vm-kernel-nnbd-linux-release-x64-try,vm-kernel-precomp-linux-release-simarm-try,vm-kernel-precomp-linux-release-simarm64-try,vm-kernel-precomp-linux-release-simarm_x64-try,vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-nnbd-linux-release-simarm64-try,vm-kernel-precomp-nnbd-linux-release-simarm_x64-try,vm-kernel-precomp-nnbd-linux-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/220009
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
TEST=Manual. AFAIK, the cause of this error is the socket receiving a TCP RST from it's peer and, AFAIK, I can't do that from Dart.
Bug: https://github.com/dart-lang/sdk/issues/47766
Change-Id: Ia423ee951b96bdb140c321fbc87b6bd59e39d84d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221222
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Brian Quinlan <bquinlan@google.com>
This adds the following commits:
b9edfa5e28
Change-Id: Ia52dd2b6aa797006ddb3e686cfccf4d382dc9355
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221626
Auto-Submit: Jonas Jensen <jonasfj@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>