While working on #32274 I noticed that #32087 also impacted debugging
experience in the external debuggers like VS Code - IDE attempts to
load non-existent local sources for core libraries, instead of
asking Service for their source.
To resolve this I moved work-around we placed in stack trace formatting
futher up the flow into kernel loader, which will now rewrite urls
for all core library scripts as classes are being created.
Bug: 32087
Change-Id: I2175a041e5fdcc9958bfccb2af724c37c2435f94
Reviewed-on: https://dart-review.googlesource.com/43021
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
The syntax is still reatined in the language/ directory, and there is no
Dart 2 behavior corresponding to what is supposed to be tested.
Change-Id: If395922760fb6d9a7b0263aa2cc76288600394fe
Reviewed-on: https://dart-review.googlesource.com/43023
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
This reverts commit 52d1b4e96d.
Reason for revert: Analyzer and DDC do not support the super-mixin fix and flag, so the new test fails on them. The test needs to either be marked as failing on them, or support needs to be added and work in the test framework.
Original change's description:
> Fix a bug in Kernel's mixin elimination
>
> Mixin elimination copied factory constructors from the mixin class to
> the mixin application class. This could be observed as an unbound
> type parameter which led to a crash in the VM. Fixes
> https://github.com/dart-lang/sdk/issues/32267.
>
> Change-Id: I87b70a35d11c364739d01e261adf5329d492d8cf
> Reviewed-on: https://dart-review.googlesource.com/42922
> Reviewed-by: Jens Johansen <jensj@google.com>
> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
TBR=vegorov@google.com,jensj@google.com,kmillikin@google.com
Change-Id: I4a0bcf0b323c9adef7e5dc7d9019b6aafe40509d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/42960
Reviewed-by: William Hesse <whesse@google.com>
Fix test expectations.
Improve test (overly complex).
Mark tests/isolate as immutable to the presubmit script (like other migrated Dart 1 test directories).
(Gardening)
Change-Id: Iec59c59ca992b3dacafbf82176e4e8bd8c5bd3c5
Reviewed-on: https://dart-review.googlesource.com/42945
Reviewed-by: William Hesse <whesse@google.com>
It turns out that the special case for FutureOr<void> that I added in
https://dart-review.googlesource.com/c/sdk/+/35920 was misunderstood,
nobody really wanted it.
This CL removes all references to `FutureOr` in generalized-void.md,
which removes that special case and also the concept of types that are
"void equivalent" (because such types are not used any more).
The message here is that we are now more consistent in our protection
of developers against accidentally discarding a value which is
meaningful (just like `void foo() { return 42; }`), because they've
forgotten that the return type is `void`.
Change-Id: Ia4e6e00b2d33ff434923de7eb78d000cd7cc1c3e
Reviewed-on: https://dart-review.googlesource.com/41822
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
The changes in addSource are so that the driver gets the convertedPath
(newFile already converts).
The change in the test is to format a path for importing on Windows - it
seems that importing a file with an absolute path is a bit wonky on
Windows (I presume since this is testing imports it's using absolute
paths for a reason).
The helper in the Mixin is for doing the conversion from a Windows path
to an importable version of it (this has many questions to answer and
maybe already exists somewhere?).
See #32095.
Change-Id: Ifed137ac354f9d0527344020c719e0c3c81ccf3e
Reviewed-on: https://dart-review.googlesource.com/42681
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This hand-built JSON fails on Windows because the paths being inserted
only have a single slash ("C:\test.dart") but in the real results the
JSON is encoded correctly and hhas two paths.
This works around the issue by JSON-encoding the filename but really the
whole object should be serialised to JSON properly.
Bug: https://github.com/dart-lang/sdk/issues/32226
Change-Id: I8aa418e8e3e6377ed01fe3bbecc3242f3a012629
Reviewed-on: https://dart-review.googlesource.com/42742
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
We were avoiding it in most cases, but a few slipped in.
Also refactors a few `uri.toString() == value` to test the scheme and
path, avoiding the expensive `Uri.toString()` call.
Change-Id: I7500a1fa9139b0cc0f2d5bd6d899f6563ec402b8
Reviewed-on: https://dart-review.googlesource.com/42463
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Jenny Messerly <jmesserly@google.com>
We have decided to move to a different API for Fasta/Analyzer
integration, one that doesn't involve compiling to Kernel or observing
type inference. The listener API will become broken, so let's just
remove it before that happens.
We lose the ability to trace type inference so let's restore that
ability next. The analyzer's resolution storer is not used, but that
code has been left. The resolution applier will no longer work
without the resolution storer, so those tests have been disabled.
Change-Id: If9ac5aba2d5de7788d8a65f7fa8410599e636d21
Reviewed-on: https://dart-review.googlesource.com/42400
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
This reverts commit ef51b33f22.
Reason for revert: Issue from initial land was fixed in 076db33f03.
Original change's description:
> Revert "[kernel] Don't always treat doubles as constants"
>
> This reverts commit 12407c3ea0.
>
> Reason for revert: co19/Language/Expressions/Object_Identity/double_t01 fails in -c dartkp -r dart_precompiled mode.
>
> Original change's description:
> > [kernel] Don't always treat doubles as constants
> >
> > Previously, when the VM parsed a doubles from the dill file it passed
> > control over to the constant evaluator which would then case the
> > value and canonicalize it.
> > That doesn't really seem to make sense when its not used in a const
> > context, nor is it done the same way for integers for instance.
> >
> > This CL changes that and treats doubles the same way as integers.
> >
> > Below timings are statistics run through "ministat" based on 5 runs
> > of each configuration (now and before). The timings is for running
> > the dill file with the VM, i.e. the dill file was precompiled via
> > fasta.
> >
> > Program adding 50,000 doubles to a list and prints the last one:
> >
> > -56.6 +/- 28.2389
> > -10.9988% +/- 5.48753%
> > (~510 ms -> ~460 ms)
> >
> > Program adding 1,000,000 doubles to a list and prints the last one:
> >
> > -3177.2 +/- 263.54
> > -31.4643% +/- 2.60987%
> > (~10 seconds -> ~7 seconds)
> >
> > Hello world program:
> >
> > No difference proven at 95.0% confidence
> >
> > Change-Id: I7dd748e759b3e433bc806b2ef2505d29f0b109b6
> > Reviewed-on: https://dart-review.googlesource.com/42000
> > Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
> > Commit-Queue: Jens Johansen <jensj@google.com>
>
> TBR=ahe@google.com,vegorov@google.com,jensj@google.com
>
> Change-Id: If8efa9917c009f2df68a3ef00331ab45bf8bf67b
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://dart-review.googlesource.com/41981
> Reviewed-by: Jens Johansen <jensj@google.com>
> Commit-Queue: Jens Johansen <jensj@google.com>
TBR=ahe@google.com,vegorov@google.com,jensj@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Change-Id: I3c20797f585057e8f77e917918926dcfa921df0a
Reviewed-on: https://dart-review.googlesource.com/42720
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
This CL adds two new kernel tools which can answer questions about
a dill file:
* count_breakdown.dart
Enumerates the different node types in the provided dill file and
counts them.
This has proved useful in the past to e.g. see how many doubles are
included in Flutter.
* size_breakdown.dart
Gives an overview of which parts of the dill file contributes how many
bytes.
This has proved useful in the past to see that the string table gets
huge when we have many doubles (because we currently save doubles in
kernel as strings).
It also adds error handling and usage information to existing tools.
Change-Id: Ie2ce9e4b8806d5975dba8f57445705a840be3474
Reviewed-on: https://dart-review.googlesource.com/42660
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
For example, hover now works on `async` in `async.scheduleMicrotask`:
import 'dart:async' as async;
main() {
async.scheduleMicrotask(() { print('hi'); });
}
This does not change the import line or types, as neither of those
currently supports hover.
Change-Id: I4d9d61fb4e67ebda02cc6c1ce982b35b31d799bc
Reviewed-on: https://dart-review.googlesource.com/42086
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Vijay Menon <vsm@google.com>
Before this CL the constant propagator relied on two objects being identical
only if a.raw() == b.raw().
This is only the case if they have been canonicalized, which doubles and
ints shouldn't have to be.
This CL fixes it and introduces a few tests (one of which -cdartkp would have
failed prior to this CL).
NOTE: This should only change the behavior of precompiled mode, and only so
that it is more correct.
Change-Id: I4380ce4d3292fa15d728b0572403cb7ed4d0582c
Reviewed-on: https://dart-review.googlesource.com/42620
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>