Commit Graph

1002 Commits

Author SHA1 Message Date
Aske Simon Christensen 0b57b67ecb [CFE] Move const set desugaring to constant evaluator.
To properly recognize control-flow constructs in sets, the constant
evaluator needs to get un-desugared set literals. This commit skips the
desugaring of const set literals if the constant evaluator is enabled
and adds a similar desugaring in the constant evaluator.

Doing the desugaring in the constant evaluator (which can be called
independently of Fasta) necessitates that dart:collection is indexed
in CoreTypes. We can remove this indexing again when the VM gains
native support for set constants.

Change-Id: Ibddafdcb182e4471012801745b51b529805b7b9f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/98008
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-03-28 15:00:58 +00:00
Jens Johansen a977273262 Re-allow the incremental compiler to load modules
This reverts commit 4d43abdd9f2f3026ccfabaa5495499b3ea220430 and adds a
fix.

Change-Id: Id80186aba02dd80171aac3843d63aa4f42c5ca17
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/98017
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-03-28 12:53:01 +00:00
Jens Johansen 32a5fa0a83 Allow incremental compiler to just create outline
Change-Id: I996787821f01f21bb41be837e6d4c25a2114e017
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95384
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-03-28 08:44:56 +00:00
Jens Johansen 83e6e9f8e6 Allow the incremental compiler to load modules
Change-Id: I63bbbdfc94ac6ab0b7b8cce104fe38c4ba592f34
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95382
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-03-28 08:39:41 +00:00
Vyacheslav Egorov c9ecdabe5d Revert "Combine override checks and override-based inference in one phase"
This reverts commit 9db4119b67.

Revert "Change default of 'keepFields' in constant transformation to true"

This reverts commit b1e14cbe5f.

Revert "[fasta] Don't create forwarding stub if there's already a member"

This reverts commit 51da94da76.

These commits are reverted to unblock rolls into Flutter.

b1e14cbe5f is reverted because it contained
changes that prevented clean revert of the other CLs.

Change-Id: I8d3c00f0c1b146f4debe7f1a1a7de75be154e265
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97802
Commit-Queue: Alexander Aprelev <aam@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2019-03-25 19:40:26 +00:00
danrubel 466b6884dc add scanner/parser support for >>>=
Change-Id: I8bbf19e70f35aba600cb768fc3c7537f2aa604e9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97602
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-03-22 23:38:51 +00:00
danrubel 485640df2e update scanner tests to use scanString
... rather than directly referencing the scanner classes

Change-Id: I4b42ef7318d66b412bb57c396c1b3980aad6c8fc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97600
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-03-22 13:44:40 +00:00
Peter von der Ahé 9db4119b67 Combine override checks and override-based inference in one phase
Change-Id: I2760f72f4eaa44bd192747179e843f017db30874
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97301
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-03-22 08:59:48 +00:00
danrubel 266d823f5c remove unused scanner error list
Change-Id: I3dd5d66dcf05ae2bf9f2087724801cae4f3b6036
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97542
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-03-21 22:33:02 +00:00
danrubel 1d7dcfff97 Cleanup scanner tests
Change-Id: I9d579b136c6ff8f83cea1715f3e698eeca8692f6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97446
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-03-21 15:01:18 +00:00
Jens Johansen eb344e2072 Keep live libraries and uri to source in sync
This CL removes the sources from uriToSource for libraries
the incremental compiler doesn't keep around.

This includes:
* Explicitly invalidated libraries, also if in a package.
* Transitively invalidated libraries, also if in a package.
* Libraries that are now no longer referenced in the resulting whole
  program, unless it's in a package.
* Libraries from packages that are implicitly invalidated by an
  updated .packages file (e.g. if the .packages file no longer
  reference it or reference a new version of it).

This does *NOT* include:
* Libraries from packages that are not invalidated and that are still
  mentioned in .packages, even if the actual libraries are no longer
  referenced in the resulting whole program. The reason is that these
  libraries are kept around in the incremental compiler.

