Commit graph

90642 commits

Author SHA1 Message Date
Jake Macdonald f5321673ad [macros]: Add new class modifiers to ClassDeclaration
Change-Id: I9aa2b0156a99674cd377bb7686a9f70c38642ff6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289084
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Auto-Submit: Jake Macdonald <jakemac@google.com>
2023-03-20 15:55:04 +00:00
William Hesse 39ecf5f9d2 [io] Calling flush after close on File.open's IOSync should not throw an exception
The documentation of IOSync states that calling flush on a closed IOSink may have no effect:
https://github.com/dart-lang/sdk/blob/main/sdk/lib/io/io_sink.dart#L109
The future returned by close in the new implementation does not complete until after
a call to flush has completed.
The previous implementation of File.open did not throw when calling flush after close.

CoreLibraryReviewExempt: IO only, restoring previous semantics
Bug: b/274405250
Change-Id: I56bbe02e886085cc8156e60264f5b77593c8a075
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289823
Reviewed-by: Emmanuel Pellereau <emmanuelp@google.com>
2023-03-20 15:33:04 +00:00
Johnni Winther 6d2e6f9452 [cfe] Improve switch encoding
Addresses https://github.com/dart-lang/sdk/issues/51554#issuecomment-1466946211

Closes #51391

TEST=existing

Change-Id: Idec105dcfde4a91d0a21a1907777d6c07e5f01b2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289224
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2023-03-20 15:21:52 +00:00
Lasse R.H. Nielsen b2f4cf3e01 Add class modifiers to dart:convert.
The usual approach:
Pure interfaces marked `interface`.
Pure implementation classes marked `final`.
Base classes marked `base` or nothing, and `mixin class` if reasonable.
Combined X/XBase/XMixin where possible.

CoreLibraryReviewExempt: Aske is away
Change-Id: I927f9bd488fb385ff9c17c8fc94920a1f5076347
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289200
Reviewed-by: Stephen Adams <sra@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
Commit-Queue: Lasse Nielsen <lrn@google.com>
2023-03-20 13:27:17 +00:00
Lasse R.H. Nielsen 82d91ea541 Add class modifiers to dart:_internal.
The only exported type is `BytesBuilder`, which is a pure `interface`.

CoreLibraryReviewExempt: Aske is away
Change-Id: I1756e066689192ac4ea8485c3e1259d79473c583
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289320
Reviewed-by: Stephen Adams <sra@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
Commit-Queue: Lasse Nielsen <lrn@google.com>
2023-03-20 13:16:06 +00:00
Lasse R.H. Nielsen 162ff41b0e Add class modifiers to dart:async.
* Pure interfaces marked `interface`. That's most public classes.
* `Stream` made `mixin class`, as a proper skeleton/base implementation.
* `Zone` classes made all `final`.

Added some `<void>` to raw `Future` types.

CoreLibraryReviewExempt: Aske is away.
Tested: No functionality change, only added restrictions.
Change-Id: I91d09fbcdba7d0dfdff3887bc7c9d54364c88b05
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289221
Reviewed-by: Stephen Adams <sra@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
Commit-Queue: Lasse Nielsen <lrn@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
2023-03-20 12:12:46 +00:00
Zach Anderson 7471994270 Revert "[vm/ffi] Add class modifiers"
This reverts commit 1755f89092.

Reason for revert: This is a breaking change and is blocking the Dart -> Flutter roll. See https://ci.chromium.org/ui/p/flutter/builders/try/Mac%20Unopt/26896/overview.

