Commit Graph

2317 Commits

Author SHA1 Message Date
Kevin Millikin ffc5a96074 Reland "Fix a bug in Kernel's mixin elimination"
Reland
https://github.com/dart-lang/sdk/commit/52d1b4e96d0a384b08aafc184785d1c74cb74efc
with a fix to the test so that it does not use super mixins.

Change-Id: Id1283b1066e853baca4c39402c255ceaa90662f4
Reviewed-on: https://dart-review.googlesource.com/43002
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2018-02-22 11:52:24 +00:00
William Hesse 7bb941a60c Revert "Fix a bug in Kernel's mixin elimination"
This reverts commit 52d1b4e96d.

Reason for revert: Analyzer and DDC do not support the super-mixin fix and flag, so the new test fails on them.  The test needs to either be marked as failing on them, or support needs to be added and work in the test framework.

Original change's description:
> Fix a bug in Kernel's mixin elimination
> 
> Mixin elimination copied factory constructors from the mixin class to
> the mixin application class.  This could be observed as an unbound
> type parameter which led to a crash in the VM.  Fixes
> https://github.com/dart-lang/sdk/issues/32267.
> 
> Change-Id: I87b70a35d11c364739d01e261adf5329d492d8cf
> Reviewed-on: https://dart-review.googlesource.com/42922
> Reviewed-by: Jens Johansen <jensj@google.com>
> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>

TBR=vegorov@google.com,jensj@google.com,kmillikin@google.com

Change-Id: I4a0bcf0b323c9adef7e5dc7d9019b6aafe40509d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/42960
Reviewed-by: William Hesse <whesse@google.com>
2018-02-22 10:09:09 +00:00
Kevin Millikin 52d1b4e96d Fix a bug in Kernel's mixin elimination
Mixin elimination copied factory constructors from the mixin class to
the mixin application class.  This could be observed as an unbound
type parameter which led to a crash in the VM.  Fixes
https://github.com/dart-lang/sdk/issues/32267.

Change-Id: I87b70a35d11c364739d01e261adf5329d492d8cf
Reviewed-on: https://dart-review.googlesource.com/42922
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-02-22 08:51:09 +00:00
Paul Berry ab58e7c7c6 Update dart2js status after b119f7a4cd
Change-Id: Ibaebc622046ae51c79858c6cedbbf0777ada4fb5
Reviewed-on: https://dart-review.googlesource.com/42861
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-02-21 19:54:19 +00:00
Paul Berry b119f7a4cd Only allow implicit use of .call if it refers to a method.
Change-Id: I4c332b64eb7338ceaf63544c3dd0317f8c7d4538
Reviewed-on: https://dart-review.googlesource.com/42020
Reviewed-by: Erik Ernst <eernst@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2018-02-21 14:12:14 +00:00
Jens Johansen 076db33f03 [vm] Fix constant propagators version of identical for integers and doubles
Before this CL the constant propagator relied on two objects being identical
only if a.raw() == b.raw().
This is only the case if they have been canonicalized, which doubles and
ints shouldn't have to be.

This CL fixes it and introduces a few tests (one of which -cdartkp would have
failed prior to this CL).

NOTE: This should only change the behavior of precompiled mode, and only so
that it is more correct.
Change-Id: I4380ce4d3292fa15d728b0572403cb7ed4d0582c
Reviewed-on: https://dart-review.googlesource.com/42620
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-02-21 11:58:44 +00:00
William Hesse 778d1aec30 Update dartk and dartkp status after changes in fasta
Change-Id: Ib27144a2712727f96f786c439f730df136ecf569
Reviewed-on: https://dart-review.googlesource.com/42567
Reviewed-by: William Hesse <whesse@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
2018-02-21 01:35:36 +00:00
William Hesse dded0fc06b Update status for dart2js-minified-kernel-strong, after changes to fasta.
Change-Id: Iab1c064c4c4ed981575a970644df88a76767ac98
Reviewed-on: https://dart-review.googlesource.com/42566
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-02-21 00:41:34 +00:00
Vyacheslav Egorov ed5b6a3e8e [vm/kernel] Ensure that ScopeBuilder visits parameter types
Parameter types of local functions might refer to type arguments of
the receiver which means that receiver needs to be captured even
if it is not explicitly used inside a local function.