Bug: 36197
Change-Id: I0ed41567ab54828585326ffd4dcb3722980bf874
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97201
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-03-21 10:08:30 +00:00
Jens Johansen e9e0daee5c Add importUri and fileUri to Source.
This will enable the VM to map URIs to package-URIs to solve problems
such as https://github.com/dart-lang/sdk/issues/35859

Change-Id: I15520325a5b81a99a7e3f56c2e35fd775d9da946
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/96905
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-03-20 08:44:33 +00:00
Kevin Millikin 4daa9b94ea [cfe] Compile if elements in lists and sets
If elements are compiled to if statements.  The type inference rules
including insertion of runtime checks are not yet implemented.

Change-Id: Iaa7ab709a7acacf952887b17ac1081a9fecd7cef
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97200
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-03-20 08:43:03 +00:00
Peter von der Ahé 479483ed13 Compute isGenericCovariantImpl in outline phase
Change-Id: I7ef6a39f66383a53c090cf5c47861cba84903271
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97084
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-03-20 06:52:13 +00:00
Dan Rubel 91b62553ce Make scanner reportErrors field final
Address comments in https://dart-review.googlesource.com/c/sdk/+/80509

Change-Id: Ifc19f283513f201c6d0935e4b20169a528feab20
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97047
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-03-18 17:24:06 +00:00
danrubel b2cb604b9d improve literal list/map/set control flow recovery
* new ExpectedElseOrComma parser error code
* update recovery tests to enable control flow recovery
* rework test to call parser.parseLiteralListSuffix rather than parser.parseLiteralListSuffix

Fix https://github.com/dart-lang/sdk/issues/36141

Change-Id: I5bdee19eb3828de8fbdc514a3820afaa1309df99
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95980
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-03-08 17:31:33 +00:00
Daco Harkes 12fcb9136c [cfe] Make resolveInputUri available for pkg/vm
use function suggested by ahe


[gardening] fix incremental compiler file encoding on Windows

Change-Id: I50fd02389afabe4903d9d88d009d58330515f825
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95642
Auto-Submit: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-03-06 15:31:09 +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
Dmitry Stefantsov e4aa4325b7 [fasta] Enable spread collections in unit tests
Change-Id: Id417704bdd15f8244f16fd61715f43910f678f7f
Reviewed-on: https://dart-review.googlesource.com/c/94541
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-03-01 15:17:13 +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
Peter von der Ahé 155ac6afbd Create subtype benchmarks based on dart2js and a large application
The large application is from an internal customer.

Change-Id: I670180a85ca402a34f99493d05de0124f8f89701
Reviewed-on: https://dart-review.googlesource.com/c/94296
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2019-02-26 14:07:42 +00:00
Peter von der Ahé b446d0a226 BenchMaker: a benchmark that reads the output from BenchMaker
Change-Id: I671d949d8a8c6f9c17ef022fd389dcde1769bf6f
Reviewed-on: https://dart-review.googlesource.com/c/94289
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2019-02-26 11:59:43 +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é 65698e2c2f Support mixin applications in type parser
Change-Id: I558c7c6d69b0ac026abf32775bdf7c25aae401be
Reviewed-on: https://dart-review.googlesource.com/c/94205
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-25 10:26:54 +00:00
Peter von der Ahé e395cdb1ad Support mutually recursive types
Change-Id: Ib294756657325eab348f5dba451d369f21d5a516
Reviewed-on: https://dart-review.googlesource.com/c/94204
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-25 10:26:54 +00:00
Peter von der Ahé 393c1df600 Improve performance of scope creation in type parser
Change-Id: I4e432d3eacf2bceaf1cbf72c08a58516687128cf
Reviewed-on: https://dart-review.googlesource.com/c/94203
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-25 10:26:54 +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
Peter von der Ahé 7f2a83ee07 BenchMaker: collect used type parameters
Change-Id: If6c18e66eded0ebe73575cca28dd77e5ae374890
Reviewed-on: https://dart-review.googlesource.com/c/93950
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-22 13:01:09 +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
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é d19d50f45f Support async in LUB test
Change-Id: I2b806125bd566809a7ca28a1de1bc47d91f40426
Reviewed-on: https://dart-review.googlesource.com/c/93413
Reviewed-by: Jens Johansen <jensj@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 0720888236 Temporarily ignore context of errors in expression_test
To get the same context on errors for expressions compiled against
something we just compiled and something we've loaded from dill we need
the dill to contain offsets on TypeParameters.
We cannot currently change the binary format to include it, so for now
ignore the context in expression_test.

