Commit Graph

4770 Commits

Author SHA1 Message Date
Dan Rubel fd8c3f8436 Add more fasta parser switch statement recovery
This updates the fasta parser to gracefully recover
when a 'case' or 'default' keyword is not followed
by a colon.

In addition, the analyzer error code associated
with the fasta ExpectedButGot error template
has been changed
from UNEXPECTED_TOKEN
to EXPECTED_TOKEN.

Change-Id: Ic1cc01362b2ed796c0a0817504ac6aa9294fa9b3
Reviewed-on: https://dart-review.googlesource.com/30160
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-12-18 12:23:38 +00:00
Konstantin Shcheglov 31a0fe292d Remember import prefix name for static references.
Bug:
Change-Id: Ib71a9cc8e6c65d597f24c20c0260f7f37ef3674f
Reviewed-on: https://dart-review.googlesource.com/28541
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2017-12-16 05:09:35 +00:00
Dan Rubel 028773e032 Add fasta parser missing switch case recovery
Change-Id: I102586df07cf9178e47b5bb05e8b27af57f393c5
Reviewed-on: https://dart-review.googlesource.com/29920
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-12-16 01:34:53 +00:00
Paul Berry f52cc1b382 Get rid of the clumsy while loop in inferInvocation.
See discussion in
https://dart-review.googlesource.com/c/sdk/+/29744/3/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart#892
Change-Id: I7b63269573749a61ff9e211d9df8676eae66b7e7
Reviewed-on: https://dart-review.googlesource.com/30000
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-12-15 22:45:53 +00:00
Paul Berry ae9b0c42d7 Add type inference code to generate Instantiation nodes.
Fixes #31586.

Note that none of the back-ends handle Instantiation nodes yet, so the
language_2 tests added in this CL
(instantiate_tearoff_after_contravariance_check_test,
instantiate_tearoff_of_call_test, and instantiate_tearoff_test) fail
pretty much across the board right now.

Includes two fixes to Instantiation.getStaticType and the kernel type checker:

- Previously, they attempted to perform substitution on the full
  function type, which had no effect because the type parameters were
  bound.

- The type checker was not checking that type parameter bounds were
  satisfied.

Note that the front end doesn't yet check that type parameter bounds
are satisfied by the inferred type parameters.  I will address that in
a follow-up CL.

Change-Id: Ib0ad7a5fc5f4a2fdc8c99abe1f2d3d15b21a4974
Reviewed-on: https://dart-review.googlesource.com/29744
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-12-15 20:41:43 +00:00
Dan Rubel 8239aa093e Fix synthetic token offset and length
During fasta parser recovery, the offset and/or length of some
synthetic tokens was incorrect. This caused problems during
code completion.

Change-Id: Iace73d06bb5da3ae916c69b7823367d8fc6e16b8
Reviewed-on: https://dart-review.googlesource.com/29822
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-12-15 16:06:43 +00:00
Dan Rubel c780e6a935 Add fasta parser map literal recovery
Change-Id: Icde67bdef748a2bce4811d61bda19e9e4a008d52
Reviewed-on: https://dart-review.googlesource.com/29820
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-12-15 16:05:54 +00:00
Dan Rubel b16baaf8cf Add fasta parser property access recovery
Change-Id: Iece1dc1ea8eeb0928ffbcdefdbbdb54cb4277e31
Reviewed-on: https://dart-review.googlesource.com/29740
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-12-15 12:47:22 +00:00
Mike Fairhurst a9fe991cc5 First pass at plumbing fasta errors through to the analyzer. Hopefully this is
all satisfactory infrastructurally, organizationally, performance wise.

This does not handle summarizing errors so that we can produce them for existing
dill files, and some other places where special analysis is performed like on
the standard libs.

The CompilationMessage object is less rich than the Message object that other
code is using, see \#31644. However, workarounds included.

Bug:
Change-Id: I5b436b0de6051877801c1d128f43a9656df1b549
Reviewed-on: https://dart-review.googlesource.com/29400
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-12-15 00:49:55 +00:00
Konstantin Shcheglov 92bf47e7e4 When vm_platform_strong.dill is loaded, and an SDK library is requested, we don't need cycles.
R=brianwilkerson@google.com

