My initial goal was just to move some of the HTML tests off unittest,
but that ended up slurping in some other changes as well. I haven't
finished going through all of the tests, but this puts the
infrastructure in place and fixes a batch of them. I'll do more next.
Changes:
- Add a "minitest" package. This shims just enough of the unittest/test
API to make it easy to swap it out for unittest without having to
rework the entire test.
- Go through the HTML tests from A-J and change them to use minitest
when possible. The ones that aren't possible use asynchrony.
Minitest doesn't support async tests (yet, maybe).
- Triage those tests and enable ones that are passing. Mark them failing
if failing. Filed a couple of tracking bugs for the common issues,
but for other cases, I just left a comment.
- In the process of this, I went ahead and make some of the affected
tests strong mode clean if they weren't already and it was easy.
- Synchronize changes between dev_compiler's fork of expect and
pkg/expect. We'll want to unfork those at some point. D-:
This gets dev_compiler from 1985 tests to 2042.
R=jacobr@google.com, vsm@google.com
Review URL: https://codereview.chromium.org/2413073002 .
setSignature is only called for classes with constructors or static
members, so previously _runtimeType was only set explicitly on such
classes. Now _runtimeType is not set on any classes except for Object,
and all other types inherit _runtimeType from Object.
R=jmesserly@google.com
Review URL: https://codereview.chromium.org/2076713002 .
This should catch tests that suddenly start failing (or passing).
This is an admittedly contrived approach to track compilation failures in
the same runtime logic: the statically failing tests are now compiled
to a trivial output that throws a particular exception. Ideally, we
wouldn't run these, but it's beneficial to keep status in the same
place.
On my laptop, this only adds ~8s to presubmit (which takes ~2:30 min).
Ideas on alternative approaches welcome. :-)
R=jmesserly@google.com, leafp@google.com
Review URL: https://codereview.chromium.org/2079373002 .
The idea is to have more _emitXXX methods, so that different paths for
the same semantic action (e.g. implicit vs explicit 'this') call the
same _emitXXX method.
This is the first (simplest) step: assignments.
R=jmesserly@google.com
Review URL: https://codereview.chromium.org/2039173005 .
Put type tests (is, as, type assertion) on the types as 'is', 'as' and '_check' methods.
The check
dart.check(x, core.String);
becomes
core.String._check(x);
which is more concise and allows the test to be specialized.
In one scrolling action, 224ms in dart.as and dart.check is replaced by 89ms of checks across the specializations.
R=vsm@google.com
Review URL: https://codereview.chromium.org/2012153002 .
- avoid unsigned coercion when result is compared with constant
- avoid unsigned coercion when result is shifted right unsigned
- avoid call when right shift result has bits affected by sign bit masked out
- use values of named constants
R=vsm@google.com
Review URL: https://codereview.chromium.org/1950583002 .
Added 'tag' type StrongModeError, implemented by all errors that are
specific to strong mode semantics.
Failed casts throw CastError(Implementation) or StrongModeCastError.
Failed type assertions and reified coercions throw TypeError or
StrongModeTypeError.
Triaged some tests. Some pass due to now throwing a TypeError, many
pass for unknown reasons.
R=leafp@google.com
Review URL: https://codereview.chromium.org/2026133002 .