Original change's description:
> [vm/ffi] Add class modifiers
>
> Adds class modifiers to `dart:ffi`.
>
> Migrates all user-defined subclasses of `Struct`, `Union`, `Opaque`,
> and `AbiSpecificInteger` to be `final class`es.
>
> Does not remove the manual error checking, so some errors will show up
> twice now in language version 3.0. In language version <3.0, only the
> FFI-specific error will show up.
>
> In a follow-up CL, we will try to make the language-errors to show up
> also <3.0 so that we can remove the FFI-specific errors.
>
> Examples of duplicated errors:
> pkg/analyzer/test/src/diagnostics/subtype_of_ffi_class_test.dart
>
> TEST=pkg/analyzer/test/ (for the analyzer)
> TEST=pkg/front_end/testcases/ (for the CFE)
> TEST=test/ffi/ (for the VM)
>
> CoreLibraryReviewExempt: No need for dart2js to review.
> Bug: https://github.com/dart-lang/sdk/issues/51683
> Change-Id: I2964ceccb7db59fbdaf6be5319f5e4ec2dabe0f3
> Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-win-release-try,pkg-mac-release-try,vm-precomp-ffi-qemu-linux-release-riscv64-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-ffi-android-debug-arm64c-try,vm-ffi-android-debug-arm-try,vm-reload-rollback-linux-debug-x64-try,analyzer-analysis-server-linux-try,analyzer-linux-release-try
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289223
> Reviewed-by: Johnni Winther <johnniwinther@google.com>
> Reviewed-by: Devon Carew <devoncarew@google.com>
> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
> Reviewed-by: Jackson Gardner <jacksongardner@google.com>
> Reviewed-by: Lasse Nielsen <lrn@google.com>
> Commit-Queue: Daco Harkes <dacoharkes@google.com>

Bug: https://github.com/dart-lang/sdk/issues/51683
Change-Id: Ie5b8a08aea6d64b1991ace4814322b21ffb670c7
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-win-release-try,pkg-mac-release-try,vm-precomp-ffi-qemu-linux-release-riscv64-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-ffi-android-debug-arm64c-try,vm-ffi-android-debug-arm-try,vm-reload-rollback-linux-debug-x64-try,analyzer-analysis-server-linux-try,analyzer-linux-release-try
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289640
Commit-Queue: Slava Egorov <vegorov@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
2023-03-20 11:15:59 +00:00
Martin Kustermann 171744589a [vm] Mark _registerServiceExtension entrypoint conditional on being non-product mode
The runtime should only call this in non-product mode, we should be able
to tree shake it in product mode.

TEST=ci

Change-Id: Ic8628b1e239f123894efc5a79253b8d6a9b56a73
CoreLibraryReviewExempt: Doesn't change API
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289780
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2023-03-20 11:00:53 +00:00
Alexander Markov 2d5c46c871 [vm/compiler] Do not assume that LoadField is performed from a record of a compatible shape
Compiler can see an unreachable code like this:

v1 <- Constant(Record (C, C))
if v1 is (C, C, C) {
  v2 <- LoadField (v1.$3)
}

So it should check that record type of the receiver has enough fields
before querying field type in LoadField.

TEST=co19/LanguageFeatures/Patterns/matching_record_*

Fixes https://github.com/dart-lang/sdk/issues/51767
Issue https://github.com/dart-lang/sdk/issues/49755

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-nnbd-linux-release-x64-try
Change-Id: Iac42c8edf3d22dce0061b6d75e8bdf51b7bf88e6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289540
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2023-03-20 08:30:36 +00:00
Robert Nystrom 10f53cb4c6 Remove incorrect part of int-to-double test.
Switch statements on ints aren't required to be exhaustive.

Change-Id: I85701b098cacf9d01241dab821ae4c70f04a0710
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289450
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
2023-03-18 01:54:56 +00:00
Sam Rawlins 9833cb477c [analyzer] Move 4 more HintCodes to be WarningCodes, NON_CONST*, NULL_CHECK*, STRICT_RAW_TYPE
Bug: https://github.com/dart-lang/sdk/issues/50796
Change-Id: Idcac3ddb582e5b46263fd017c39402b1c11914d7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289447
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2023-03-18 01:48:49 +00:00
Konstantin Shcheglov 35b7f2dd97 Update to expect either 'dynamic' or a subtype in irrefutable context.
https://github.com/dart-lang/language/pull/2926

Change-Id: Ic9fd0b097ca70c15a184269a10e8a87eb34bb79d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289440
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2023-03-18 00:30:08 +00:00
Srujan Gaddam 9ce261faec [pkg:js] Update SDK upper constraint to 4.0.0
Change-Id: Ia41ee7f1f8705e06c4d75f7a2c4e673d92d64af2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289446
Auto-Submit: Srujan Gaddam <srujzs@google.com>
Reviewed-by: Joshua Litt <joshualitt@google.com>
Commit-Queue: Joshua Litt <joshualitt@google.com>
2023-03-17 23:08:31 +00:00
Robert Nystrom 6de72778ff Add tests for where coercions do and don't happen in patterns.
These tests reflect the intended behavior after
https://github.com/dart-lang/language/pull/2926 lands.

