This does a few optimizations to improve the performance of the analyzer
when watching for generated files:
- We do all the polling in a separate isolate.
- We detect when Bazel finished running and only poll afterwards.
- We use a batch interface and deliver all changes at once (instead of
one by one). This allows us to avoid resetting caches more often than
necessary.
I had to remove one of the larger tests and created an integration test
instead, since the code for detecting the Bazel builds relies on
`dart:io` directly (`ResourceProvider` does not expose a way to
check for symlink targets).
Since this required a bit more code, I've decided to create a separate
file for it (`bazel_watcher.dart`).
Change-Id: I6c2383e7fd4348ab8af1af639b10db519c7a2f33
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183010
Commit-Queue: Michal Terepeta <michalt@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Unboxed int64 are supported on all architectures which Dart VM supports.
The only was to disable support for unboxed int64 is to use
--no-unbox_mints flag, which is not used and not tested.
This change cleans up this flag and corresponding compiler predicates.
TEST=ci
Change-Id: Ib667319eaf87f0ded8bf9d9505272a3693a9e63e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191761
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
The full workflow for an end-to-end test:
1) Perform test/compiler options pre-initialization.
2) Start an instance of Chrome (with 1 tab) and save a persisted debug connection for use in all tests.
3) For each separate Dart program to be tested:
1) Create inside a temp directory the HTML bootstrapper, DDC-compiled JS sources, and auxiliary JS files (dart_library.js or require.js).
2) Initialize a DDC ProgramCompiler/IncrementalCompiler and perform a full compile of the program, saving the compiler's state for subsequent incremental compiles.
3) Enable the debugger and set a URL breakpoint at the program's main JS entrypoint.
4) For each test for this Dart program:
1) Navigate to the HTML bootstrapper, pausing when the target module is loaded (at the breakpoint set above).
2) Set a breakpoint at a JS location translated from a Dart breakpoint ID via source maps.
3) Resume the debugger, pausing at that breakpoint. Remove the breakpoint.
4) Reconstruct the local JS scope, then evaluate the Dart expression.
5) Evaluate the JS expression inline, then compare results with expectations.
5) Disable the debugger to clear its state.
4) Shut down Chrome and clean up any temporary directories.
Other notes:
* Supports bootstrapping/compilation on AMD and DDC module systems only (though expression eval is only supported on AMD)
* Requires that Dart breakpoint IDs be set declaratively (no support for columns)
The test structure/flow is subject to change. While I port existing tests, Dart programs will consist of inline source file strings with simple breakpoints. In the future, we want to allow more complicated Dart programs to be specified (like in the modular test framework) and more complicated expression evaluation test patterns (rather than allowing only a single evaluation per test).
Change-Id: I5de7cfa66991fd14b24fa16edd1615f55c041ae3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190962
Commit-Queue: Mark Zhou <markzipan@google.com>
Reviewed-by: Anna Gringauze <annagrin@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
The CloneVisitorNotMembers contains a mapping from variables to their
corresponding clones. The ListFactorySpecializer special cased access
to this mapping to support conditional cloning. When dart2js switchted
to used the new method invocation encoding, this left the
LocalFunctionInvocation unhandled, leading to null check error when
local functions where invoked in the closure passed to List.generate.
This CL makes this mapping private and adds getter/setter methods for
lookup and registration. The ListFactorySpecializer now instead overrides
the getter to support conditional cloning instead of handling each use
case.
Bug: b/183083319
Change-Id: I2fd3b79137c51a424f17127b502e6a945c6796a9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191901
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
This is part of a series of changes to add support for SDK expression eval tests.
This change:
* Adds SDK dependencies on webkit_inspection_protocol.dart and browser_launcher.dart
* Adds dev dependencies to DDC
Change-Id: I025a1f1b59e00858a33016818b6746c57c9caec4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190961
Commit-Queue: Mark Zhou <markzipan@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Anna Gringauze <annagrin@google.com>
For async closure parsed_function_ could be an outer function
which is unrelated to the closure. So, ScopeBuilder should not
attempt to mark parameters of parsed_function_ with
set_is_forced_stack() if it sees kSyncYielding FunctionNode.
Parameter variables might not be even allocated if
async closure is used inside an instance field initializer
and parsed_function_ is a constructor.
TEST=runtime/tests/vm/dart/regress_45306_test.dart
Fixes https://github.com/dart-lang/sdk/issues/45306
Change-Id: I1b0082cb0e217039c43f19b35d77190493069edc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191325
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2021-03-17 sgrekhov@unipro.ruFixes#1017. Use => for setter returning value tests
2021-03-16 irina.arkhipets@gmail.com Issue #996: more tests for Generic functions as type arguments and bounds added.
2021-03-16 sgrekhov@unipro.ruFixes#1005. Description updated for method_definition tests
2021-03-16 sgrekhov@unipro.ruFixes#1011. Expect an error if non-function type is called as a function
2021-03-16 irina.arkhipets@gmail.com Issue #996: tests for Generic functions as type arguments and bounds re-factored, more tests added.
2021-03-15 irina.arkhipets@gmail.com Issue #996: tests for Generic functions as type arguments and bounds added.
2021-03-15 irina.arkhipets@gmail.com Issue #996: tests for Generic functions as type arguments and bounds added.
2021-03-15 sgrekhov@unipro.ru Missed experiment flag added
2021-03-12 irina.arkhipets@gmail.com Issue #996: tests for Generic functions as type arguments and bounds added.
2021-03-12 sgrekhov@unipro.ru#993. Added tests checking that Struct fields cannot have initializers
2021-03-12 sgrekhov@unipro.ru#993. Tests for not external members of Struct subtype added
2021-03-11 sgrekhov@unipro.ru#993. Use package ffi in co19 ffi tests
2021-03-09 sgrekhov@unipro.ruFixes#995. Annotations with type arguments tests added
2021-03-09 irina.arkhipets@gmail.com Issue #997: existing triple-shift tests corrected.
2021-03-09 irina.arkhipets@gmail.com More fixes for #535: split constant evaluation tests because static behavior of the strong and weak mode is different.
2021-03-04 sgrekhov@unipro.ru#993. Array tests added
2021-03-04 sgrekhov@unipro.ru#993. Pointer equality tests added
2021-03-03 sgrekhov@unipro.ru#993. Pointer.elementAt() tests added
2021-03-02 sgrekhov@unipro.ru#993. Pointer.cast() tests added
2021-03-01 sgrekhov@unipro.ru#993. Pointer tests added
2021-03-01 sgrekhov@unipro.ruFixes#936. Change expected result according to the new left top rule
2021-02-26 irina.arkhipets@gmail.comFixed#998: tests checks output streams correctly now.
2021-02-26 sgrekhov@unipro.ru#993. IntPtr tests added
2021-02-26 sgrekhov@unipro.ru#993. More Struct tests added
2021-02-25 irina.arkhipets@gmail.com Tests updated, missing issue tags added.
2021-02-25 sgrekhov@unipro.ru#1003. Isolate test fixed to not to be a racy
2021-02-25 sgrekhov@unipro.ru Issue numbers added
2021-02-24 sgrekhov@unipro.ru Issue number added
2021-02-24 sgrekhov@unipro.ru#988. Typo in error message fixed
2021-02-24 sgrekhov@unipro.ru#988. Fix test expectations
Cq-Include-Trybots: dart/try:analyzer-nnbd-linux-release-try,dart2js-nnbd-linux-x64-chrome-try,ddc-nnbd-linux-release-chrome-try,front-end-nnbd-linux-release-x64-try,vm-kernel-nnbd-linux-debug-x64-try,vm-kernel-nnbd-linux-release-simarm64-try,vm-kernel-nnbd-linux-release-x64-try,vm-kernel-nnbd-mac-release-x64-try,vm-kernel-nnbd-win-release-x64-try,vm-kernel-precomp-nnbd-linux-debug-x64-try,vm-kernel-precomp-nnbd-linux-release-simarm64-try,vm-kernel-precomp-nnbd-linux-release-x64-try
Change-Id: I718644028b1d2a9fbba0c7efdf2923bb67184fde
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191409
Reviewed-by: William Hesse <whesse@google.com>
CodeBreakpoint class tracks patching of the call targets for the purpose of routing the call to the debugger runtime.
With this CL CodeBreakpoint instance is managed by GroupDebugger, debugger class owned by IsolateGroup, and can be associated with multiple BreakpointLocation, one location per isolate that set a breakpoint at particular code location.
TEST=observatory/tests/service/break_on_function_child_isolate_test
Issue https://github.com/dart-lang/sdk/issues/36097
Change-Id: I3b3d0974a0fb9668742e5c1e2a2ce13b84b1d630
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190732
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
* Add quotedAndCommaSeparatedWithAnd getter to List<String> extension.
This extension getter allows multiple fields to be initialized in
ctor initializers.
* Make all ErrorBuilder fields private which enabled analysis that all
could also be final.
* Refactor ErrorBuilder.code to not be `late final` by using a private
constructor and a factory constructor.
* Refactor TopLevelOptionValidator _valueProposal and _warningCode to
not be `late final` by initializing them in ctor initializers.
* Remove the TrueOrFalseValueErrorBuilder class. The class contained
no useful information and was basically a wrapper around
`reporter.reportErrorForSpan`. Calling this inline simplifies.
* Change reference in parser.dart as Analysis Server renamed it to
[_builder] when I refactored one of the fields in options.dart.
Change-Id: Ica867772fca5d3442ab754e588ec07829a822c2d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191462
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
* Two extension methods were moved from analysis_server to analyzer, to replace
identical top-level helper functions in analyzer.
* Add nodes2 which returns a YamlMap with YamlNode keys.
* Privatize two static functions in Merger.
Change-Id: If54e73d6e8133bf1b2a3af809d6bb732c77ab9be
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191381
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Some IR instructions (e.g. RawStoreField) can never deopt by-design. Some
instructions are calling runtime entries but those are leaf calls (e.g.
InvokeMathCFunction). Some are synthetic IR instructions that never
actually emit code (e.g. Constraint). Some IR instructions cannot deopt
due to inputs (e.g. Boxing instructions whose value is guaranteed to fit
into Smi).
Part of https://dart-review.googlesource.com/c/sdk/+/190481
TEST=Existing test suite.
Change-Id: I770b7d094ef36221d357157c736710476fd6bfb2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190482
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
This test failed because it had a test outcome expectation comment in
a library which is not the entry point (cf. #44990). This CL changes
the test such that said comment is located in the entry point. The
trade-off is that this test now has a "reverse" import: A library
with null safety enabled imports a legacy library (but, apparently,
this does not cause the test to fail).
PS: This means that we don't have a test that will go green when #44990 is resolved.
Change-Id: Ie94bff22ce75bd662752c5814917e141fafc72ed
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/191365
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>