Fixes https://github.com/dart-lang/sdk/issues/32204

Bug: 32204
Change-Id: I448f0c8cbce12e9b58e1c3de9b2630ee22031d92
Reviewed-on: https://dart-review.googlesource.com/42441
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-02-20 19:09:15 +00:00
Aske Simon Christensen 2183869465 Treat invocations on dynamic as unknown, except for return type of ==
Closes https://github.com/dart-lang/sdk/issues/32173

Change-Id: I77bd06f292a701f1b51d4077f31439598a7b4683
Reviewed-on: https://dart-review.googlesource.com/41762
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2018-02-20 16:42:25 +00:00
Aske Simon Christensen 194dcf6a9b Report detailed errors when the number or names of arguments do not
match parameters of callee.

Closes https://github.com/dart-lang/sdk/issues/31795

Change-Id: Ic53cc55174a540f387289d4d9cc24ff5c65c547e
Reviewed-on: https://dart-review.googlesource.com/40822
Reviewed-by: Paul Berry <paulberry@google.com>
2018-02-20 16:42:25 +00:00
Kevin Millikin 1b1fe0be35 Fix a broken language_2 test
As far as I can tell, both of these are intended to be compile-time
errors and not run-time errors.

Change-Id: I7c3ee8b1431d954b3b74e668c88517dc032cd8ce
Reviewed-on: https://dart-review.googlesource.com/41700
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
2018-02-19 11:30:07 +00:00
Leaf Petersen e82e3df5a8 Fix more more status
Change-Id: Ib336438199f9f6a90b083756e57ed249cc83fa98
Reviewed-on: https://dart-review.googlesource.com/42082
Reviewed-by: Leaf Petersen <leafp@google.com>
2018-02-17 02:52:11 +00:00
Leaf Petersen 69f23048cd Fix more statuses
Change-Id: I533bf66335956198ca18e56414120f6719a68ae6
Reviewed-on: https://dart-review.googlesource.com/42081
Reviewed-by: Leaf Petersen <leafp@google.com>
2018-02-17 02:29:44 +00:00
Leaf Petersen f1a0257167 Fix Status files
Change-Id: I069eabb22a80af6cffd393807df624885b729856
Reviewed-on: https://dart-review.googlesource.com/42160
Reviewed-by: Leaf Petersen <leafp@google.com>
2018-02-17 01:44:25 +00:00
Leaf Petersen 3d6ad7b3a2 Remove fuzzy arrows except on assignability
Change-Id: I00ffa8f6f85cede8badd4d7082da4603f998956c
Reviewed-on: https://dart-review.googlesource.com/40470
Reviewed-by: Jenny Messerly <jmesserly@google.com>
2018-02-17 00:30:56 +00:00
Vyacheslav Egorov eb997b2818 [vm/kernel] Support as{TypeError} as a constant expressions.
Under certain conditions front-end currently generates as{TypeError}
type checks in constant expressions. Support evaluating these type
checks as constant expressions instead of rejecting them.

Change-Id: Id432c4c5062d7bab89c29fef308b42b2cbd64de8
Reviewed-on: https://dart-review.googlesource.com/41761
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-02-16 13:37:37 +00:00
Emily Fortuna c9d1d87708 Fix redness of dart2js bots as a result of Dima's FE change.
Change-Id: Icc4d3f820f2670197feb21c6320575e042951f8a
Reviewed-on: https://dart-review.googlesource.com/41904
Reviewed-by: Emily Fortuna <efortuna@google.com>
2018-02-15 19:32:38 +00:00
Dmitry Stefantsov 43ddb1cd99 Update more status files after landing ec9c927b18
Change-Id: I978cc28895c515ba6c6d5db9a08606b8c01993e9
Reviewed-on: https://dart-review.googlesource.com/41860
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-02-15 17:30:08 +00:00
Lasse R.H. Nielsen 1c8b2285c3 Another missing status line.
Change-Id: Iea55aee3689a346ddcbe292209b755c21e2f226f
Reviewed-on: https://dart-review.googlesource.com/41760
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2018-02-15 14:02:31 +00:00
Jens Johansen 00c9af8522 [fasta] Fix crash when importing nonexisting "dart:" uri
Previously, importing a nonexisting "dart:" uri resulted in a crash in
fasta. This CL introduces a test and fixes the problem.

Fixes #31172.

