Commit Graph

3345 Commits

Author SHA1 Message Date
danrubel 96e982f054 Improve await-outside-async error recovery
Fix https://github.com/dart-lang/sdk/issues/36048

Change-Id: If40baa44a0aefa301c042bc1002d92e577bd3b9a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95302
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-03-05 17:08:31 +00:00
Dan Rubel e033b676dd fix parser crash in unterminated string literal inside unterminated interpolation
Fix https://github.com/dart-lang/sdk/issues/35900

Change-Id: I96d83e0c93d9e9c22d5b30048dc210672b1c003c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95043
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-03-05 15:35:58 +00:00
Kevin Millikin 718b36ed73 [cfe] Use for-in instead of List.addAll for list spread
The translation of `...e` into `list.addAll(e`) is not correctly
typed.  `List.addAll` requires its argument to have type `Iterable<E>`
where E is the list's element type.  Spread only requires that the
elements of e have type E.

Instead translate `...e` into `for (E elt in e) list.add(elt);`.

Change-Id: I9a5794048d33901a2b0dfae2e592a031d1155be8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95381
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2019-03-05 09:28:27 +00:00
Aske Simon Christensen 99093c0610 [fasta] Required but not inferred constant context.
Add a new kind of constant context in the body builder for expressions
that must be constant but where constness is not inferred.

This context is used for parameter default values and initializing
expressions for non-final fields in classes containing at least one
const constructor.

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

Change-Id: I200ca88586b19335b185dad0839dfad4eef1f75f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/93520
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-03-05 09:23:57 +00:00
Aske Simon Christensen 822ebdd1e0 [fasta] Wrap non-const variable accesses inside const expressions.
Change-Id: I8761031da2419a47a947a02721d4ffd86ac7c531
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/93504
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-03-05 09:23:57 +00:00
Jens Johansen 1a88421d39 Allow to change .package uri in incremental compiler
Change-Id: Ic36fd000e2a3ea2870460b68821c7404f6e62a1a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95140
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-03-05 07:39:31 +00:00
Jens Johansen 2695cdfbb1 Change incremental compiler to take entry points (plural)
Change-Id: I03203cdeb11ab7bc6116779642909ebc7220c619
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95122
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-03-05 07:39:31 +00:00
Aske Simon Christensen 2b2e71770c [kernel] Add SetConstant node to Kernel.
Change-Id: I83da1afc9f15009c650a871a51ca8171b482d4df
Reviewed-on: https://dart-review.googlesource.com/c/94863
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-03-04 10:20:56 +00:00
Kevin Millikin 053dfbb2ac [cfe] Compile list spread elements into block expressions
Change-Id: Ic869cbfb2f3dc13a56be771acf0e12df850ff3c6
Reviewed-on: https://dart-review.googlesource.com/c/94748
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-03-04 08:29:56 +00:00
Dmitry Stefantsov 2c8f70cde3 [cfe] Add type inference for spreads in set literals
Change-Id: I60250ec4ba7dba2381d84328095d38cf47b4ea8b
Reviewed-on: https://dart-review.googlesource.com/c/94548
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-03-01 15:17:13 +00:00
Dmitry Stefantsov b36c56ff84 [cfe] Add type inference for spreads in list literals
Change-Id: I4076fe82a0b4c0780dc53cc51f9abba3b1d85e8c
Reviewed-on: https://dart-review.googlesource.com/c/94520
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-03-01 15:17:13 +00:00
Aske Simon Christensen 120328aff7 [fasta] Commandline option to enable asserts
Since Fasta is only concerned with compile-time behavior, the option
only affects asserts in initializers in const constructors when
evaluated during constant evaluation.

Change-Id: I534cc7cc1f33f9b34d15550d38ea930ed7ac6709
Reviewed-on: https://dart-review.googlesource.com/c/94740
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
Auto-Submit: Aske Simon Christensen <askesc@google.com>
2019-02-28 12:11:16 +00:00
Aske Simon Christensen 82c5c5bbb2 [fasta] Only read compiler context at construction in kernel_target.
Change-Id: I0f62f4e993353a336101fe0babb9d1dc58844020
Reviewed-on: https://dart-review.googlesource.com/c/94743
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-02-28 12:11:16 +00:00
Peter von der Ahé 75370569fc Fall back to DillLoader when computing types in SourceLoader
Change-Id: I01242136e6598a55b24ca28cff2258529882064b
Reviewed-on: https://dart-review.googlesource.com/c/94502
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2019-02-28 10:12:46 +00:00
Peter von der Ahé 78ba3dab7a Rename ImplicitType to ImplcitFieldType
Change-Id: I98cee54149fbe4c450919f72e7ab07e319b8fb34
Reviewed-on: https://dart-review.googlesource.com/c/94721
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2019-02-28 10:12:26 +00:00
Peter von der Ahé ba31e448ca Finish implementing IsIntersectionSubtypeOf
Change-Id: I1b2958269545a5e562b664d51d945d328f46d0d5
Reviewed-on: https://dart-review.googlesource.com/c/94299
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-02-28 09:08:56 +00:00
Kevin Millikin 5f095b7039 [Fasta] Add support for spread in map literals
Spreads are compiled as if they were spread elements in list or set
literals.  When one occurs in a map literal it is translated to a new
spread map entry.

