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