Change-Id: I61b2668466f2567e5e5dcaff3203f0c5ee9a885f
Reviewed-on: https://dart-review.googlesource.com/36401
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-02-15 14:00:17 +00:00
Lasse R.H. Nielsen 0fb1c5bc7b Mark test as failing on analyzer.
Change-Id: I7ebe8f4cbdafbf6b93fb3af2950c956c18790c6f
Reviewed-on: https://dart-review.googlesource.com/41680
Reviewed-by: Erik Ernst <eernst@google.com>
2018-02-15 11:32:59 +00:00
Lasse R.H. Nielsen 06439147c4 Update some tests to work better.
Add test for strong-mode only allowing super-chaining at the end of the initializer list.

Change-Id: Ic1c99f4f24738094eec14cb9c59354716f776b1e
Reviewed-on: https://dart-review.googlesource.com/40301
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-02-15 08:43:34 +00:00
kmillikin 3d05042639 Remove the different runtime sections for dartdevk
It's no longer necessary to guard against $runtime != none in most
cases because running test.py with --runtime=none will treat runtime
failure expectations as Pass.

Change-Id: Ieaff9957ad951066d93a3303af5499c7655d67a6
Reviewed-on: https://dart-review.googlesource.com/41567
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-02-15 01:38:44 +00:00
Jenny Messerly b371ed5db3 fix #32140, locals shadowing constructor/catch params
This gets DDC and DDK to handle the block body of functions/methods in a
similar way, eliminating it from the JS if it is not necessary, and fixes
a bug in DDC for cases where we do need to emit a nested block scope.

Change-Id: I37d3d69bfcf9b1204385cca7785601fb7d6edfc3
Reviewed-on: https://dart-review.googlesource.com/41565
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Jenny Messerly <jmesserly@google.com>
2018-02-14 23:43:13 +00:00
Dmitry Stefantsov 81dca893b1 Update status files: some tests pass due to ec9c927b18
Change-Id: I87588883cdbe8f724ff519c1968b583f03e32f69
Reviewed-on: https://dart-review.googlesource.com/41265
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-02-14 23:38:27 +00:00
kmillikin b019045393 Front-end implementation of mixin type inference.
Infer missing type arguments to generic mixin classes in mixin
applications based on mixin supertype constraints.  The implementation
directly follows the draft feature specification at
https://dart-review.googlesource.com/c/sdk/+/38940.

Bug: https://github.com/dart-lang/sdk/issues/31984
Change-Id: I7caba037b1b0e73c44f71aaa958f3ff3e8f3c1f0
Reviewed-on: https://dart-review.googlesource.com/40661
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2018-02-14 22:43:24 +00:00
Dmitry Stefantsov ec9c927b18 Resolve type arguments of redirecting factories invocations
Fixes #32068

