Commit Graph

17382 Commits

Author SHA1 Message Date
Brian Wilkerson b7623c1e73 Add another test to help keep analyzer in sync with Fasta
Change-Id: Ib6c7fdd713fc40948005910607664520cbcbc88f
Reviewed-on: https://dart-review.googlesource.com/13940
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-10-13 23:06:16 +00:00
Harry Terkelsen cbfb3b642d Treat async-for-in statements as if they are wrapped in a try-finally
Change-Id: Ide40e69f93db199e2b452a4ee5acbbabe331bcbf
Reviewed-on: https://dart-review.googlesource.com/13921
Reviewed-by: Stephen Adams <sra@google.com>
Reviewed-by: Emily Fortuna <efortuna@google.com>
2017-10-13 22:19:46 +00:00
Jennifer Messerly 697e531c17 fix IdentityMap setter concurrent modification detection
Change-Id: Ib999210cf5709a4cef6a14a8d7fafe7b516f09c9
Reviewed-on: https://dart-review.googlesource.com/13641
Commit-Queue: Vijay Menon <vsm@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
2017-10-13 20:57:24 +00:00
Konstantin Shcheglov 6b5ba5351b Implement combining outlines for top-level declarations.
R=ahe@google.com, kmillikin@google.com, paulberry@google.com, sigmund@google.com

Bug:
Change-Id: Id849e68d3026457bdddb98604b92c7424961bbd9
Reviewed-on: https://dart-review.googlesource.com/11649
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2017-10-13 20:32:24 +00:00
Paul Berry 27f5e7f9ee Remove ClassHierarchy.forEachCrossOverridePair.
This method is no longer needed, since the front end iterates through
members directly to find cross overrides.

Change-Id: Ibc5180962a097c4d6194dbf4cbd1a0dea15050c2
Reviewed-on: https://dart-review.googlesource.com/13582
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-13 20:28:55 +00:00
Paul Berry 1dfdbae429 Test that generic covariance annotations are correct when based on inferred types.
Change-Id: I5d621aa47d088266efd86ee67c96111633b112ac
Reviewed-on: https://dart-review.googlesource.com/13625
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-13 19:46:37 +00:00
Konstantin Shcheglov df459aa19d Malbounded types should have all 'dynamic' type arguments.
See "19.8 Parameterized Types" in the specification.

"In short, any arity mismatch results in all type arguments being dropped, and
replaced with the correct number of type arguments, all set to dynamic. Of course,
a static warning will be issued."

R=ahe@google.com, paulberry@google.com, sigmund@google.com

Bug: https://github.com/dart-lang/sdk/issues/31062
Change-Id: Ia04b6c4da538582736617931eb7b7c20dc0a4259
Reviewed-on: https://dart-review.googlesource.com/13340
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2017-10-13 18:44:34 +00:00
Brian Wilkerson 75908a5315 Fix recovery inside expressions
Change-Id: I20bc1c87c258cb99032e0d8099e88f56779fc509
Reviewed-on: https://dart-review.googlesource.com/13880
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-10-13 18:06:05 +00:00
Brian Wilkerson 940b9e5fdf Connect a Fasta error to an Analyzer error
Change-Id: I9b47e6712b65c2e97693bfef4c022109431660f1
Reviewed-on: https://dart-review.googlesource.com/13860
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-10-13 18:05:44 +00:00
Brian Wilkerson 64eee95cb0 Minor clean-up of asserts and comments
Change-Id: Ib28a6ba789bfdf65f740863c28ca050512433736
Reviewed-on: https://dart-review.googlesource.com/13820
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
2017-10-13 17:55:58 +00:00
Konstantin Shcheglov 49503ac2cc Start using Kernel metadata support in KernelDriver and Analyzer.
Use it to implement documentation comments for typedef(s).

R=ahe@google.com, paulberry@google.com, sigmund@google.com

Bug:
Change-Id: I6f67f1c0e6b6f383a96e6bf6eee17f4786bc5f99
Reviewed-on: https://dart-review.googlesource.com/12700
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2017-10-13 17:47:53 +00:00
Brian Wilkerson 2aa005b11b Improved handling of semicolons
Change-Id: I85c42387bad18149bd2fb7718f6d40b82a95562f
Reviewed-on: https://dart-review.googlesource.com/13626
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-10-13 16:16:43 +00:00
Johnni Winther f80860ddbd Track exposure of this in inferrer
Change-Id: I07d899ed59fd28ffe258c518743c66aa20fa0540
Reviewed-on: https://dart-review.googlesource.com/13480
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-10-13 07:50:35 +00:00
danrubel 1582021556 Allow built-in keywords as top level function identifiers
Change-Id: I4287e8279d2ebe6f4460ce48409b7bd9ead16b96
Reviewed-on: https://dart-review.googlesource.com/13627
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-10-12 23:48:05 +00:00
Brian Wilkerson a22c8dc958 Recover when enum constants have metadata
Change-Id: I1432c3b2d4ce63c5520087c79dd33e48c57cee5b
Reviewed-on: https://dart-review.googlesource.com/13102
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-10-12 20:50:31 +00:00
danrubel bde7c0c1ce cleanup top level out-of-order tests
Change-Id: I473ed461ec754b172866462326e9eaae65ad9aff
Reviewed-on: https://dart-review.googlesource.com/13602
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-10-12 20:04:27 +00:00
Régis Crelier ae94cbf3d6 Revert "[kernel] Support generic closures in VM's kernel frontend."
This reverts commit a273ff8314.