Change-Id: Ic618b1e85e595b4c2cd65e184b9d2c49e9c34b79
Reviewed-on: https://dart-review.googlesource.com/c/94547
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-02-28 06:05:00 +00:00
Dan Rubel 31993bf1b5 improve expression function body recovery
Fix https://github.com/dart-lang/sdk/issues/31182

Change-Id: Ied691b50665b4c59a273296f8e724464d52efff5
Reviewed-on: https://dart-review.googlesource.com/c/94582
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-02-27 20:19:08 +00:00
Dan Rubel 8f12d634fe add postfix "!" non-null assert operator
This updates the parser to support a new "!" postfix assert non-null
operator for NNBD experimentation in analyzer. All other CFE listeners
report an error as they always have... albet a slightly different error.

This also updates reportErrorIfNullableType to report experiment-not-enabled

Change-Id: I7751443fd5a7a2756e823f38c78120e9c2e3e075
Reviewed-on: https://dart-review.googlesource.com/c/94580
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-02-27 19:20:22 +00:00
danrubel 7829012e61 add new ExperimentNotEnabled error code
Change-Id: I541015db1f200de3f3846d7bd231b1996f947c6e
Reviewed-on: https://dart-review.googlesource.com/c/94420
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-02-27 15:40:17 +00:00
Kevin Millikin a9ef31ba43 [Fasta] Add Kernel syntax for spread elements
Add spread elements to the Kernel syntax.  They are currently replaced
by an invalid expression during type inference.

Change-Id: Icdb489e2c9993c6517983cfafdefc801ebb378ab
Reviewed-on: https://dart-review.googlesource.com/c/94501
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-02-27 11:48:12 +00:00
Peter von der Ahé f6389a4216 TypeComputer: handle named parameters
Change-Id: Ifaf02b65497637053c4c17b199957ec24a974706
Reviewed-on: https://dart-review.googlesource.com/c/94288
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-26 11:59:43 +00:00
Peter von der Ahé eb19bba3e3 Implement TypeBuilderComputer.visitFunctionType
Change-Id: Ifd75fb445b2b8a02c61a555435a9c6656727241e
Reviewed-on: https://dart-review.googlesource.com/c/94226
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2019-02-26 09:30:32 +00:00
Peter von der Ahé 7f00ea7e43 Subst interface types copied from superclass
Change-Id: Ib9cda086204f4b2b4c844b25ebcf3d2613f37747
Reviewed-on: https://dart-review.googlesource.com/c/94202
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-26 09:30:32 +00:00
Peter von der Ahé 561f7905d6 A type variable can be a subtype of another
Change-Id: I2f4df4126f5d788b2993689e623c9b69b4a0c251
Reviewed-on: https://dart-review.googlesource.com/c/94201
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-26 09:30:32 +00:00
Peter von der Ahé 0f9a5198bd Finish implementing IsFutureOrSubtypeOf
Change-Id: I0263be3d52cf3be1b3ba1f34bed9180fb0125863
Reviewed-on: https://dart-review.googlesource.com/c/93986
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-26 09:30:32 +00:00
Peter von der Ahé 76e3dfe096 Remove TypeEnvironment.legacyMode
Change-Id: I1bcebc66cbf4d3cb749fdc4cec382d936d4107ca
Reviewed-on: https://dart-review.googlesource.com/c/94212
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2019-02-25 12:17:54 +00:00
Aske Simon Christensen e7d263b05f [fasta] Transform set literals in annotations.
Change-Id: I23e60cb85e1df728fc3be3b38be43e31a1795d1d
Reviewed-on: https://dart-review.googlesource.com/c/93941
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2019-02-25 10:30:14 +00:00
Dan Rubel 272f58e543 Revise parser to generate handleLiteralSetOrMap
... and no longer generate handleLiteralSet or handleLiteralMap.
In addition, a new hasSetEntry parameter has been added to the
handleLiteralSetOrMap event generated by the parser to support
existing behavior. Once all listeners have implemented
unified collections and that feature is enabled by default,
the hasSetEntry parameter can be removed.

