This adds checks for allocations and type values, and provides a compile
time error for type declarations, is-checks, and as-casts.
Change-Id: I3bfed41b0dd45abeb02158f0537102c779511998
Reviewed-on: https://dart-review.googlesource.com/36383
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
From the docs of mixedInClass and mixin: the former is the direct thing that is
mixed in, but if it is a named mixin application it may not contain the actual
fields and procedures, instead the `.mixin` class does.
Change-Id: I049ced771925431d613b0b661154c1761fbe0a51
Reviewed-on: https://dart-review.googlesource.com/38161
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Emily Fortuna <efortuna@google.com>
also fixes#31058, DDC failed to execute all field initializers
(already fixed this in DDK when porting code_generator).
also fixes assertion_initializer_test, it was not strong mode clean, so
it was not giving any meaningful results for runtime behavior.
Change-Id: I290b266ad77ed92851cc2d0617690c6c021182a3
Reviewed-on: https://dart-review.googlesource.com/37866
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Jenny Messerly <jmesserly@google.com>
Since dart2js doesn't implement Dart 2 yet, the RuntimeError status must
be copied for each of the many dart2js configurations.
Change-Id: I7814546ce808922bf62c12d6c5443eee8600a5c7
Reviewed-on: https://dart-review.googlesource.com/37940
Reviewed-by: Jenny Messerly <jmesserly@google.com>
'void' is now allowed as type annotation for locals, fields, and formal
parameters, in addition to being previously allowed as type argument.
Update status files.
Change-Id: I6459f56824dc0a695615d8dc87c9a8a1f9be29ef
Reviewed-on: https://dart-review.googlesource.com/37651
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
Dart 2 has no notion of "checked mode", so a failed assertion in a
const constructor should always be a compile error.
Change-Id: I02227c03613346918de1e3a7f7c70d209a940b90
Reviewed-on: https://dart-review.googlesource.com/37647
Reviewed-by: Leaf Petersen <leafp@google.com>
Whenever we install a getter or setter, we need to install a corresponding
one that calls `super`, because JS treats getters/setters as pairs for the
purposes of lookup. Normally we generate the paired super accessor, but for
mixins we cannot, because we don't know what the `super` will be at compile
time. So the fix is for `mixinMembers` to handle it at run time.
Change-Id: I2b14ea437720bd26f2879c7daac5b3f796d48038
Reviewed-on: https://dart-review.googlesource.com/37645
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Jenny Messerly <jmesserly@google.com>
There's an assert in InvocationMirror_unpackTypeArguments checking that
the length of the incomming TypeArguments is positive (len > 0).
That's not a valid assert.
When creating TypeArguments it will be TypeArguments::null() if it is
empty or contains only dynamic.
TypeArguments::null() will answer 0 as length which is thus perfectly
valid.
This CL fixes the wrong assert (technically it returns before the assert,
but still).
Fixes#31381.
Change-Id: I7a253418b69751b13e98fcf2def2b23b32f96142
Reviewed-on: https://dart-review.googlesource.com/37480
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
This warning fires if a top level initializer depends on the type of a
method whose type is subject to type inference. This warning is
needed because the analyzer implementation of top level type inference
doesn't guarantee that the method type will be inferred prior to the
initializer, so it's possible that type inference will produce an
incorrect result. See #31925 for more details.
Change-Id: Iec048d2638877c16ae11a87eae0382b7352f726c
Reviewed-on: https://dart-review.googlesource.com/36841
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
This changes DDC/K to handle `dynamic` and `Object` equivalently at
runtime for the purposes of printing `extends` bounds of generic
function types.
Technically speaking DDK is the correct one (`<T>` is short for
`<T extends Object>` in the spec, not `<T extends dynamic>`).
In contrast DDC/Analyzer treat the absence of a bound as `dynamic`.
At runtime this distinction will disappear in Dart 2, and we may
stop tracking it completely, so this change is a step towards that.
Change-Id: Ie1ead2ad55b72718485fe0817456981873a6d04f
Reviewed-on: https://dart-review.googlesource.com/36563
Commit-Queue: Jenny Messerly <jmesserly@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
This is the next step towards removing findMemberName
and improving class member and top level declaration
recovery.
* Remove modifiers from findMemberName results
* Inline modifier parsing in parseFields
* move non modifier recovery out of ModifierRecoveryContext
Change-Id: I9cb4abd7632021720ba184440f0b1af382e72794
Reviewed-on: https://dart-review.googlesource.com/36500
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
This brings back the mixin unrolling code used by DDC's Analyzer backend,
because it handles features kernel's unrolling does not:
- constructor forwarding for all constructors
- mixin field initializers
- mixin constructor calls
- mixin aliases (mixin applications that are themselves valid mixins)
- covariance check stubs for mixin aliases
- mixable classes that have an unnamed factory constructor but no generative
constructors
Change-Id: Ibb49ec45d0feff0bd0a2a0ba18a346bda75db882
Reviewed-on: https://dart-review.googlesource.com/35810
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Jenny Messerly <jmesserly@google.com>
The _2.status files are not normalized properly, so our script missed this.
We need to follow up with some additional fixes to the .status files and to add
to our script a way to detect these issues (typically whenever we have a "Pass"
and can't find the line that said otherwise).
TBR=johnniwinther@google.com
Change-Id: Icd4a6c003df86c0bf5c0894e971be13bc927f4ba
Reviewed-on: https://dart-review.googlesource.com/36480
Reviewed-by: Sigmund Cherem <sigmund@google.com>