Revert "[kernel] Support generic function types in the VM's kernel frontend."

This reverts commit 2cac57da09.

Revert "[kernel] Completely remove type erasure."

This reverts commit 3ffacb3814.

Change-Id: I8fdd40a6a8f34911028353f48249fdd4bf7dba76
Reviewed-on: https://dart-review.googlesource.com/13622
Reviewed-by: Alan Knight <alanknight@google.com>
Commit-Queue: Alan Knight <alanknight@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2017-10-12 20:01:11 +00:00
Brian Wilkerson d13822df9b Add support for replacing tokens to TokenStreamRewriter and use it in the parser
Change-Id: Icbd809f9baf4a88abc653f4df62d8c2e0457b677
Reviewed-on: https://dart-review.googlesource.com/13240
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-10-12 18:39:11 +00:00
danrubel 08544ff5af address comment in "Refactor and update modifier warnings"
See https://dart-review.googlesource.com/c/sdk/+/11800/1/pkg/front_end/lib/src/fasta/parser/modifier_context.dart#18

Change-Id: I3d8ba9b8bb2d67761cfd321ac5cbb30061dc099f
Reviewed-on: https://dart-review.googlesource.com/13583
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-10-12 17:42:13 +00:00
Alexander Markov 8e5c172b43 [Kernel, VM] Add internal kernel binary format version
This CL adds internal binary format version to kernel binaries.
Kernel readers in the front-end and VM verify that the reader's format
version matches the format version in the binary file.
This improves detection and diagnostics of stale kernel binary files.

Change-Id: Ic69b16057397a84627040bdd6420ffa1852a4b3f
Reviewed-on: https://dart-review.googlesource.com/13280
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2017-10-12 16:50:21 +00:00
Brian Wilkerson c2f11254c8 Recover from a class declaration with no body
Change-Id: Ib92d79087841d89ef4dd660345aa22e4006f59c1
Reviewed-on: https://dart-review.googlesource.com/13580
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-10-12 16:08:33 +00:00
Samir Jindel 3ffacb3814 [kernel] Completely remove type erasure.
Bug:
Change-Id: I146db24f3f745d9f87560b051f3e57b784de1cb4
Reviewed-on: https://dart-review.googlesource.com/12294
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-10-12 15:34:21 +00:00
Paul Berry 974d365e92 Get rid of ShadowProcedure._typeInferrer, since it is no longer used.
Also remove KernelProcedureBuilder.prepareTopLevelInference, whose
sole purpose was to populate it.