Change-Id: I7ce1991dfc9b247b0c6ce6ee2714b5f207a4040d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289404
Reviewed-by: Erik Ernst <eernst@google.com>
Commit-Queue: Bob Nystrom <rnystrom@google.com>
2023-03-17 23:04:25 +00:00
Nate Biggs 71a6e8be8f [dart2js] Add unit tests for RecordTypeMask operations.
Change-Id: I03d988ffda39fa2416f429f464cb23aedbd1f44f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289083
Commit-Queue: Nate Biggs <natebiggs@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
2023-03-17 22:50:44 +00:00
Nate Biggs a2719b5552 [dart2js] Make use of new RecordTypeMask for creation of record literals/constants as well as record field accesses.
All calls on records are no longer treated as essentially dynamic calls.  So a call to `record.foo` will not pull all `foo` members into the program (including unused ones). For example in the below test the getter `any` was causing `JSArray.any` to be included in the program. After this change it is no longer pulled in.
https://github.com/dart-lang/co19/blob/master/LanguageFeatures/Records/members_A04_t02.dart#L39

Change-Id: If1f9eac1abadeeed80dca917a8912129d090643e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/287681
Reviewed-by: Mayank Patke <fishythefish@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
2023-03-17 22:50:44 +00:00
Nate Biggs 2e05ad2fda [dart2js] Add RecordTypeMask to type mask domain.
This implements all the subtyping relationships for records as well as any other predicates needed for the abstract value domain.

In the next CL we make use of this new mask when constructing the types for record literals and when accessing fields of a record.

Change-Id: Ibf12b95e439e2c12be9e4db51f5023df379d48f6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/288101
Reviewed-by: Mayank Patke <fishythefish@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
2023-03-17 22:50:44 +00:00
Mayank Patke 0d583f707c [dart2js] Add failing test for issue #49588.
Bug: #49588
Change-Id: If19b956642ff55ca6d54e7b9df21cbc516d05d93
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/253710
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Mayank Patke <fishythefish@google.com>
2023-03-17 21:32:22 +00:00
Nicholas Shahan bd62be296c [tests] Avoid imports across null safety suites
Updates imports in `tests/lib_2` from `tests/language` to use the
version in `tests/language_2` instead.

I think it is also a little awkward to import libraries across
tests suites period but that is an issue for another day.

Change-Id: Ib61bb1e1790926f92ee2650a6497916f2edce7ea
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289407
Reviewed-by: Bob Nystrom <rnystrom@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
2023-03-17 20:03:37 +00:00
Mayank Patke a2307a1110 [dart2js] Use CFE static types for variables in null-safe libraries.
Fixes: #49588
Change-Id: Ib0de059f17660450385253061dc1e313a5671309
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289060
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Mayank Patke <fishythefish@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2023-03-17 19:44:34 +00:00
Mayank Patke 62e3c47e45 [dart2js] Don't rely on == null promoting to Null in rti.dart.
Although the true branch of `x != null` and the false branch of `x ==
null` promote `x` to non-nullable, the opposing branches do not promote
`x` to `Null` in the current flow analysis spec, which applies to the
CFE.

When switching from the dart2js static type computation to the CFE
static type computation, attempting to use `x` in these branches may
generate an unintended type check, which can overflow the stack if this
occurs in code responsible for performing type checks. The fix is fairly
straightforward - we can simply use an unchecked cast (via `JS`) instead.

See https://github.com/dart-lang/language/issues/1505 for discussion on
why the expected promotion does not (yet) occur.

Change-Id: Ia9cca4e1aa8e9c67b42c60189f0d3811afb61360
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289061
Reviewed-by: Stephen Adams <sra@google.com>
2023-03-17 19:44:34 +00:00
Nate Bosch 6f45c8534e Bump matcher to dc310d95663da10a90e7898cd4e322695f693d4f
Changes:
```
> git log --format="%C(auto) %h %s" c1a0704..dc310d9
 https://dart.googlesource.com/matcher.git/+/dc310d9 Export more APIs through the expect library (213)
 https://dart.googlesource.com/matcher.git/+/7538872 Make the arguments to `expect` dynamic again (212)
 https://dart.googlesource.com/matcher.git/+/52e232e Fix import and broken tests (211)
 https://dart.googlesource.com/matcher.git/+/985e4ef Improve mismatch description of `contains` (206)
 https://dart.googlesource.com/matcher.git/+/5bc765d Copy expect and async matchers from test package (210)

```

