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 .
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 .
- Same errors as VM & Dartium
- Failed assertion: boolean expression must not be null
- type 'int' is not a subtype of type 'bool' in boolean expression
- All boolean conversion contexts use the same logic
- No false positives from combining null and as-bool checks in other contexts
R=jmesserly@google.com
Review URL: https://codereview.chromium.org/1993023003 .
This doesn't include the copious changes in collection_patch.dart
because I believe (1) those are quite old and (2) are dart2js specific.
The changes here have basically no effect on DDC, but it at least gets
us a little better test coverage and reduces noise in the diffs.
R=sra@google.com
Review URL: https://codereview.chromium.org/1977003002 .
we still have an init method, for better or worse, to break out of ES6 restrictions
The idea here is default Dart constructor (really an initialization method) is always called `new` instead of the class name. We already do this for unnamed factory.
R=leafp@google.com
Review URL: https://codereview.chromium.org/1965213003 .
This eliminates the erroneous checks inside of nested closures, and
eliminates checks where the type parameter is only used covariantly.
We still don't handle the cases where a generic is implemented by
a non-generic correctly.
BUG=
R=jmesserly@google.com
Review URL: https://codereview.chromium.org/1988613006 .
The generated summary file matches the generated DDC sdk - i.e., it
does not include dart:io. I modified the codegen_tests to the summary
and had to prune the parts of unittest that relied on dart:io.
Paul / Konstantin: can one of you please look at the summary part?
Bob: can you please look at the unittest changes?
R=rnystrom@google.com, scheglov@google.com
Review URL: https://codereview.chromium.org/1982853002 .