Commit Graph

1972 Commits

Author SHA1 Message Date
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 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
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
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
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
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
Paul Berry df9889787c Propagate type inference out of logical expressions.
This addresses some of the failures reported in #30620.

Change-Id: I4a528a2d45ef5df814063b433dcf8a664cce4097
Reviewed-on: https://dart-review.googlesource.com/13000
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-11 17:04:17 +00:00
Brian Wilkerson e942115fcd Fix an infinite loop in the parser
Change-Id: I0946867082afecde10afb00abedc94bb0f18f6d3
Reviewed-on: https://dart-review.googlesource.com/12040
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-10-11 15:40:30 +00:00
Paul Berry 655d3ce665 Account for forwarding nodes when looking up inherited members in InterfaceResolver.
This allows covariance information to propagate properly between
classes and avoids creation of unnecessary forwarding stubs.

Change-Id: Ib55c62adb74d16f94282e752e387634086001946
Reviewed-on: https://dart-review.googlesource.com/12600
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-10 15:55:14 +00:00
Aske Simon Christensen 2f9d4efff6 Produce error statement for return with value from generator
Introduces a handleInvalidStatement method in listeners to signal
that the previous statement was invalid.

Closes https://github.com/dart-lang/sdk/issues/29983
Change-Id: I08d69062aa626a554b88d11d2c8c0e31b0abbe28
Reviewed-on: https://dart-review.googlesource.com/11501
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-10-10 08:34:21 +00:00
Paul Berry 830e68e72d Test whether forwarding stubs handle default arguments correctly (they don't)
This test demonstrates issue #31027.

Change-Id: I2d9e8464b0304e1d41ddc775e8b5ffd37b6e8655
Reviewed-on: https://dart-review.googlesource.com/11141
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-10-06 22:38:46 +00:00
Sigmund Cherem 80e7d3b35f Build a strong version of outline.dll, and use it for front end strong mode tests.
(rebases CL 11366 after Peter's changes)

Change-Id: If9f3d331fb953a9890fa7952bd472cc39f541e84
Reviewed-on: https://dart-review.googlesource.com/11965
Reviewed-by: Paul Berry <paulberry@google.com>
2017-10-06 20:12:59 +00:00
Brian Wilkerson cf6fff1880 Rework the way AstBuilder finds documentation comments
Change-Id: Id3bdb6c68fdbf5c878da77feeb99907ada76ff0d
Reviewed-on: https://dart-review.googlesource.com/11261
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
2017-10-06 00:05:23 +00:00
Paul Berry 039f82f7ed Include generic covariance annotations for type parameters in kernel output.
This was inadvertently left out of f94d3950ad.

Change-Id: Ifc3bbd8358322e112bf6b57fc751570d6101c9b6
Reviewed-on: https://dart-review.googlesource.com/11561
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-05 21:40:53 +00:00
Paul Berry 0d931bb75f Take forwarding stubs into account when performing type inference.
Change-Id: I5e6af73ee59458d9324bc48bfb47c06e437cb836
Reviewed-on: https://dart-review.googlesource.com/11644
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-05 21:31:10 +00:00
Paul Berry b73bcd932f Merge top level type inference of methods into InterfaceResolver.
Type inference of methods now occurs during
SourceLoader.prepareTopLevelInference.  Since this method visits
classes in class hierarchy order, we no longer need special logic to
ensure that base classes are inferred before derived classes.

Change-Id: Idf9f67226005bee6986d026c255e83926b4253d6
Reviewed-on: https://dart-review.googlesource.com/11560
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-10-05 19:05:11 +00:00
Paul Berry cdbd085119 Handle a forwarding stub corner case.
This CL handles the case where a class overrides a concrete method
with an abstract one, but forwarding stub logic determines that a
concrete method is needed.  In this case we don't need to create a
full forwarding stub; we just need to add an implementation to the
abstract method that already exists.

We annotate this case as `/*@forwardingStub=implementation*/`.

Change-Id: Id0b0c6f84f666161f17942d3b4d7afc115c615f5
Reviewed-on: https://dart-review.googlesource.com/11367
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-05 16:47:10 +00:00
Paul Berry f94d3950ad Include generic covariance annotations in kernel text output.
Change-Id: I81a7b3ea692e94d7e9bbd8562f1771a7626e0715
Reviewed-on: https://dart-review.googlesource.com/10803
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-10-05 05:23:43 +00:00
Paul Berry 6fce6ba854 Modify InterfaceResolver to resolve non-accessors earlier.
We only need to retain long-lived forwarding nodes for getters and
setters; methods and operators can be resolved immediately, since
their resolution can't depend on top level type inference of
initializers.

This should help speed up InterfaceResolver by reducing the number of
long-lived objects it leaves in the heap.

Change-Id: I05f8d5ed1c12968f4382d43ae23955171cdbfc05
Reviewed-on: https://dart-review.googlesource.com/11241
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-10-05 05:17:16 +00:00
Peter von der Ahé e7f26dc769 Improve handling of qualified names.
Change-Id: I02d7cb034c268303bd51fc43f4e0d809f346e8d2
Reviewed-on: https://dart-review.googlesource.com/10500
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2017-10-04 18:34:49 +00:00
Paul Berry 7c82b747f8 Actually store forwarding stubs in Class objects.
Change-Id: I3792688a61cdba49b38a8da7f27e9b305fa7a54e
Reviewed-on: https://dart-review.googlesource.com/10704
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-04 17:30:49 +00:00
Peter von der Ahé 26fa9353db Clean up handling of invalid types.
Change-Id: Ied3595ac0ee1c5e164ca888504ae252d121e458f
Reviewed-on: https://dart-review.googlesource.com/10863
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2017-10-04 10:42:43 +00:00
Peter von der Ahé cda4f284b0 Implement warnings on unresolved this-sends.
Change-Id: Ia9ab202e157102c22b2705d13582d3529288f81e
Reviewed-on: https://dart-review.googlesource.com/8502
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2017-10-04 08:21:32 +00:00
Régis Crelier 23b57df3e1 Postpone addition of 'typeArguments' getter on Invocation class until the
Dart 2.0 revision of the core library, since it breaks google3 Dart integration.

Change-Id: If9036f6e8d90b30f142a245ae16754c177f8461e
Reviewed-on: https://dart-review.googlesource.com/10702
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Keerti Parthasarathy <keertip@google.com>
2017-10-03 23:28:02 +00:00
Aske Simon Christensen 868f5d9fa6 Recover from error in for initializer
When a variable declaration in a for initializer has an error,
an error-throwing expression statement is produced by the general
variable declaration parser code. The body builder was not prepared
for this, but was trivially extended to handle it.

Closes https://github.com/dart-lang/sdk/issues/29984
Change-Id: Iace9a095cc150e26e62ed17716823e62e5d2ece3
Reviewed-on: https://dart-review.googlesource.com/8801
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-10-03 15:09:09 +00:00
Paul Berry 99b757eb44 Move _recordInstrumentation from CovariancePropagator to InferenceResolver.
This will make it possible to delete CovariancePropagator without
regressing covariance instrumentation too badly.

Note that there are some small regressions due to the fact that
InferenceResolver doesn't yet correctly propagate covariance
annotations from a base class field to a subclass field/setter.  These
regressions can't be fixed until after InferenceResolver is integrated
with top level type inference.

Change-Id: I29352484e9f13bbfa9b34d463c6b27eab7f9698f
Reviewed-on: https://dart-review.googlesource.com/10200
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-02 22:13:09 +00:00
Aske Simon Christensen accddd1d97 Use error message templates for error tokens
Also fixes unicode U+ notation in error messages to use uppercase
letters for the hex code, as per the Unicode Standard conventions.

Closes https://github.com/dart-lang/sdk/issues/29985
Change-Id: I6397e03cb3e0d5eca156621bb4b19dfa643d9437
Reviewed-on: https://dart-review.googlesource.com/9320
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-10-02 14:23:26 +00:00
Peter von der Ahé aff25fdef2 Restore compile.status.
Change-Id: I85a371fb9e4ff3003863b69ad62e90370619c8dd
Reviewed-on: https://dart-review.googlesource.com/9484
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2017-10-02 12:43:36 +00:00
Paul Berry 17a4f66126 Instrument the creation of forwarding stubs.
Change-Id: I98d15cdeaff72da4b6e4b8532689c24f42b6d501
Reviewed-on: https://dart-review.googlesource.com/9860
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-09-30 18:27:25 +00:00
Peter von der Ahé 132d707f6a Implement context for messages and use it for argument mismatches.
Change-Id: Iebf1a1fa0450ab900a9d220bf82bdf0f940c0399
Reviewed-on: https://dart-review.googlesource.com/7714
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2017-09-29 11:30:24 +00:00
Régis Crelier fc9b871d2f Mark vm-kernel compile/function_type_recovery as failing, but passes locally.
Change-Id: I6feb770f4cd8eefb2d13292de211978dce800b2f
Reviewed-on: https://dart-review.googlesource.com/9143
Reviewed-by: Régis Crelier <regis@google.com>
2017-09-28 02:25:55 +00:00
Régis Crelier 2b56f3977e Fix vm-kernel shaker/empty_program test expectation.
Change-Id: Iaff69f49aaa7b908b43ec9cf1c0466030c971020
Reviewed-on: https://dart-review.googlesource.com/9142
Reviewed-by: Régis Crelier <regis@google.com>
2017-09-28 02:07:45 +00:00
Régis Crelier db8b20107b Revert "Revert "Dart Core Lib change to support generic functions in class NoSuchMethodError.""
This reverts commit 8cf9ef22c4.

The expectations in Dart2js and Kernel tests have now been updated.

Change-Id: I9d65ff207490cfc783849b1b726db81cf56ecfc2
Reviewed-on: https://dart-review.googlesource.com/9124
Reviewed-by: Régis Crelier <regis@google.com>
2017-09-28 00:27:24 +00:00
Aske Simon Christensen 394f854fec Catch URI parse failure and report error
Closes https://github.com/dart-lang/sdk/issues/29977
Closes https://github.com/dart-lang/sdk/issues/29987
Change-Id: I448089036b20572d1cc8cb9d5e79cfd402caf273
Reviewed-on: https://dart-review.googlesource.com/8440
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-09-26 11:26:20 +00:00
Sigmund Cherem 4c893290e4 Reapply "Check whether type-arguments and type-parameters length match from the body builder."
This reverts commit 1ca12788c6.

Patchset 1 is the reverted CL, patchset 2 shows the changes.

Bug:
Change-Id: I4ffcb9ec20f2ac3c59d09adc3a6693f52c71601d
Reviewed-on: https://dart-review.googlesource.com/6360
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-09-26 04:09:37 +00:00
Aske Simon Christensen fab74715fe Report error if a member has the same name as the enclosing class
To recover properly from the error, change lookup priority in the Diet Listener from setter, field/getter/method, constructor to setter, constructor, field/method/getter.

Closes https://github.com/dart-lang/sdk/issues/29944
Change-Id: I3648501880e4e2059c386aa0032d37d0470aab96
Reviewed-on: https://dart-review.googlesource.com/7712
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-09-25 11:55:02 +00:00
Peter von der Ahé 5bd48bf6f4 Implement instrumentation of warnings.
Change-Id: Ifa1e093dd40b7b36da28adaf6193fb35996872fb
Reviewed-on: https://dart-review.googlesource.com/7555
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2017-09-22 11:35:22 +00:00
Aske Simon Christensen 944b7715bd More general handling of expected identifier after dot
Don't crash when a dot is followed by something which is not an identifier or keyword. Give a more general error message which does not assume that the unexpected token is a keyword.

Closes https://github.com/dart-lang/sdk/issues/29941
Closes https://github.com/dart-lang/sdk/issues/29943
Change-Id: I6e8ea9682680e5f374b70a6ee8c6bb9dd3271b4b
Reviewed-on: https://dart-review.googlesource.com/7270
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-09-22 10:32:55 +00:00
Brian Wilkerson 6edb5d8df7 Add recovery for field formal parameters
Change-Id: I09a1c6627a8fc1d67ffad4010212f2e9511612fe
Reviewed-on: https://dart-review.googlesource.com/7108
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
2017-09-21 13:47:52 +00:00
Dan Rubel 7e25f2a336 tests for annotation at EOF
Change-Id: I43aafd04dba8511cb603c6ca31a8135d868f52ef
Reviewed-on: https://dart-review.googlesource.com/7300
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-09-20 18:24:24 +00:00
Paul Berry 2d74043f3a Implement type promotion of type parameter bounds.
Fixes #30804.

Change-Id: I16094e54514b2109fda4b388083d2467a0b11bc7
Reviewed-on: https://dart-review.googlesource.com/7105
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-09-19 23:19:46 +00:00
Aske Simon Christensen 2259cd377c Better error message for illegal qualified types
Also simplifies handleType to include only the relevant cases.

Closes https://github.com/dart-lang/sdk/issues/29940
Closes https://github.com/dart-lang/sdk/issues/29945
Closes https://github.com/dart-lang/sdk/issues/29980
Change-Id: If685437a7689aadaf980cc626be09296c74d00e9
Reviewed-on: https://dart-review.googlesource.com/6920
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2017-09-19 13:20:03 +00:00
Konstantin Shcheglov 329523060f Parse annotations for enums and named mixin applications.
R=ahe@google.com, paulberry@google.com, sigmund@google.com

Bug:
Change-Id: Iadc4de193176be22ea0af8f371f578df938b423c
Reviewed-on: https://dart-review.googlesource.com/6167
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-09-15 23:27:08 +00:00
Sigmund Cherem 1ca12788c6 Revert "Check whether type-arguments and type-parameters length match from the body builder."
This reverts commit 321a4ec048.

Some VM tests expect to see the behavior with a raw type instead of
an invalid type. I'll revert first, then resend this CL with the default
result changed.

R=ahe@google.com

Change-Id: I2cdd855dbaec93d0a0c257f7e202518fd9b59c81
Reviewed-on: https://dart-review.googlesource.com/6342
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-09-15 22:15:09 +00:00
Sigmund Cherem 321a4ec048 Check whether type-arguments and type-parameters length match from the body builder.
Bug:
Change-Id: I395365393c9032ff179d675f42ca56b7981531e0
Reviewed-on: https://dart-review.googlesource.com/5620
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-09-15 20:37:41 +00:00
Paul Berry 24e1a84fcd Add more tests of forwarding stubs for fields.
Change-Id: I0229fdaadc80dcea6e9977e3af015202352e2e32
Reviewed-on: https://dart-review.googlesource.com/6200
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-09-15 19:13:27 +00:00
Sigmund Cherem b09e403e5c Fix command to update expectations
Change-Id: I0c9ec26c1b94779e1b31c045f82864ccce6d0266
Reviewed-on: https://dart-review.googlesource.com/6164
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Sigmund Cherem <sigmund@google.com>
2017-09-15 17:47:49 +00:00
Paul Berry d161b43df7 Fix annotations on forwarding stubs to match new terminology.
Also add a missing test case.

Change-Id: I662e666227fab2ab004869bc126eb1428d9eb9a2
Reviewed-on: https://dart-review.googlesource.com/6180
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-09-15 17:32:33 +00:00
Paul Berry ccc177b1ce Extend covariance checks to handle fields.
Change-Id: I8f9a7569977f2fe21da3c121903190ee507b4414
Reviewed-on: https://dart-review.googlesource.com/6161
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-09-15 16:45:42 +00:00