This tests static analysis on the ddc patch, but not the dart2js one yet.
It also fixes js/null_test.dart to ensure it passes. Note, that test was broken independent of NNBD.
Change-Id: I5a6bfdfaac845eaba6f154d30f2c1e30199574d0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131300
Commit-Queue: Vijay Menon <vsm@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Running all existing tests with/without lazy async stacks ensures that
the existing functionality for --lazy-async-stacks does not regress.
There are still a few smaller things to be done in the debugger for lazy
async stacks.
This CL also ensures:
* The inner closure, i.e. AsyncClosure/AsyncGenClosure, is not
inlined if FLAG_lazy_async_stacks is on.
* Fixes a crash in dartkb mode, when the function of the Bytecode
object is null.
* Does a simple integration of the lazy async stacks in debugger.cc -
to ensure a stack is returned via vm-service.
Issue https://github.com/dart-lang/sdk/issues/37668
Change-Id: Ibc1e887a457e2c456ae65d9ed5fa92434f122a32
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131825
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Wrapping a legacy type will cause the legacy-ness to be stripped off by design.
This causes confusion when trying to unit test the runtime subtype checks so we
are now simply avoiding it here.
Introduce a `unwrap()` helper method that will attempt to upwrap any type that
isn't legacy. Legacy types are simply returned unchanged because they are
already unwrapped.
Copies the other helper methods from runtime_utils.dart to
runtime_utils_nnbd.dart so they can be updated with the special unwrapping logic
for legacy types.
Change-Id: I21ff24b766a1f7a569181a2e1c47233320751c66
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131707
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Mark Zhou <markzipan@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
Test exercises alignment on stack, will currently fail on iOS arm64.
In addition, the Dart functions used as callbacks in tests now print their arguments for debugging purposes.
Issue: https://github.com/dart-lang/sdk/issues/39637
Splitting test off large CL (https://dart-review.googlesource.com/c/sdk/+/129081) to be able to land separately.
Change-Id: Iba3c63338f5d91d6e3819e54c166bbfade48d53f
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,app-kernel-linux-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-kernel-precomp-linux-debug-x64-try,vm-dartkb-linux-release-x64-abi-try,vm-kernel-precomp-android-release-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try,vm-kernel-precomp-android-release-arm_x64-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,dart-sdk-linux-try,analyzer-analysis-server-linux-try,analyzer-linux-release-try,front-end-linux-release-x64-try,vm-kernel-precomp-win-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131074
Reviewed-by: Teagan Strickland <sstrickl@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
* Move each section of the original file into a new test file.
* Remove the use of multi-tests entirely to avoid running ~90% of these
tests 5 times each.
* async_star2_test/02 became cancel_while_paused_at_yield_test.dart. I will
approve the existing failures of this newly named test.
* All other sections marked as multi-tests actually appear to be passing on
all configurations so they didn't need to be broken out.
* Cleanup now unnecessary lines in the status file.
Change-Id: I5d62a35ffff1248532fa9ffade1a7259f83814da
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130890
Commit-Queue: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
This also reverts the use of indirection for `==` during global inference, as it
turns out the bulk of edges from that selector were added because of the missing
static type data.
Change-Id: I970fea214983c7b2350466fc932ef45d6f7ad96e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130501
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Sigmund Cherem <sigmund@google.com>
This reverts commit 4b5d757bea.
Reason for revert: This intentionally failing test should have been reverted immediately, after verifying that it was detected by the CI.
Original change's description:
> Reland "Reland "[infra] Add failing test to test CI systems and approvals workflow""
>
> This reverts commit 84a4bbcabc.
>
> Reason for revert: Another try to land, to get more logging data.
>
> Original change's description:
> > Revert "Reland "[infra] Add failing test to test CI systems and approvals workflow""
> >
> > This reverts commit c716068538.
> >
> > Reason for revert: Trying again to diagnose failure to copy approvals.
> >
> > Original change's description:
> > > Reland "[infra] Add failing test to test CI systems and approvals workflow"
> > >
> > > This reverts commit 25def20f5d.
> > >
> > > Reason for revert: Retrying, now that we are copying CQ approvals for all commits in the blamelist of a builder.
> > >
> > > Original change's description:
> > > > Revert "[infra] Add failing test to test CI systems and approvals workflow"
> > > >
> > > > This reverts commit e578eeb235.
> > > >
> > > > Reason for revert: The reverted commit is a test of the new approvals UI for tryjobs and the CI. It includes an intentionally failing test, that we now remove again.
> > > >
> > > > Original change's description:
> > > > > [infra] Add failing test to test CI systems and approvals workflow
> > > > >
> > > > > The failing test lib_2/collection/failing_list_test.dart is added,
> > > > > which imports dart:io. So it will be a compile-time failure on
> > > > > some dart2js platforms, and a run-time failure on dart:io.
> > > > >
> > > > > This commit is just to test the UI and backend for test failure
> > > > > approvals on tryjobs and on CI results. It will be reverted after
> > > > > the CI builders have run on it.
> > > > >
> > > > > Change-Id: Icc3d11e72511cb0dbd9a62cb4fa80e754c203c8c
> > > > > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/127883
> > > > > Reviewed-by: Jonas Termansen <sortie@google.com>
> > > >
> > > > TBR=whesse@google.com,sortie@google.com
> > > >
> > > > Change-Id: I32b900e25dc562ac88f5cb496cdbca726fc70445
> > > > No-Presubmit: true
> > > > No-Tree-Checks: true
> > > > No-Try: true
> > > > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/127885
> > > > Reviewed-by: William Hesse <whesse@google.com>
> > >
> > > TBR=whesse@google.com,sortie@google.com
> > >
> > > Change-Id: I64e528131c779c8d20c007ff715b57b599cd3f07
> > > No-Presubmit: true
> > > No-Tree-Checks: true
> > > No-Try: true
> > > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/127886
> > > Reviewed-by: William Hesse <whesse@google.com>
> > > Reviewed-by: Jonas Termansen <sortie@google.com>
> >
> > TBR=whesse@google.com,sortie@google.com,athom@google.com
> >
> > Change-Id: Icf68fd813d5f8f98d5ebf40c34e35811e8fffaf5
> > No-Presubmit: true
> > No-Tree-Checks: true
> > No-Try: true
> > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/127892
> > Reviewed-by: William Hesse <whesse@google.com>
>
> TBR=whesse@google.com,sortie@google.com,athom@google.com
>
> Change-Id: Ic63f74bf660e71e5e1853a391013368ce640bbc1
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/127895
> Reviewed-by: William Hesse <whesse@google.com>
> Reviewed-by: Jonas Termansen <sortie@google.com>
TBR=whesse@google.com,sortie@google.com,athom@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Change-Id: Ib82dadb2c82f2329164b29e60997320b775c104d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130378
Reviewed-by: William Hesse <whesse@google.com>
This change:
* adds the `--use-old-rti` flag to revert to the old behavior
* enables the new behavior by default
* changes the -rti- builders to run the old rti instead of the new rti
* documents the change in CHANGELOG.md
I've kept around the logic as `useNewRti` to avoid swapping all the conditions
in the compiler.
Change-Id: I773ac33b658cb60f72e0b6beef83375abec31bad
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/127492
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
The resolution-world-builder and impact transformer were holding onto a
class-hierarchy-builder in dart2js, which uses a lot of space.
On a some artificial sample apps with thousands of classes this
reduces the overall memory capacity by 25%. On a large internal app
this reduced the overall memory capacity from 13G to 11G.
Change-Id: I5d0d40764649364f2cd2411ef1346812beb411c4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/129544
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Fixes#39074
DDC emits Dart code that can usually be called with the same semantics
as JS there is no guarantee that a function passed to JS and then
invoked successfully was wrapped with `allowInterop`. The wrapping is
always required in Dart2JS. To make DDC more strict, add interceptors
that check for the usage of `allowInterop`.
Whenever a JS interop function or setter is passed an argument which is
statically typed as a Function, but not wrapped with `allowInterop` at
the call site, wrap it with `assertInterop` which will check the
argument at call time and fail with a clear error if it was not wrapped.
Whenever a JS interop function is torn off, either at the top level or
from an instance, wrap it with a function that will also inject these
checks at runtime.
There are still holes where we can't catch the mistake:
- An argument which is statically dynamic and a Function at runtime
won't be caught.
- A Function which is stored in a collection won't be caught.
- A JS interop definition where a getter returns a Function which takes
a Function as an argument is not checked.
- A dynamic call through to javascript is not checked.
Changes:
- Refactor `_isJsLibrary` and add `isJsMember`, and `isAllowInterop`
utilities to determine what needs wrapping.
- Update `assertInterop` to give a more clear error when it fails, and
to ignore non function arguments.
- Add `tearoffInterop` to wrap a function an ensure that any function
typed arguments are wrapped.
- Inject `assertInterop` around Function arguments passed to JS methods.
- Inject `assertInterop` around Function arguments passed to static or
instance JS setters.
- Inject a runtime wrapper around static or instance Function tearoffs.
- Add a test covering all flavors of checks that are supported.
- Change the interop expando to an `Expando<dynamic>` in the NNBD SDK to work
around a stricter type check. https://github.com/dart-lang/sdk/issues/39971
Potential improvements:
If the `tearoffInterop` turns out to be too heavy, we could loosen it so
that we only wrap methods if any of their argument types are statically
declared to be a Function.
Change-Id: Ibc92df5b54e1a041b4102a07b8398b774b6bd1d2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/128462
Commit-Queue: Nate Bosch <nbosch@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
The check of not removing 64-bit->32-bit truncating conversions was in the wrong place.
Fixes: https://github.com/dart-lang/sdk/issues/39885
Fixes: https://github.com/flutter/flutter/issues/47454
Change-Id: Ic32a13cbf7ec622692cdca86b3237dae1c0f1cef
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,app-kernel-linux-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-kernel-precomp-linux-debug-x64-try,vm-dartkb-linux-release-x64-abi-try,vm-kernel-precomp-android-release-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try,vm-kernel-precomp-android-release-arm_x64-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,dart-sdk-linux-try,analyzer-analysis-server-linux-try,analyzer-linux-release-try,front-end-linux-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/129284
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>