Change-Id: Ifbcc4352650fc56974bf5a78d9eb615ecec34e39
Reviewed-on: https://dart-review.googlesource.com/c/92743
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-02-19 10:18:29 +00:00
Jens Johansen 6ccdffdb35 Test for expression compilation, type variables and initialize from dill
Prior to f4379435dd,
using a type variable in an expression used for
expression compilation, where the type variable came from a class
that was loaded from dill would fail because type variables wasn't set
up so the type variable didn't exist in scope.

This adds a test for it - the actual fix was landed in
f4379435dd.

Change-Id: Icccf796b96853ece5ea96d4f29d76bb92b59fc83
Reviewed-on: https://dart-review.googlesource.com/c/92564
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-02-19 10:11:24 +00:00
Peter von der Ahé 5622925369 Test of class hierachy from dill file
Change-Id: Ib6a8916fd096e4a9a417dbef8a3519ffe1a595aa
Reviewed-on: https://dart-review.googlesource.com/c/93408
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-15 14:18:29 +00:00
Peter von der Ahé e9f239777f Split test so Kernel ClassHierarchy isn't required
Change-Id: I61d860ac4b11b056545dc2ec4f5fe80bc055e49d
Reviewed-on: https://dart-review.googlesource.com/c/93166
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2019-02-14 13:38:38 +00:00
Peter von der Ahé 25ee9b9d47 Rename test
Change-Id: Iae6e583120cb16d9ceb624554037d31ddb13ac0f
Reviewed-on: https://dart-review.googlesource.com/c/93163
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-14 13:38:38 +00:00
Peter von der Ahé 7ff5be0ceb Convert LUB test to use type parser
Change-Id: I4833793fb12bb2ca5c0b0118bfc3bf525573f66a
Reviewed-on: https://dart-review.googlesource.com/c/93031
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-14 09:02:20 +00:00
Peter von der Ahé cf5a7cf36a Simplify class_hierarchy_test: Move tests of getLegacyLeastUpperBound to own file
Change-Id: Iff64676644f17c32dea2b01e0c25e92af1f63774
Reviewed-on: https://dart-review.googlesource.com/c/93024
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-13 14:35:15 +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
Peter von der Ahé 857d834e64 Remove obsolete expectMoreSpecific parameter
Change-Id: I6d5ff79ba0eec022812da14201fb30ae2625d355
Reviewed-on: https://dart-review.googlesource.com/c/92126
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-02-13 10:51:55 +00:00
Peter von der Ahé 0e4f917759 Implement subtyping of optional function parameters
Change-Id: I25e7fecf8c3080c1558f6a2d499b9ca618b42824
Reviewed-on: https://dart-review.googlesource.com/c/92122
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2019-02-07 14:10:01 +00:00
Peter von der Ahé 86f5aed890 Finish implementing IsTypedefSubtypeOf
Change-Id: Ib62f2100a85e10e4ef1eed3ed12144a90bc5e714
Reviewed-on: https://dart-review.googlesource.com/c/92043
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-02-07 14:10:01 +00:00
Peter von der Ahé 8d5b5bba41 Allow for non-function types in alias builders.
Change-Id: I735ee2df97a21a5cef38d18bdb35f83117749be6
Reviewed-on: https://dart-review.googlesource.com/c/92042
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2019-02-05 10:05:32 +00:00
Peter von der Ahé f45d103d67 Finish implementing IsTypeParameterSubtypeOf
Change-Id: I5e37f87946423b4c1373fb49b2ef482172ce2c87
Reviewed-on: https://dart-review.googlesource.com/c/91821
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-02-05 10:05:32 +00:00