Bug:
Change-Id: I0bd39b5bd8fa414a59b27b21e1a63196ec8a4300
Reviewed-on: https://dart-review.googlesource.com/29620
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-12-14 21:10:49 +00:00
Dan Rubel b709bc4bbe Fix AstBuilder interpolation expression construction
Add a new handleInterpolationExpression fasta parser event
so that AstBuilder can correctly construct interpolation expressions
with left and right brackets.

Change-Id: Icca977067fe3a28dbab83488108c7286ec135dca
Reviewed-on: https://dart-review.googlesource.com/29541
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-12-14 19:18:16 +00:00
Aske Simon Christensen d5fd7a3007 Eliminate error flag from library builder.
Change-Id: I4fe70ba733c80dcfa95b86447d1094b7338d83f2
Reviewed-on: https://dart-review.googlesource.com/29588
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2017-12-14 14:53:46 +00:00
Peter von der Ahé f42359cdd1 Remove collectAllClasses
Change-Id: I12390cc3a3f6dde2b2abe5ed5da4e6c5ce114ba7
Reviewed-on: https://dart-review.googlesource.com/28725
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2017-12-14 10:18:25 +00:00
Peter von der Ahé 7a40a6c3da Report an error on all classes involved in a cycle
Change-Id: I80221caf1f17acfe50b3c77da8e86e1bff54c67f
Reviewed-on: https://dart-review.googlesource.com/28724
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2017-12-14 08:47:25 +00:00
Dan Rubel 3f273903bb Add fasta parser incomplete field recovery
Change-Id: Ifb948c752d8cda3afcd39f80d4681a25fac9e3a8
Reviewed-on: https://dart-review.googlesource.com/29445
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-12-14 01:25:45 +00:00
Sigmund Cherem e0e94eca46 Workaround issue #31579.
Temporarily use the patch URI for procedures and constructors and adjust
file-offset on class metadata to workaround issue #31579.

This change should be reverted when we have proper tracking of both origin and
patch URIs for each patched element.

Change-Id: I451a39b57cb121c2de3b1a324adc8cdbb5e8962c
Reviewed-on: https://dart-review.googlesource.com/29004
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-12-13 21:30:24 +00:00
Samir Jindel 56ecbbde4b [kernel] Support 64-bit integer literals correctly in Fasta.
Bug:
Change-Id: Idfb037e79d247889fe6a7d9a9b475ca4f8637080
Reviewed-on: https://dart-review.googlesource.com/27800
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-12-13 20:35:19 +00:00
Sigmund Cherem f34af36ef9 [pkg:kernel] Add fileUri to Constructors
We have a fileUri for fields and procedures and it was missing in constructors.

