This allows us to collect stats about language-style tests as follows:
./tools/test.py -m release -c dart2analyzer -r none --preview-dart-2 --report \
language language_2 corelib corelib_2
As of this morning, the command above has 87% of the tests passing.
Change-Id: I0f84211d5f33659d5923601267367be90c578107
Reviewed-on: https://dart-review.googlesource.com/3381
Reviewed-by: William Hesse <whesse@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Interesting changes:
- A static getter colliding with an inherited non-static setter is a
compile error, not a type warning.
- Trying to call a setter on what is only a getter is a compile error
with no runtime behavior.
- Add support to test.dart for negative tests in DDC.
BUG=
R=jcollins@google.com
Review-Url: https://codereview.chromium.org/3005643002 .
Obfuscation is controlled by obfuscate flag in Dart_IsolateFlags.
Obfuscation of identifiers is performed during script tokenization - when TokenStream is generated from the source. All kIDENT and kINTERPOL_VAR tokens are renamed consistently using a persistent obfuscation map stored in ObjectStore::obfuscation_map.
Some identifiers (pseudo-keywords, arithmetic operators, builtin recognized methods and entry-points) are not renamed to keep name based lookups from breaking. All other identifiers are renamed.
Constant instances of Symbol-s (both created via literal syntax #ident and using constant constructor const Symbol("ident")) are renamed consistently with corresponding identifiers.
Script urls and Library urls and names are also obfuscated.
Obfuscation map can be dumped as a JSON array at the end of precompilation using Dart_GetObfuscationMap API.
BUG=https://github.com/dart-lang/sdk/issues/30524R=rmacnak@google.com
Review-Url: https://codereview.chromium.org/3003583002 .
This mainly splits along compiler lines, but uses runtime for a couple
of things -- VM and Flutter mainly.
I did most of the work automatically by hacking up the migration script
to re-migrate the existing file, but I also went through and manually
cleaned the result up as best I could.
R=bkonyi@google.com, jcollins@google.com
Review-Url: https://codereview.chromium.org/2993043002 .
This will enable --use-kernel tests in the dart2js bots.
After this change, running our tests will change a little bit, either of these
would work:
Option A: --use-sdk (host-checked not allowed)
python tools/test.py -m release \
-c dart2js -r d8 --dart2js-batch --report \
--dart2js-with-kernel --use-sdk \
language corelib library_2 corelib_2 \
dart2js_native dart2js_extra
Option B: pass --library-root, --host-check works here.
python tools/test.py -m release \
-c dart2js -r d8 --dart2js-batch --report \
--dart2js-with-kernel --host-checked \
--dart2js_options="--library-root=out/ReleaseX64/dart-sdk/" \
language corelib library_2 corelib_2 \
dart2js_native dart2js_extra
In the future, when fasta supports compiling sdk with @patch files, we will
be able to remove the --library-root option and simply compile the SDK from
sources at that point.
BUG=
R=johnniwinther@google.com
Review-Url: https://codereview.chromium.org/2988063002 .
This required munging a bit of test.dart code too to tease out some
dependencies, but the changes are minor. I considered moving all of
test.dart out into a package and making the status file library a
public one that other packages in the repo could import but this seemed
like the less intrusive change.
R=bkonyi@google.com
Review-Url: https://codereview.chromium.org/2984203002 .
Revert "Precompiler doesn't report Dart 2.0 static type errors yet."
This reverts commit 7af2d86ed3.
Revert "Move absstract_exact_selector back into the language tests. (#30169)"
This reverts commit 452d2d0840.
Revert "Set up directories for migrated Dart 2.0 tests and migrate a couple. (#30149)"
This reverts commit 47985d6dbd.
R=zra@google.com
BUG:dartbug.com/30171
Review-Url: https://codereview.chromium.org/2979073002 .
* Set up directories for migrated Dart 2.0 tests and migrate a couple.
- Create new "_2" directories where tests that have been validated as
ready for Dart 2.0 will end up.
- Create empty status files for each directory.
- Add those directories to the set of default selectors you get when you
run test.py. This gets the VM bots running them.
- Get the DDC bots running those suites.
- Move abstract_exact_selector_test over to dart2js since it's a
dart2js-specific regression test and not an actual language test.
- Migrate corelib/apply_test.dart.
- Delete abstract_beats_arguments[2]_test.dart since that code is
statically wrong in 2.0 and can't be run.
This doesn't get the dart2js bots running the new suites. I'll email
the relevant folks to get help with that.
* Resurrect abstract_beats_arguments_test.dart.
It usefully checked that an implementation reports an warning (now
error) if you construct an abstract class.
Also added support to test.dart to mark a test as expecting to
generate a compile error in the test itself. That way, the status file
reflects what is *wrong* about the current status, not what is *right*.
* Change static error syntax to match front_end notation.
* Migrate abstract_getter_test.
* Use "|" as the separator between module path and name.
":" is already a path character in Windows. This is why the
dartdevc tests aren't working on Windows. Because they try to do:
-sC:/some/path/blah.dart:blah
And it splits at the first ":". Oops.
* Switch to "=" for separating module path from name.
It looks a little funny when used with "--summary=", but it works fine
and is very unlikely to be used for anything else on any platform
(since we already use it as the separator between arg name and value).
This involves a few pieces:
- Add support to DDC for specifying the module name associated with a
given summary. This lets test.dart invoke DDC using summaries in the
build directory outside of the directory containing the test itself.
- Add support to the build scripts for building the packages. This adds
a new GN target that builds everything needed to run test.dart with
dartdevc. In particular, it invokes build_pkgs.dart to compile the
relevant packages to JS+summary so that the tests can use them.
This requires some changes to build_pkgs.dart so it can output to a
given directory.
- In test.dart, when tests are compiled with dartdevc, pass in the
summaries for the packages so they don't get compiled in. Then, when
the test is run, configure require.js with the right paths to their
JS files so they can be loaded.
I also removed a bunch of unneeded buildDir parameters being passed
around the various CompilerConfiguration class methods now that they
have direct access to the configuration.
Fix#29923.
R=vsm@google.com, whesse@google.com, zra@google.com
Review-Url: https://codereview.chromium.org/2955513002 .
It multiplexed a bunch of different events onto a single stream. But
every single listener on that stream immediately demuxed them and only
cared about a subset of the events.
So I made separate streams for each event. Other minor clean-ups too.
R=sigmund@google.com, whesse@google.com
Review-Url: https://codereview.chromium.org/2957703002 .
It's still big and monolithic, but it's not as big as it was before.
- Remove old unused Polymer stuff.
- Move some of the logic out into a helper function.
- Other small tweaks.
R=whesse@google.com
Review-Url: https://codereview.chromium.org/2949823003 .
- Merge CommandOutputImpl and CommandOutput. There were no classes that
implemented CommandOutput that didn't extend the Impl.
- Remove "Impl" from the other class names.
- Make stuff private when possible. Likewise final.
- Other tiny style changes.
R=whesse@google.com
Review-Url: https://codereview.chromium.org/2946783002 .
It can compile and run tests on Chrome. There are a lot of failing tests
that I (or the team) will need to triage, but I think at least basic
tests are working as expected.
There is code that could be cleaned up to more neatly factor how dart2js
and dartdevc are handled now that there are two separate compilers to
JS. There's also some redundant code between the path for testing
compile errors (enqueueStandardTest()) and the path for running a test
in the browser.
R=whesse@google.com
Review-Url: https://codereview.chromium.org/2947473002 .
This new flag value specifies the directory in which the VM should look
up the platform.dill file. A future change will require the VM to load
another kernel binary from disk. This binary will also live in the same
directory that --kernel-binaries specifies. This way, we avoid adding a
different flag for each of the different binaries.
R=asiva@google.com
Review-Url: https://codereview.chromium.org/2933203004 .
- Get rid of separate CommandBuilder class and singleton pattern. It
was being passed around explicitly even though half of the places
that received a CommandBuilder as a parameter still directly called
CommandBuilder.instance instead of using it.
- Get rid of Command caching. As far as I can tell, it makes no
measurable difference in runtime performance or memory usage. Even
with a large invocation of a lot of configurations and tests, the
Command classes don't seem to be a significant use of memory.
- Shorten the factory names. "get" adds no value, and we know it
returns a "Command" since it's on Command.
R=whesse@google.com
Review-Url: https://codereview.chromium.org/2933973002 .