Change-Id: Id42e931ebe6a2b9da4f30e54fc3d33627f84a5b7
Reviewed-on: https://dart-review.googlesource.com/13581
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-12 14:55:11 +00:00
Samir Jindel 2cac57da09 [kernel] Support generic function types in the VM's kernel frontend.
Bug:
Change-Id: I3554562b409b35478437601f34e6263615409b38
Reviewed-on: https://dart-review.googlesource.com/12292
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2017-10-12 14:45:21 +00:00
Dmitry Stefantsov 41f1407ca8 [kernel-f11n] Prove that valid configuration is well-formed
Bug:
Change-Id: Ib7272cbe377f9e8c71ca4d289d170a0cc173ba6b
Reviewed-on: https://dart-review.googlesource.com/12640
Reviewed-by: Samir Jindel <sjindel@google.com>
2017-10-12 14:13:58 +00:00
Dmitry Stefantsov 6a5b0c7b60 [kernel-f11n] Add missing cases of configuration_wf and step
Bug:
Change-Id: I2c521a54a3d45b3908ebe0b6147a5cef1221e040
Reviewed-on: https://dart-review.googlesource.com/12441
Reviewed-by: Samir Jindel <sjindel@google.com>
2017-10-12 14:07:44 +00:00
Dmitry Stefantsov fcd2abfe7b [kernel-f11n] Define the properties of configuration validity
Change-Id: I8f312cb914042a8713eae9171c724708d986e09f
Reviewed-on: https://dart-review.googlesource.com/10540
Reviewed-by: Samir Jindel <sjindel@google.com>
2017-10-12 14:05:13 +00:00
Samir Jindel a273ff8314 [kernel] Support generic closures in VM's kernel frontend.
Change-Id: I0866971dc633c27df55811cba734d7cca0e849d4
Reviewed-on: https://dart-review.googlesource.com/12290
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2017-10-12 13:53:21 +00:00
Martin Kustermann ff41877e04 Update incremental_perf.dart to use named changesets, add IKG benchmarks
Change-Id: I24d1e10bff363f021e201afbb996299f2c6a860d
Reviewed-on: https://dart-review.googlesource.com/13160
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-10-12 11:17:48 +00:00
Johnni Winther 99af2fef35 Handle initializers in inferrer.
Change-Id: I0f21682448da8e427a73b849c8e6c8cc523c8201
Reviewed-on: https://dart-review.googlesource.com/12940
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-10-12 08:08:03 +00:00
Johnni Winther 0daecdf552 Skip captured variables in refinement.
Change-Id: Iad54833db0dbdc683790fccec3dca4f5cf435657
Reviewed-on: https://dart-review.googlesource.com/12442
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-10-12 07:59:13 +00:00
Paul Berry f29478aa4b Remove AccessorNode and related code, since it is no longer used.
Change-Id: I17bdd017c7b585e72960ff0138fd0967d73e662c
Reviewed-on: https://dart-review.googlesource.com/13304
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-10-12 06:25:30 +00:00
Vijay Menon 0553e2ba15 Regen DDC SDK
TBR=rnystrom@google.com

Change-Id: I4406552de08e379cac8a75f9c8e0e353dd927a21
Reviewed-on: https://dart-review.googlesource.com/13440
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Vijay Menon <vsm@google.com>
2017-10-12 04:07:05 +00:00
Dan Rubel 9370149f69 fix keyword as identifer edgecase
This addresses the situation where a top level built-in keyword
such as "import" or "export" is used as an identifier
in a top level declaration.

Change-Id: I663ed00502eadd2c639f79e68d26345783911faa
Reviewed-on: https://dart-review.googlesource.com/13361
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-10-12 03:38:48 +00:00
Dan Rubel 0702178907 cleanup recovery tests
Change-Id: Idb6b7cb513af5de613a8d9e3718ed93f645cc08b
Reviewed-on: https://dart-review.googlesource.com/13362
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-10-12 03:36:53 +00:00
Dan Rubel b00f57f9e6 refactor isKeywordOrIdentifier(token) to token.isKeywordOrIdentifier
Change-Id: Iefe1bb58f738649e8f420d543c33dcc9ec1eceb9
Reviewed-on: https://dart-review.googlesource.com/13360
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-10-12 02:35:31 +00:00
Paul Berry 89a9768a3c Use proxy objects to represent synthetic accessors.
Previously, we created genuine kernel objects to represent the
synthetic setters and getters associated with fields.  This led to
problems, because a given field would have multiple synthetic setters
and getters associated with it, and those synthetic getters and
setters would fall out of sync with each other during type inference
and covariance propagation.

This CL changes the kernel objects representing synthetic setters and
getters so that they are proxy objects; they inherit most of their
functionality from the corresponding kernel representation, but they
override the properties having to do with types and covariance so that
they refer to the underlying field.  This ensures that nothing gets
out of sync, since the field is the single source of truth about its
type and covariance.

Change-Id: Iff44c408e84ef34df337c81e7bfbd125d61020d8
Reviewed-on: https://dart-review.googlesource.com/13281
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-12 01:34:11 +00:00
Paul Berry b2c128e44d Drop pointers to InferenceNode objects as quickly as possible.
This should help reduce GC overhead.

Change-Id: I171aa1a24e4691d80a818d6ef3b11db0b3e3da84
Reviewed-on: https://dart-review.googlesource.com/13320
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-12 00:24:31 +00:00
Dan Rubel 1c7c72c679 Refactor and update modifier warnings
* Extract parse modifiers
    into ModifierContext and ModifierRecoveryContext
* Recover gracefully given out-of-order modifiers
* Generate analyzer error codes
* Address comment in prior CL
    https://dart-review.googlesource.com/c/sdk/+/10760/1/pkg/front_end/lib/src/fasta/parser/parser.dart#436

There are several more modifier error codes that need to be added.
I will tackle those in a subsequent CL.