Diff: https://dart.googlesource.com/matcher.git/+/c1a07043de3da4968e1736fcde1c521802821859..dc310d95663da10a90e7898cd4e322695f693d4f/
Change-Id: I11b074e97c9c49ba46760da44a99f795523d3008
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289445
Commit-Queue: Kevin Moore <kevmoo@google.com>
Auto-Submit: Nate Bosch <nbosch@google.com>
Reviewed-by: Kevin Moore <kevmoo@google.com>
Commit-Queue: Nate Bosch <nbosch@google.com>
2023-03-17 19:44:30 +00:00
Daco Harkes 1755f89092 [vm/ffi] Add class modifiers
Adds class modifiers to `dart:ffi`.

Migrates all user-defined subclasses of `Struct`, `Union`, `Opaque`,
and `AbiSpecificInteger` to be `final class`es.

Does not remove the manual error checking, so some errors will show up
twice now in language version 3.0. In language version <3.0, only the
FFI-specific error will show up.

In a follow-up CL, we will try to make the language-errors to show up
also <3.0 so that we can remove the FFI-specific errors.

Examples of duplicated errors:
pkg/analyzer/test/src/diagnostics/subtype_of_ffi_class_test.dart

TEST=pkg/analyzer/test/ (for the analyzer)
TEST=pkg/front_end/testcases/ (for the CFE)
TEST=test/ffi/ (for the VM)

CoreLibraryReviewExempt: No need for dart2js to review.
Bug: https://github.com/dart-lang/sdk/issues/51683
Change-Id: I2964ceccb7db59fbdaf6be5319f5e4ec2dabe0f3
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-win-release-try,pkg-mac-release-try,vm-precomp-ffi-qemu-linux-release-riscv64-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-ffi-android-debug-arm64c-try,vm-ffi-android-debug-arm-try,vm-reload-rollback-linux-debug-x64-try,analyzer-analysis-server-linux-try,analyzer-linux-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289223
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Jackson Gardner <jacksongardner@google.com>
Reviewed-by: Lasse Nielsen <lrn@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2023-03-17 19:29:41 +00:00
Mark Zhou 80c2b02bd0 [ddc] Adding a runtime flag for real deferred loading in DDC
Change-Id: If50f7437c827a32829f5093cb3a14cbc5e55f7a7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289340
Commit-Queue: Mark Zhou <markzipan@google.com>
Reviewed-by: Anna Gringauze <annagrin@google.com>
2023-03-17 18:04:48 +00:00
Jake Macdonald 2cec283bd0 update covariant setter test to test mixin class behavior also
Change-Id: I8f87f5d2d7745719462e0782176b04a595cdd5f6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289521
Auto-Submit: Jake Macdonald <jakemac@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Commit-Queue: Jake Macdonald <jakemac@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
2023-03-17 17:38:49 +00:00
Ilya Yanok d190e16766 Fix handling of @Injectable functions
Recent changes that made migration tool more conservative affected
functions used in Angular's DI: functions annotated with `@Injectable`
must have non-nullable non-annotated arguments. Previously that
worked just because there was no reason to make them nullable.

Make such functions' arguments explicitly non-nullable.

Bug: b/250862403
Change-Id: I27207994b058ba845aafd7776d14380e8104e8f8
Tested: added a test
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289505
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Ilya Yanok <yanok@google.com>
2023-03-17 17:28:41 +00:00
Johnni Winther 7cc2553fa1 [_fe_shared_analyzer] Use real exhaustiveness checking algorithm
This changes the analyzer and CFE to use the real exhaustiveness
checking algorithm. The fallback algorithm is kept and will be
removed once we know that the real exhaustiveness algorithm sticks.