This is the third of several CLs updating the parser and its listeners
to conform to the unified collection spec:
https://github.com/dart-lang/language/pull/200

Change-Id: Ia305eab1f720658f357ac4102b0b0c8128d16997
Reviewed-on: https://dart-review.googlesource.com/c/93963
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-02-22 19:58:38 +00:00
Dan Rubel 58cea93953 Update BodyBuilder to use handleLiteralSetOrMap
This is the second of several CLs updating the parser and its listeners
to conform to the unified collection spec:
https://github.com/dart-lang/language/pull/200

Change-Id: I5c277d05a3726a3f5a40823cf878f025167340e6
Reviewed-on: https://dart-review.googlesource.com/c/93741
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-02-22 17:31:24 +00:00
Paul Berry db62dc5323 Remove hardcoded precedence integers in front end.
Use the constants in pkg/front_end/lib/src/scanner/token.dart.  This
ensures that if the precedence numbers ever change (e.g. because we
need to insert a new expression type into the precedence table), it
won't cause any breakages.

Change-Id: Ie90122435c65dd51fe9be96afe0a8890cc245b55
Reviewed-on: https://dart-review.googlesource.com/c/93931
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-02-22 13:39:46 +00:00
Jens Johansen 2087d6db46 initializeFromComponent has to include platform
For initializeFromComponent to work correctly the platform has to be
provided (as the other libraries provided are linked to some platform,
and loading another one is thus no good).
This CL changes it so we don't load another one, and checks that the
component we're trying to initialize from actually contains dart:core.

Change-Id: I88d30436c101c589b0555ff70ae21297ed665d7b
Reviewed-on: https://dart-review.googlesource.com/c/93435
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2019-02-22 13:08:45 +00:00
Jens Johansen e4d1b28698 Incremental compiler should respect omitPlatform setting
Change-Id: Id842db646ba95945c8fadce0626cb8cbee2812ad
Reviewed-on: https://dart-review.googlesource.com/c/93433
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-02-22 11:44:45 +00:00
Jens Johansen 93eca7745a Don't invalidate the entry point for no reason
In the incremental compiler we used to invalidate the entry point for
every invocation. This is no longer necessary, and we should stop.

Change-Id: I563bdea53c8ec85657fbb8be96d15ba3a7b57e3c
Reviewed-on: https://dart-review.googlesource.com/c/91824
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-02-22 10:52:25 +00:00
danrubel 8b0dd94e11 Revise AstBuilder to generate the new set-or-map AST structure
This is the first of several CLs updating the parser and its listeners
to conform to the unified collection spec:
https://github.com/dart-lang/language/pull/200

Change-Id: I7750bc4b029f3963b2df77dab3630775ce921bba
Reviewed-on: https://dart-review.googlesource.com/c/93740
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-02-20 19:49:45 +00:00
Aske Simon Christensen 6f8415245d [fasta] Transform set literals in initializers and default values.
The set literal desugaring was missing set literals in constructor
initializers and parameter default values. Furthermore, it assumed
that a constructor that contained a set literal had a body.

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

Change-Id: I42c77b96bbe751ee6f7c7ba7921e9b9df24c16e9
Reviewed-on: https://dart-review.googlesource.com/c/93660
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-02-20 15:38:54 +00:00
Aske Simon Christensen d76293a75a [testing] Add shared options on the test.py commandline.
Specify extra shared options to the compiler and runtime via the
--shared-options= commandline option to test.py. For instance,
--shared-options=--enable-experiment=constant-update-2018 will enable
the front-end constant evaluation experiment for all tests run.

To avoid conflicts with tests explicitly enabling experiments, the
front-end parsing of experimental flags is changed to allow the same
flag to be mentioned several times, as long as the value is the same.
This matches the existing behavior of the analyzer.