This is needed to be able to correctly store the patch URI in patched
constructors and to be able to workaround
https://github.com/dart-lang/sdk/issues/31579.
Change-Id: Ic80d3dc87450ada8b39b555e9b16e162d0e40b45
Reviewed-on: https://dart-review.googlesource.com/29003
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2017-12-13 19:35:34 +00:00
Dan Rubel 3ab29148f4 Add fasta parser cascade recovery
Change-Id: I1cf32604acf2124a9d61621fbb4cfb9343d98d33
Reviewed-on: https://dart-review.googlesource.com/28840
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-12-13 18:30:25 +00:00
Peter von der Ahé e816c3fbc1 Remove unused argumentsWithMissingDefaultValues
Change-Id: I0961e74144fd9d86942e88cf525fe71e9a9c2b41
Reviewed-on: https://dart-review.googlesource.com/28740
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2017-12-13 16:48:24 +00:00
Dan Rubel ebddad2329 Fix fasta parser recovery of redirection in non factory
Change-Id: Ia9943fb3c600a042b71bd2901cf962c06f61b523
Reviewed-on: https://dart-review.googlesource.com/28940
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-12-13 15:24:55 +00:00
danrubel 1d174010cc fasta parser parseMethod cleanup
Change-Id: I67527349274f7422ca5ce33263c66fb8e88e23f9
Reviewed-on: https://dart-review.googlesource.com/28980
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-12-13 15:07:05 +00:00
Peter von der Ahé 40d80969d7 Track location for invalid types
Change-Id: I6c500f977498b5e54e581273bf3a3b171fc2e61b
Reviewed-on: https://dart-review.googlesource.com/28720
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2017-12-12 15:34:31 +00:00
Peter von der Ahé 0cad7e3168 Support reusing source library builders
Change-Id: Idc884e9c733bad0cb3e15be3cbaf248e8371196a
Reviewed-on: https://dart-review.googlesource.com/28663
Reviewed-by: Jens Johansen <jensj@google.com>
2017-12-12 15:02:11 +00:00
Brian Wilkerson 96c3b2a24d Convert Parser.rewriteAndRecover to return the token before the insertion
Change-Id: Ib7db1a7e48b48f2137edacd921b35d5c86313419
Reviewed-on: https://dart-review.googlesource.com/28521
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-12-12 14:16:45 +00:00
Dan Rubel c284c428bb Add fasta parser type parameter recovery
Change-Id: I6363aa558b2ac6dec3fb3c7ba1abd82dd8e98874
Reviewed-on: https://dart-review.googlesource.com/28060
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-12-12 14:06:40 +00:00
Peter von der Ahé 690b8865f5 Compute dependencies instead of strong components
Change-Id: I1d20ffc26951669391eaa2a67c02932a264d5eb1
Reviewed-on: https://dart-review.googlesource.com/28305
Reviewed-by: Jens Johansen <jensj@google.com>
2017-12-12 12:22:37 +00:00
Peter von der Ahé c9026e446e Pass offset to buildSupertype
Change-Id: I4a1cf524e7edbb9bc8d435fbea8a6b4eb440a077
Reviewed-on: https://dart-review.googlesource.com/28302
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2017-12-12 12:22:37 +00:00
Peter von der Ahé 08aa7e9114 Add context for override warnings
Change-Id: Icc53b580fddae02fa07341a004dc602db612dc0a
Reviewed-on: https://dart-review.googlesource.com/28301
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2017-12-12 12:22:37 +00:00
Peter von der Ahé a12ebf65e3 Add context to ClassBuilder diagnostics API
Change-Id: I823a800293b059857895bf38698fca487323e4f2
Reviewed-on: https://dart-review.googlesource.com/28300
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2017-12-12 12:22:37 +00:00
Peter von der Ahé cac6551376 Always clear StringToken canonicalizer after running Fasta
Change-Id: If994a644c2089e3e9cb57232baceb6b622106d19
Reviewed-on: https://dart-review.googlesource.com/28282
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2017-12-12 12:22:37 +00:00
Peter von der Ahé a70aba8efc Add ikg-variant constant to pick Fasta
Change-Id: I0826e32f4820a9c4ccb86c47b7cd8114320ae649
Reviewed-on: https://dart-review.googlesource.com/28281
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2017-12-12 12:22:37 +00:00
Peter von der Ahé 31b512faa2 Implement reusing libraries not affected by invalidated URIs
Change-Id: I2fbb6daaa8fe6ca5b136c639194ec49ae31c385f
Reviewed-on: https://dart-review.googlesource.com/27721
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2017-12-12 11:26:10 +00:00
Konstantin Shcheglov 5c580dbe21 Remember explicit static get/assign Class and offset.
Revert merging ResolutionApplier with ValidatingResolutionApplier.

Bug:
Change-Id: Ie55ebdcb5d63be26720156a28a68f2727ebc96d3
Reviewed-on: https://dart-review.googlesource.com/28380
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2017-12-11 21:46:13 +00:00
Brian Wilkerson fcfdb8a4d5 Replace TokenStreamRewriter.insertToken with insertTokenAfter
Change-Id: I110099eaf0db7f4b09a8225ffaf674e132ce3d43
Reviewed-on: https://dart-review.googlesource.com/28260
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-12-11 21:24:53 +00:00
Paul Berry 7b9025b407 Report errors when type inference fails due to a circularity.
Change-Id: I48e75d86140483d5f3b9c3ad17e47fe2dfdb722e
Reviewed-on: https://dart-review.googlesource.com/28361
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-12-11 21:24:13 +00:00
Paul Berry 1c6e907fc8 Report errors when type inference fails due to inconsistent overrides.
I will have a follow-up CL to cover type inference failures due to
circularities.