Change-Id: Ic9df92c1ca9f7dec4cbdfa138dc6ed39ef2d4df5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/288703
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2023-03-17 16:45:35 +00:00
Konstantin Shcheglov 771042f5ca Prepare to publish analyzer 5.8.0 and _fe_analyzer_shared 56.0.0
Change-Id: I09c65e9897fb8fe77c668fac8044da9b73b0f41a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289441
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2023-03-17 16:36:59 +00:00
Nicholas Shahan cf7d78cc2c [dart2js] Run modular steps with sound null safety
Update the dart2js and kernel worker steps themselves to run
with sound null safety. This is separate from the code being compiled
in the step which will be migrated in another change.

Change-Id: Idbaaeb255209e79bb34aa34aedeb020be097c1c5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289408
Commit-Queue: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Nate Biggs <natebiggs@google.com>
2023-03-17 16:26:10 +00:00
Ivan Inozemtsev 4c70caf4df [deps] rev http
http (805a147..74f9d3d):
  74f9d3d  2023-03-09  Brian Quinlan  Add conformances test that verify that the Client works in Isolates (#889)
  ee03604  2023-03-09  Brian Quinlan  Add a flag to allow the default Client to be tree shaken away. (#868)
  2039fb3  2023-03-09  Brian Quinlan  Fix a reference count race with forwarded delegates. (#888)

Change-Id: I56faf5cf41ad16f6a365db66265b02e66adbc59f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289502
Commit-Queue: Devon Carew <devoncarew@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Auto-Submit: Ivan Inozemtsev <iinozemtsev@google.com>
2023-03-17 16:25:08 +00:00
Jake Macdonald 3b06df241f Clean up a number of 2.19 opt outs in language tests.
This is less than half of them, will send some other chunks later.

Bug:51557
Change-Id: I4e80812a689fde99e23c34b6405aaf57cd431ce8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289261
Reviewed-by: Bob Nystrom <rnystrom@google.com>
Commit-Queue: Jake Macdonald <jakemac@google.com>
2023-03-17 16:17:50 +00:00
Brian Quinlan e34165c543 Reland "[io] Improve the performance of the IOSink returned by openWrite by writing eagerly and accumulating small writes."
This is a reland of commit c2bdda63f5

Original change's description:
> [io] Improve the performance of the IOSink returned by `openWrite` by writing eagerly and accumulating small writes.
>
> Benchmarks (benchmarks/FileIOSink/dart/FileIOSink.dart):
>
>  @before:
>
>   FileIOSink.Add.ManySmall(RunTime): 2341597.0 us.
>   FileIOSink.Add.OneLarge(RunTime): 111.06925927974774 us.
>   FileIOSink.Add.AlternatingAddSize(RunTime): 105.65958788898234 us.
>
>  @after
>
>   FileIOSink.Add.ManySmall(RunTime): 5007.1125 us.
>   FileIOSink.Add.OneLarge(RunTime): 98.23492468475541 us.
>   FileIOSink.Add.AlternatingAddSize(RunTime): 91.77411527720551 us.
>
> So the relative performance changes are:
>
>  FileIOSink.Add.ManySmall(RunTime): 0.00213x (MUCH faster)
>  FileIOSink.Add.OneLarge(RunTime): 0.884x (slight faster - noise?)
>  FileIOSink.Add.AlternatingAddSize(RunTime): 0.868x (slightly faster - noise?)
>
> https://golem.corp.goog/Revision?repository=dart&revision=102771&patch=17842
>
> Change-Id: Ic73f33299a570096dd05f254982f556767559966
> Bug:https://github.com/dart-lang/sdk/issues/32874
> Tested: unit tests
> CoreLibraryReviewExempt: Performance-only fix for file writes in the VM.
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/285420
> Commit-Queue: Brian Quinlan <bquinlan@google.com>
> Reviewed-by: Alexander Aprelev <aam@google.com>

Bug: https://github.com/dart-lang/sdk/issues/32874
Change-Id: I758f3159e85c837d6ec4a0f3e470b519825ee142
Tested: unit tests
CoreLibraryReviewExempt: Performance-only fix for file writes in the VM.
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/288545
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Brian Quinlan <bquinlan@google.com>
Reviewed-by: William Hesse <whesse@google.com>
2023-03-17 16:13:19 +00:00
Ben Konyi dcd65d0122 [ Benchmarks ] Update SDKArtifactSizes benchmarks to include dart2wasm and DevTools
TEST=N/A

Change-Id: I8633762410c9df753f147b3010294ed56e82e6ee
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289520
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Sigurd Meldgaard <sigurdm@google.com>
2023-03-17 16:08:02 +00:00
Konstantin Shcheglov d362996c9c Issue 51758. Don't consider not ClassElement to be a supertype of a class type alias.
Bug: https://github.com/dart-lang/sdk/issues/51758
Change-Id: I9ffd2b1fc539a569d8ec89c6885359594dd54c0d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289403
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2023-03-17 15:53:38 +00:00
Ilya Yanok 43b74160e0 Fix crash when trying to do cast X to FutureOr<X>
Bug: b/273826476
Change-Id: Ifcaa5c936c87ea494658a547a7514e0fbd0c0b7f
Tested: added a test
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289504
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Ilya Yanok <yanok@google.com>
Commit-Queue: Ilya Yanok <yanok@google.com>
2023-03-17 15:36:34 +00:00
Modestas Valauskas 337d2cc8b1 [ANTLR] Move optional trailing question mark up.
Closes https://github.com/dart-lang/sdk/pull/51742

GitOrigin-RevId: 8aed1ba4ebbd14aa88a74f4f23464e2c24a10c38
Change-Id: I8184a2edc66acc79c51d3838b0849c4a414784fd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/288981
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
2023-03-17 11:33:59 +00:00
Sergey G. Grekhov 8912e03797 [co19] Roll co19 to e8141111c3315b0a9c151fcac0e14656dcfddac5
2023-03-16 sgrekhov22@gmail.com Fixes dart-lang/co19#1933. Generic function instantiation during pattern matching is a compile error (dart-lang/co19#1938)
2023-03-16 sgrekhov22@gmail.com Fixes dart-lang/co19#1939. Missed line added to variable_declaration_A04_t03.dart (dart-lang/co19#1943)
2023-03-16 sgrekhov22@gmail.com Fixes dart-lang/co19#1941. Typo fixed in type_inference_A26_t01.dart (dart-lang/co19#1942)
2023-03-16 sgrekhov22@gmail.com dart-lang/co19#1401. Matching tests for record and object patterns (dart-lang/co19#1934)
2023-03-15 sgrekhov22@gmail.com dart-lang/co19#1401. Matching tests for list pattern (dart-lang/co19#1920)
2023-03-14 sgrekhov22@gmail.com Fixes dart-lang/co19#1930. Make runtime type of collection not assignable to the tested pattern (dart-lang/co19#1936)
2023-03-14 sgrekhov22@gmail.com Fixes dart-lang/co19#1932. Fix compile-time error in matching_logical_and_A02_t02.dart (dart-lang/co19#1935)
2023-03-13 sgrekhov22@gmail.com Fixes dart-lang/co19#1896.Explicit type arguments added (dart-lang/co19#1926)
2023-03-13 sgrekhov22@gmail.com Fixes dart-lang/co19#1925. Missing type arguments added (dart-lang/co19#1927)

Change-Id: I8b10d553f666b96e0b0039a946b7ec821b230951
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289460
Reviewed-by: Alexander Thomas <athom@google.com>
2023-03-17 09:19:24 +00:00
Johnni Winther bf68f9320b [_fe_analyzer_shared] Improve exhaustiveness for cast pattern
This uses the context type when creating the space for a cast pattern
to include the implicitly covered subtypes in the space. This is done
when the context type is a sealed type which means that we can reason
about which of the subtypes of the sealed type that are implicitly
handled by the throw of the cast.

Change-Id: I3a4f14bf6ca82f59a2c2a3c27bb472a8f38c1613
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289222
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2023-03-17 08:10:53 +00:00
Nate Biggs 21737a6c2e [dart2js] Fix type variable detection for interfaces nested in records for RTI.
Change-Id: I9661498582eb170077eb3d58d8a84fab2e2d8bf6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289380
Reviewed-by: Mayank Patke <fishythefish@google.com>
Commit-Queue: Nate Biggs <natebiggs@google.com>
2023-03-17 03:30:14 +00:00
Sam Rawlins fbe4cbf69f Bump linter to 07c4d17, just before new deprecated_member rule
Bug: https://github.com/dart-lang/sdk/issues/50796
Change-Id: I11d1ad107d8da147dd05329938bbe34325dfbb77
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289341
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2023-03-17 03:14:17 +00:00
Konstantin Shcheglov 5604db5fc9 Issue 51661. Fix for SwitchExpression in serialized expressions.
Change-Id: I64a56c8349898b7e2795df9ef1513f9288286668
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/288548
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2023-03-17 00:57:59 +00:00
Joshua Litt 743caee6f0 [js_types] Migrate Dart2Wasm internal interop classes to JS types.
Change-Id: I0cd2ca8d7b254372818beb5af66662dc276dd29e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/288640
Commit-Queue: Joshua Litt <joshualitt@google.com>
Reviewed-by: Srujan Gaddam <srujzs@google.com>
2023-03-16 22:50:05 +00:00
Danny Tuppeny 539dad5657 [analysis_server] Support moving sealed classes in "Move to File" refactor
Change-Id: Idc7b48c5f972a139b0675876d193fbed157ce27b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/288701
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2023-03-16 20:54:34 +00:00
Konstantin Shcheglov 3802bc7e32 Support for RecordTypeAnnotation in constants, in summaries.
Change-Id: I3569b719f61de9e10a80e251918c512f52958d3c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289301
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2023-03-16 20:41:22 +00:00
Sam Rawlins f46c9afc12 [analysis_server] Add type arguments to remaining raw types
The Maps are all JSON, so they become `Map<Object?, Object?>`.

Most other types get a `Object` or `Object?` type argument, and a
few also get `dynamic`.

Change-Id: I097318defed55360b5b0d910bd2d085a121e97b3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/287673
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2023-03-16 20:37:57 +00:00
Danny Tuppeny 454219b371 [analysis_server] Retain body's leading comments when adding curly braces
Fixes https://github.com/Dart-Code/Dart-Code/issues/4440.

Change-Id: Ibff7c0d0a04f3c122d3ffa2297ab3da6c5532ee0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289220
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2023-03-16 19:29:33 +00:00
Kallen Tu 26311db0b5 [cfe] Avoid reporting subtype modifier errors on final supertypes outside of library.
Change-Id: Ib923df6e9fcfb48e3c16a3edd4e308547cdb4348
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/288607
Commit-Queue: Kallen Tu <kallentu@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2023-03-16 19:01:17 +00:00
Sam Rawlins c761de6e3e [analyzer] Move 3 more HintCodes to be WarningCodes, UNNECESSARY_N*
Bug: https://github.com/dart-lang/sdk/issues/50796
Change-Id: I04e8428a45428c02a05e8370a6cb1e9c4cf8030c
TEST=trybots
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289029
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2023-03-16 18:52:18 +00:00
Janice Collins 68353d76a4 Add a flag to disable the new unified_analytics for a single session.
- Adds a new flag, `--suppress-analytics` to the `dart` command to
  disable both the unified and the legacy analytics for a single
  session while deprecating the existing flag, `--[no-]analytics` used
  for disabling the legacy analytics on a single pass.
- Pipelines the flag from `dart` through `dart analyze` and `dart fix`
  to the execution of the analysis server.
- Updates all applicable uses of `dart analyze`, `dart fix`, and the
  analysis_server binary entry points in the SDK to disable analytics
  for the test infrastructure.

Bug: https://github.com/dart-lang/sdk/issues/49445
Change-Id: I1302cad7e04b21454aa7d9e8ee72a876b231377d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/287661
Reviewed-by: William Hesse <whesse@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Janice Collins <jcollins@google.com>
2023-03-16 18:00:57 +00:00
Derek Xu ec39319bf7 [VM/Timeline] Add a synchronization monitor to TimelineTrackMetadataRace test
The test is still timing out on many configurations. Hopefully changing
the spin lock to a monitor fixes this.

TEST=TSAN, CI

Issue: https://github.com/dart-lang/sdk/issues/51654
Change-Id: I03d1199c18a225bbd621613211ef6a4ceee93ac7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289000
Commit-Queue: Derek Xu <derekx@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2023-03-16 17:46:28 +00:00