Change-Id: Ifc2c832d5a761ae51b7f93084543aa04902a9529
Reviewed-on: https://dart-review.googlesource.com/40280
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2018-02-14 22:03:23 +00:00
Régis Crelier 3d756ec4ab [VM runtime] In strong mode, restrict subtyping rules of callable instances (fixes #32154).
Update kernel status files.

Change-Id: I2bf6097b5229d80cc90baed92fd8dcc750667b23
Reviewed-on: https://dart-review.googlesource.com/41482
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-02-14 21:48:27 +00:00
Brian Wilkerson 75a2a1524f Support updated optional new and const spec
Change-Id: I974185eba4936f14d7b9d5d1d5c1638a37624c62
Reviewed-on: https://dart-review.googlesource.com/41024
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2018-02-14 17:12:13 +00:00
Paul Berry c4de71ede2 Re-land "Change front_end handling of callable classes."
Original description:
Change front_end handling of callable classes.

This CL is the first in a series of CLs to change the handling of
callable classes in Dart 2.0.

For purposes of this description, a "callable class" is a class whose
interface contains a `.call` method.

In Dart 1.0, a callable class was considered to be a subtype of the
`.call` method's function type.  This allowed the user to create
custom objects with similar behavior to closures, but with additional
fields and methods.

In Dart 2.0, a callable class is just an ordinary class, with no
subtype relation to any particular function type.  (Note however that
it is still permissible for a class to declare that it "implements
Function").

To reduce the amount of code broken by this change, a piece of
syntactic sugar is being added: if an expression whose static type is
a callable class appears where a function type is expected, an
implicit tear-off of the `.call` method is inserted.

Note that it is still possible at compile time to invoke an expression
whose static type is a callable class, and it is still possible at
runtime to invoke an expression whose runtime type is a callable
class; in both cases, this is considered an implicit invocation of the
class's `.call` method.  This is unchanged from Dart 1.0 behavior.

This CL introduces test cases for the new behavior, and implements the
implicit tear-off of `.call` in the front end.

Still to be implemented in future CLs:

- Spec text needs to be written.

- DDC/analyzer code needs to be written to perform implicit tear-offs
  of `.call`.

- The subtyping algorithm in DDC, analyzer, VM, and dart2js needs to
  be changed so that callable classes are no longer considered
  subtypes of any particular function type.

- A small corner case involving type parameters still needs to be
  addressed (see TODO in
  pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart).

Fixes #32064.

Change-Id: I0d397c608321e25ba42cc02aa8a516aa77aa7c9d
Reviewed-on: https://dart-review.googlesource.com/41280
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-02-14 15:22:25 +00:00
Paul Berry e2bdbb8bb8 Revert "Change front_end handling of callable classes."
This reverts commit f0a6330db0.

Reason for revert: Broken bots

Original change's description:
> Change front_end handling of callable classes.
> 
> This CL is the first in a series of CLs to change the handling of
> callable classes in Dart 2.0.
> 
> For purposes of this description, a "callable class" is a class whose
> interface contains a `.call` method.
> 
> In Dart 1.0, a callable class was considered to be a subtype of the
> `.call` method's function type.  This allowed the user to create
> custom objects with similar behavior to closures, but with additional
> fields and methods.
> 
> In Dart 2.0, a callable class is just an ordinary class, with no
> subtype relation to any particular function type.  (Note however that
> it is still permissible for a class to declare that it "implements
> Function").
> 
> To reduce the amount of code broken by this change, a piece of
> syntactic sugar is being added: if an expression whose static type is
> a callable class appears where a function type is expected, an
> implicit tear-off of the `.call` method is inserted.
> 
> Note that it is still possible at compile time to invoke an expression
> whose static type is a callable class, and it is still possible at
> runtime to invoke an expression whose runtime type is a callable
> class; in both cases, this is considered an implicit invocation of the
> class's `.call` method.  This is unchanged from Dart 1.0 behavior.
> 
> This CL introduces test cases for the new behavior, and implements the
> implicit tear-off of `.call` in the front end.
> 
> Still to be implemented in future CLs:
> 
> - Spec text needs to be written.
> 
> - DDC/analyzer code needs to be written to perform implicit tear-offs
>   of `.call`.
> 
> - The subtyping algorithm in DDC, analyzer, VM, and dart2js needs to
>   be changed so that callable classes are no longer considered
>   subtypes of any particular function type.
> 
> - A small corner case involving type parameters still needs to be
>   addressed (see TODO in
>   pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart).
> 
> Fixes #32064.
> 
> Change-Id: I6a86491047ae467a5e767cb3cc7cecb570b29308
> Reviewed-on: https://dart-review.googlesource.com/40508
> Commit-Queue: Paul Berry <paulberry@google.com>
> Reviewed-by: Kevin Millikin <kmillikin@google.com>
> Reviewed-by: Leaf Petersen <leafp@google.com>
> Reviewed-by: Erik Ernst <eernst@google.com>

TBR=paulberry@google.com,lrn@google.com,leafp@google.com,dmitryas@google.com,eernst@google.com,kmillikin@google.com

Change-Id: Ia3d3a6e46ceee2b2c55938bec95d09d50bbf06a7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/41240
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-02-14 13:10:54 +00:00
Paul Berry 421db9c69c Re-land "Implement proper checking for callability of Function class."
(was reverted in https://dart-review.googlesource.com/c/sdk/+/40980
due to an analyzer bot breakage)

Original commit message:
Implement proper checking for callability of Function class.

There was some old (incorrect) logic for doing this, behind the flag
enableStrictCallChecks.  This flag has been removed, since the new
behavior is now standard in Dart 2.0.

Fixes #31509

Change-Id: Ice5cf38bbc648badf7f2563ff930b69f9a799635
Reviewed-on: https://dart-review.googlesource.com/41120
Reviewed-by: Jonas Termansen <sortie@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-02-14 11:30:23 +00:00
Paul Berry f0a6330db0 Change front_end handling of callable classes.
This CL is the first in a series of CLs to change the handling of
callable classes in Dart 2.0.

For purposes of this description, a "callable class" is a class whose
interface contains a `.call` method.

In Dart 1.0, a callable class was considered to be a subtype of the
`.call` method's function type.  This allowed the user to create
custom objects with similar behavior to closures, but with additional
fields and methods.

In Dart 2.0, a callable class is just an ordinary class, with no
subtype relation to any particular function type.  (Note however that
it is still permissible for a class to declare that it "implements
Function").

To reduce the amount of code broken by this change, a piece of
syntactic sugar is being added: if an expression whose static type is
a callable class appears where a function type is expected, an
implicit tear-off of the `.call` method is inserted.

Note that it is still possible at compile time to invoke an expression
whose static type is a callable class, and it is still possible at
runtime to invoke an expression whose runtime type is a callable
class; in both cases, this is considered an implicit invocation of the
class's `.call` method.  This is unchanged from Dart 1.0 behavior.

This CL introduces test cases for the new behavior, and implements the
implicit tear-off of `.call` in the front end.

Still to be implemented in future CLs:

- Spec text needs to be written.

- DDC/analyzer code needs to be written to perform implicit tear-offs
  of `.call`.

- The subtyping algorithm in DDC, analyzer, VM, and dart2js needs to
  be changed so that callable classes are no longer considered
  subtypes of any particular function type.

- A small corner case involving type parameters still needs to be
  addressed (see TODO in
  pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart).

Fixes #32064.

Change-Id: I6a86491047ae467a5e767cb3cc7cecb570b29308
Reviewed-on: https://dart-review.googlesource.com/40508
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
2018-02-14 11:03:32 +00:00
Paul Berry 35aea15097 Revert "Implement proper checking for callability of Function class."
This reverts commit 6837dafcc3.

Reason for revert: Broke analyzer bots.

Original change's description:
> Implement proper checking for callability of Function class.
> 
> There was some old (incorrect) logic for doing this, behind the flag
> enableStrictCallChecks.  This flag has been removed, since the new
> behavior is now standard in Dart 2.0.
> 
> Fixes #31509
> 
> Change-Id: I4a6da34a4b85ea8409f6e0d14c377a586546056a
> Reviewed-on: https://dart-review.googlesource.com/40509
> Commit-Queue: Paul Berry <paulberry@google.com>
> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
> Reviewed-by: Mike Fairhurst <mfairhurst@google.com>

TBR=paulberry@google.com,scheglov@google.com,brianwilkerson@google.com,mfairhurst@google.com

Change-Id: Ib631ad16bc5e937ff914127d1c5330f3fcaff2c9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/40980
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-02-13 19:56:35 +00:00
Paul Berry 6837dafcc3 Implement proper checking for callability of Function class.
There was some old (incorrect) logic for doing this, behind the flag
enableStrictCallChecks.  This flag has been removed, since the new
behavior is now standard in Dart 2.0.

Fixes #31509

Change-Id: I4a6da34a4b85ea8409f6e0d14c377a586546056a
Reviewed-on: https://dart-review.googlesource.com/40509
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2018-02-13 14:19:08 +00:00
Erik Ernst 8c089e18c2 Fixed two typos in void_type_function_types_test
Change-Id: I7e33874f9d6361c15fce61292fe0eaf22c3a85c4
Reviewed-on: https://dart-review.googlesource.com/35922
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2018-02-13 12:47:18 +00:00
Johnni Winther d30aaaa4b8 Ensure no type parameters on constructors.
Change-Id: I6a40e2f74b8a89e5873d94d406a56f82db0d0b48
Reviewed-on: https://dart-review.googlesource.com/40526
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-02-13 11:11:05 +00:00
Stephen Adams 651942ca83 dart2js kernel status
TBR=sigmund@google.com

Change-Id: I6b84d51a3fe6f940892637712c9501659612fd75
Reviewed-on: https://dart-review.googlesource.com/40680
Reviewed-by: Stephen Adams <sra@google.com>
2018-02-13 04:43:29 +00:00
Stephen Adams d78c05279a dart2js runtime Dart 2 subtype check (mostly)
This change adds most of Dart 2 subtype checking to js_runtime.
The main observable change is the stronger subtyping of function types.
The subtype code is split into V1 and V2 methods with the intention to
eventually remove the V1 paths.

There is a lot of minor details that are still TODO:

- TODO: generalized void
- TODO: comparison on type variable by it's bound
- TODO: FutureOr

Change-Id: Id05db0aef5ce0d58416a72f1538a90ed67436b3e
Reviewed-on: https://dart-review.googlesource.com/37960
Commit-Queue: Stephen Adams <sra@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2018-02-12 23:54:48 +00:00
Mike Fairhurst 7a0a9284ba Relax void errors: no error assigning void to void variable (+tests)
Change-Id: I1a6e80125dff6f766c9a74b760b557609a2544fb
Reviewed-on: https://dart-review.googlesource.com/40507
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
2018-02-12 21:24:19 +00:00
Samir Jindel 0e6d8c0fc7 Update status files.
Change-Id: Icb2249b3e115dbd738136873cf664a2e2412e369
Reviewed-on: https://dart-review.googlesource.com/40580
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-02-12 18:49:33 +00:00
Vyacheslav Egorov 1796437cce [vm/kernel] Support synchronously completing futures
Slightly alter async/await transformation in such a way that
:await_jump_var/:await_ctx_var are set before _awaitHelper(...) is invoked -
just like in the AST transformer used by the legacy pipeline. This guarantees
that recursive invocations will continue from the right "jump" point (instead of
continuing from the current jump point).

Fixes https://github.com/dart-lang/sdk/issues/32098

Change-Id: I8899669ceefe3f2edba6531897834b2c275efada
Reviewed-on: https://dart-review.googlesource.com/40520
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2018-02-12 15:01:18 +00:00
Johnni Winther 62f0120bb9 Update status for d8-minified
Change-Id: I4a382baa4b84e975c445bc2512b55e4bfcdd1b30
Reviewed-on: https://dart-review.googlesource.com/40525
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2018-02-12 14:40:07 +00:00
Johnni Winther 41118c438e Reimplement runtime type checks computation
Change-Id: Ic1baa96e60db30cf9afe3414e605f0200361583b
Reviewed-on: https://dart-review.googlesource.com/37560
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-02-12 13:29:30 +00:00
Paul Berry a895c9b283 Promote TOP_LEVEL_CYCLE to an error
Top level type inference cycles constitute a compile-time error in
Dart 2.0.

Change-Id: I8663ea126fec2a4f495ee77125e9145372855934
Reviewed-on: https://dart-review.googlesource.com/40260
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-02-12 11:04:48 +00:00
Emily Fortuna 36b957762e Fix up test statuses for strong mode. They apparently got super out of date. :-(
Change-Id: If3e247aecbc7969423053854468f6117ace8fe49
Reviewed-on: https://dart-review.googlesource.com/40461
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-02-09 18:53:36 +00:00
William Hesse e4f5497d0e Update status for dart2js-with-kernel
Change-Id: I233dbf8d5cbc8c93e3dcd3369f067345e6f04a56
Reviewed-on: https://dart-review.googlesource.com/40282
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-02-09 12:53:19 +00:00
Aske Simon Christensen aa85b09931 Remove broken generic supertype optimization.
The class hierarchy analysis maintains, for each class, a map from raw
supertypes to actual, parameterized supertypes. As an optimization, it
can share these maps between a class and one of its subclasses.

However, the sharing/copying mechanism sometimes ends up with entries
in the map that should not have been there.

This commit removes the optimization and always uses a separate map
for each class.

Closes https://github.com/dart-lang/sdk/issues/31996

Change-Id: I4c641d9c7d15706035791dd2b586a24045afceaa
Reviewed-on: https://dart-review.googlesource.com/39765
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2018-02-09 09:39:07 +00:00
Jenny Messerly 5ef7920d84 fix DDC explicit field initialization to null
This was unintentionally regressed during a fix to field init order. It
does not typically show up in Dart code because undefined and null are
both handled, but it can break JS interop.

Change-Id: I771895826ee09bb6c5e2f9b016eb7673caf61cd1
Reviewed-on: https://dart-review.googlesource.com/40202
Reviewed-by: Vijay Menon <vsm@google.com>
2018-02-09 02:48:07 +00:00