Change-Id: I61e9182e14fa9d45b35029013a645329e6cc54ab
Reviewed-on: https://dart-review.googlesource.com/11800
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-10-11 23:32:10 +00:00
Sigmund Cherem 606e8502f8 fix recovery on ||= and &&= in dart2js
Bug: https://github.com/dart-lang/sdk/issues/31061
Change-Id: I3f8667d5dab92d256122484a6fc83b3527228085
Reviewed-on: https://dart-review.googlesource.com/12760
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2017-10-11 22:37:17 +00:00
Harry Terkelsen d62eb05435 Search for members in superclasses when searching for a class member
This changes 'hasConcreteMatch' to search the superclass chain in the
kernel implementation. This matches what the Element model does.

Change-Id: I6a0ab69bc7e6fe705139d6fa69fffc2346582702
Reviewed-on: https://dart-review.googlesource.com/12843
Commit-Queue: Harry Terkelsen <het@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2017-10-11 22:07:11 +00:00
Paul Berry 494d78efd5 Transition to new top level type inference logic.
With this CL, we stop creating the old AccessorNode objects and start
creating the inference nodes associated with the new ForwardingNode
infrastructure.  This fully integrates top level type inference with
forwarding stub generation.

There is a small difference between the behavior of the old and new
type inference infrastructure: in the old infrastructure, when
inferring the type of a getter or setter, we would consider both
inherited getters and inherited setters.  Now, we follow the spec.
This introduces some minor differences from analyzer functionality, so
the tests of this functionality are moved into the "inference_new"
directory.

Change-Id: Ie17df9abf1a3ab99e7d22683ffdf6d1b13ec86be
Reviewed-on: https://dart-review.googlesource.com/13180
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-11 21:32:10 +00:00
Konstantin Shcheglov 0920da5d52 One more pass to triage the rest of the tests.
I hope that's it for now.
At this point we need to fix Fasta problems to fix there tests.

R=brianwilkerson@google.com

Bug:
Change-Id: I68c4ea12a9f1ea524a3d15865f71675a91e18d66
Reviewed-on: https://dart-review.googlesource.com/13303
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-10-11 21:31:34 +00:00
P.Y. Laligand 7cc0fcb8cd Added build target for the analysis service.
Change-Id: I8e249db3b3dab87ed74d16a45534d2a30acc2872
Bug:
Reviewed-on: https://dart-review.googlesource.com/13103
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-11 21:28:26 +00:00
Konstantin Shcheglov ae07611599 InstanceMemberInferrer is not used when resynthesizing elements from Kernel.
So, there is no reason to test it.

Actually it fails, because we don't have hasImplicitType for parameters or
hasImplicitReturnType for executables, so we don't know whether we
should replace dynamic types of not.

R=brianwilkerson@google.com

Bug:
Change-Id: Ic0dc157be941bfe9eeb40cf537f4026d0a123a70
Reviewed-on: https://dart-review.googlesource.com/13300
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-10-11 21:03:52 +00:00
Jennifer Messerly 8c36b4685f fix #31049, fix #31050, avoid name collision for static members
Change-Id: I5a14315b99ace15aa6ac0c67f753bc3e1f39b3a9
Reviewed-on: https://dart-review.googlesource.com/12481
Commit-Queue: Jennifer Messerly <jmesserly@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
2017-10-11 21:00:02 +00:00
Konstantin Shcheglov 0a0c5f54cd Fix accidential failures for StrictModeTest_Kernel and TypePropagationTest_Kernel.
I reported issues for reasons why they were failing with Kernel
and fixed mistakes in tests and mocks.

R=brianwilkerson@google.com

Bug:
Change-Id: Ide98582047ebc0b862a2a94a1e1543f0f84d6bfc
Reviewed-on: https://dart-review.googlesource.com/13260
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-10-11 20:36:45 +00:00
Paul Berry 7df0fb6c28 Add type propagation support for conditional expressions.
This required adding a few extra parser events to allow the type
propagator to update its state when the `?` and `:` are encountered
(similar to what was done for `if`).

Fixes #30620.

Change-Id: I0d3ede8056fd8bab01ead5b242d00803286c9373
Reviewed-on: https://dart-review.googlesource.com/13182
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-11 20:21:22 +00:00
Konstantin Shcheglov 815737113d Triage StrongModeLocalInferenceTest_Kernel and StrongModeStaticTypeAnalyzer2Test_Kernel.
R=brianwilkerson@google.com

Bug:
Change-Id: I5589eedbbbf53b9e09c10284ebdec20c4e76eccd
Reviewed-on: https://dart-review.googlesource.com/13104
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-10-11 19:41:09 +00:00
Konstantin Shcheglov afaf47e29b Triage the rest of StaticWarningCodeTest_Kernel as Fasta problems.
Unfortunately there are nothing we can fix at the Analyzer side yet.

R=brianwilkerson@google.com

Bug:
Change-Id: I859f8608833fcdf254bf811906475ffec871665c
Reviewed-on: https://dart-review.googlesource.com/13241
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-10-11 18:32:50 +00:00