Change-Id: I8c9af501c150d4707ad06e6bbcdc3cabdfbf9207
Reviewed-on: https://dart-review.googlesource.com/28180
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2017-12-11 17:02:45 +00:00
Dan Rubel 6b73954d6c Update popList to remove popped values from the stack
Change-Id: I0d6f9a2550c7b49e06e4b18ad3473f679f85d377
Reviewed-on: https://dart-review.googlesource.com/28080
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-12-11 16:15:21 +00:00
Paul Berry 71b5fa86db Don't invoke type inference listener on synthetic for-in loop assignment.
This avoids the need for a clumsy workaround in the analyzer.

Change-Id: I2ee2ec25a7d13ccaccc4f5b817cf2026f4547378
Reviewed-on: https://dart-review.googlesource.com/27962
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-12-09 00:09:50 +00:00
Paul Berry ea7b31be82 Get rid of class ShadowSyntheticStatement, which is no longer used.
Change-Id: I18d325efb5c41babb1783e775ad148a6865ff443
Reviewed-on: https://dart-review.googlesource.com/27960
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-12-08 23:45:50 +00:00
Paul Berry 3e329b7996 Ensure that forwarding stubs do not forward to other forwarding stubs.
Fixes #31580

Change-Id: I3b58eedd4036ae42148fdcec74df6c79ed0efd26
Reviewed-on: https://dart-review.googlesource.com/27860
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-12-08 19:02:34 +00:00
Konstantin Shcheglov 8a510b6df9 Remember explicit static invocation Class and offset.
So, on Analyzer side each MethodInvocation with a target has the
reference and the type for this target.

Bug:
Change-Id: I76f142da300910445b3a3fe016fed4d04219e9b6
Reviewed-on: https://dart-review.googlesource.com/26402
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-12-08 18:07:50 +00:00
Konstantin Shcheglov 39b3e79dfe Apply resolution to CatchClause.
R=brianwilkerson@google.com, paulberry@google.com

Bug:
Change-Id: I0203f510802b9b258da608231957c9383f677360
Reviewed-on: https://dart-review.googlesource.com/27503
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2017-12-08 16:56:18 +00:00
Paul Berry 9a59be4777 Store the interface target of a forwarding stub.
This is a temporary measure to allow the analyzer team to make
progress until #31519 is fixed.

Change-Id: I056505ed0308c5b2ea3e3664a8943549c3c8548c
Reviewed-on: https://dart-review.googlesource.com/27460
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-12-08 16:48:41 +00:00
Brian Wilkerson fea3faa7f0 Replace some uses of closeBraceTokenFor to avoid the need to call previous
Change-Id: I14e12f8a90a9cf9fc31579257cd89ee633264172
Reviewed-on: https://dart-review.googlesource.com/27260
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-12-08 15:48:01 +00:00
Peter von der Ahé 5bd939bb59 Implement Dijkstra's path-based strong component algorithm
Change-Id: I2d8e395231861b8c7e760b929b53e7e5053fed8b
Reviewed-on: https://dart-review.googlesource.com/27222
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2017-12-08 08:26:12 +00:00
Paul Berry 12dc862d9e When type inferring closures, change Null arguments to Object.
Fixes #31546.

Change-Id: I1c69947f4589b6901ac11b2e6c9f6c3624678ad4
Reviewed-on: https://dart-review.googlesource.com/27411
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-12-08 00:05:39 +00:00
Paul Berry d35f6c79cd Set PropertySet.dispatchCategory.
Fixes #31437.

Change-Id: I9ba84f8a3660e6bbd4dd86761b8f03cd3b414c00
Reviewed-on: https://dart-review.googlesource.com/27086
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-12-07 17:24:39 +00:00
Dan Rubel 1ba0dbdb8a Improve local variable recovery some more
Change-Id: I0b1bb3e956e501416cbc786ccfc0ab98ead27946
Reviewed-on: https://dart-review.googlesource.com/27200
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-12-07 16:07:46 +00:00
Dan Rubel 87a3998f71 Improve local variable recovery
Change-Id: Ib3d84d2e40bbadee6bf1ccf81c6afb9669765e84
Reviewed-on: https://dart-review.googlesource.com/26901
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-12-07 15:28:15 +00:00