Change-Id: I0c79e62b0b23ec7bc3824064dd27ef86b4451f9a
Reviewed-on: https://dart-review.googlesource.com/c/93501
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
2019-02-20 11:11:21 +00:00
Peter von der Ahé 48beacfd78 Remove Kernel-based mixin inference
Change-Id: Id3bb8f66164e55172f892c21a7761e6535cf6619
Reviewed-on: https://dart-review.googlesource.com/c/93426
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2019-02-19 11:24:05 +00:00
Peter von der Ahé e2b7f48333 Implement ClassHierarchyBuilder.getLegacyLeastUpperBound
Change-Id: Id946a8e49ef414e5d2f6439d15e6cb134c9ccb83
Reviewed-on: https://dart-review.googlesource.com/c/93425
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-02-19 11:24:05 +00:00
Peter von der Ahé 6a65f84a63 Implement longest path to Object
Change-Id: Ibf882536dde5a218f5fda085359d419e3ee0d831
Reviewed-on: https://dart-review.googlesource.com/c/93410
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-02-19 11:24:05 +00:00
Jens Johansen 4bcc97a3d6 Don't run 'unbindCanonicalNames' in writeComponentToFile
Change-Id: Ic1c30d62ff558e5dec7e4c6a8e4fd8be85717728
Reviewed-on: https://dart-review.googlesource.com/c/93428
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-02-19 10:10:24 +00:00
Peter von der Ahé f4379435dd Implement DillClassBuilder.typeVariables
Change-Id: I82416e5b34c0b63dc3106f88c437c488be0ffbbc
Reviewed-on: https://dart-review.googlesource.com/c/93406
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2019-02-15 11:58:30 +00:00
Daco Harkes 20c3cd62fc Revert adding dart:ffi to core_types and fasta kernel_target
Change-Id: I0c8a05cf8715962ab6ebe787dafd14fe611a8a0e
Reviewed-on: https://dart-review.googlesource.com/c/93172
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-02-15 10:14:00 +00:00
Samir Jindel a5d396cd25 [vm/extensions] Fix native extensions in hot-reload and running from snapshot.
This is a re-land of "[vm/extensions] Fix Loader::ReloadNativeExtensions(...)."

The native extension test was failing in hot-reload: this has been fixed.

Change-Id: Ic18da8cfbc6a3dba8aac09d654dce616487a67d7
Reviewed-on: https://dart-review.googlesource.com/c/92800
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Auto-Submit: Samir Jindel <sjindel@google.com>
2019-02-14 17:47:28 +00:00
Dan Rubel 94d8e730fb Remove parser enableSetLiterals flag
Change-Id: I5e806f2e4a1dd368417802f7b4ff18bc1b4d0250
Reviewed-on: https://dart-review.googlesource.com/c/92843
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-02-13 22:57:12 +00:00
Jens Johansen a200ef3124 Don't include main in computeTransitiveClosure
Entry will do.

Change-Id: I2f70e389249b8c411ae24ec39b341044d58a226d
Reviewed-on: https://dart-review.googlesource.com/c/91823
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-02-13 14:15:05 +00:00
Jens Johansen 3196b87f10 Incremental compiler: Include right libraries when entry point is translated
Without this CL the incremental compiler could potentially return too
few libraries (or possibly 0 libraries):

If the entry point is translated to a package-URI and there is no main,
the entry-library when doing the transitive closure cannot be found and the
output will be no libraries.

If the entry point is translated to a package-URI and there is a main,
the entry-library when doing the transitive clusire is only found because
of the otherwise unneeded `mainMethod` parametesr.

This CL adds tests and fixes the problem.

Change-Id: Icea72eb892cb0d16f0d86e3729e29ce026fa7073
Reviewed-on: https://dart-review.googlesource.com/c/92430
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-02-13 13:26:37 +00:00
Daco Harkes 7d46d4b5cb [vm / library] Foreign function interface prototype
Prototype for `dart:ffi` on Linux/MacOS x64 in JIT mode.
`dart:ffi` is experimental and its API is likely to change in the future.
Progress and design decisions are tracked in https://github.com/dart-lang/sdk/projects/13


issue: https://github.com/dart-lang/sdk/issues/34452
Change-Id: Ifa4566388e42c8757f154741d11e303465ef305d
Cq-Include-Trybots: luci.dart.try:vm-kernel-optcounter-threshold-linux-release-x64-try, vm-kernel-precomp-linux-debug-x64-try, vm-kernel-precomp-linux-release-simarm-try, vm-kernel-precomp-linux-release-simarm64-try, vm-kernel-precomp-linux-release-x64-try, vm-kernel-precomp-mac-release-simarm64-try, vm-kernel-precomp-win-release-x64-try, vm-kernel-mac-debug-x64-try, vm-kernel-asan-linux-release-x64
Reviewed-on: https://dart-review.googlesource.com/c/80124
Reviewed-by: Samir Jindel <sjindel@google.com>
Auto-Submit: Daco Harkes <dacoharkes@google.com>
2019-02-13 12:42:47 +00:00
Peter von der Ahé bffa51efa2 Add ClassHierarchyBuilder.getKernelTypeAsInstanceOf
Change-Id: I81a1a139f9d18f0b07e0719a924f0952c1759790
Reviewed-on: https://dart-review.googlesource.com/c/92128
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2019-02-13 10:51:55 +00:00
Peter von der Ahé 9c1b50b1aa Copy inferred mixin application type arguments to builder hierarchy
Change-Id: I31e6e6e6d71fc7d3995c83ac3b11a03153d565a6
Reviewed-on: https://dart-review.googlesource.com/c/92124
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-02-13 10:51:55 +00:00