Johnni Winther
16ea8422d5
[cfe] Fix encoding for sync*/async/async* extension tear-offs
...
The internal closure was wrongly marked with the async marker of the
torn-off method.
Change-Id: Ie29eee6ed77fb07e9c0992bd0e49590cc10edd3e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/166634
Reviewed-by: Jens Johansen <jensj@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2020-10-09 10:42:56 +00:00
Johnni Winther
8b07d1902c
[kernel] Remove DirectPropertyGet/DirectPropertySet/DirectMethodInvocation
...
These nodes are no longer used.
Change-Id: I40c8df7376f0c40a4122c22d934fb3c6f6fd520d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/165902
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2020-10-03 19:15:41 +00:00
Johnni Winther
f4501b6e83
Reland "[kernel] Rename Name.name to Name.text"
...
Including a deprecated getter to avoid breaking dependent code outside
the Dart repo.
Change-Id: I365957b7c2da6e0cb5c71eb8d2906b0dc6ff18ec
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/163062
Reviewed-by: Jens Johansen <jensj@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2020-09-17 06:10:49 +00:00
Johnni Winther
644df9b9fb
Revert "Reland: [kernel] Rename Name.name to Name.text"
...
This reverts commit c430a0ac0b .
Reason for revert: Will break flutter_frontend_server when rolled into google3
Original change's description:
> Reland: [kernel] Rename Name.name to Name.text
>
> Change-Id: I5240b0ff09faf35184998920202d7600dc97766d
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/162746
> Reviewed-by: Johnni Winther <johnniwinther@google.com >
> Commit-Queue: Johnni Winther <johnniwinther@google.com >
TBR=jensj@google.com ,johnniwinther@google.com
Change-Id: Ib6961f49dd416171c5d5935c490d79d6f7be779e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/162748
Reviewed-by: Johnni Winther <johnniwinther@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2020-09-16 08:22:55 +00:00
Johnni Winther
c430a0ac0b
Reland: [kernel] Rename Name.name to Name.text
...
Change-Id: I5240b0ff09faf35184998920202d7600dc97766d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/162746
Reviewed-by: Johnni Winther <johnniwinther@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2020-09-16 07:42:42 +00:00
Daco Harkes
7302e01a79
Revert "[kernel] Rename Name.name to Name.text"
...
This reverts commit 3ff8dd2f51 .
Reason for revert: Fails all CI builders. Possibly something landed
in the mean time.
Original change's description:
> [kernel] Rename Name.name to Name.text
>
> Change-Id: I93162fb387ba123b949e19a7829bd5614845b15d
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/162722
> Reviewed-by: Jens Johansen <jensj@google.com >
> Commit-Queue: Johnni Winther <johnniwinther@google.com >
TBR=jensj@google.com ,johnniwinther@google.com
Change-Id: I2ffe526dabf37ae09d5e4ab1fbe514925f6e8768
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/162744
Reviewed-by: Daco Harkes <dacoharkes@google.com >
Commit-Queue: Daco Harkes <dacoharkes@google.com >
2020-09-15 15:21:35 +00:00
Johnni Winther
3ff8dd2f51
[kernel] Rename Name.name to Name.text
...
Change-Id: I93162fb387ba123b949e19a7829bd5614845b15d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/162722
Reviewed-by: Jens Johansen <jensj@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2020-09-15 14:27:22 +00:00
Johnni Winther
a8f9f08253
[cfe] Don't find unnamed mixin application in least upper bound
...
InterfaceType's referring to unnamed mixin applications continuously
cause problems for backends since these might not correspond to
types supported at runtime. The LUB specification does not mention
how to handle these so it is valid skip these in the computation of
LUB.
Change-Id: I38f46bf43d5858dec473c26326b741cf36eb57d8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/145420
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com >
2020-09-09 13:00:17 +00:00
Johnni Winther
d267906184
[cfe] Ensure that noSuchMethod forwarders are not marked as member signatures
...
Change-Id: Id8a093db8d757b08cee97d9c7de1baa452531bb9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/158547
Reviewed-by: Jens Johansen <jensj@google.com >
2020-08-14 15:30:24 +00:00
Johnni Winther
b9c5118c73
[cfe] Don't mark external methods as abstract
...
Closes #31233
Related to flutter/flutter#62887
Change-Id: I96e5a1b8045f75f1ad02fb47e5e41fe402dc3dc1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/157481
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Jens Johansen <jensj@google.com >
2020-08-06 16:29:09 +00:00
Dmitry Stefantsov
142d09fed7
[cfe] Provide better context in verifier's diagnostics
...
Change-Id: I599eb100acab431fc5630305951120dfe98e79b1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/148763
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com >
Reviewed-by: Johnni Winther <johnniwinther@google.com >
2020-05-26 10:02:05 +00:00
Johnni Winther
3c0e9642d2
[cfe] Ensure default type on generic forwarding stubs/method signatures
...
Change-Id: Iad6246c55f45953bffe2c3de4a2e30a32db347d2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144820
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2020-04-27 16:25:18 +00:00
Aske Simon Christensen
e84af9b761
[cfe] Disallow annotations on type parameters of function types
...
Also, do not copy annotations on type parameters of functions into
their inferred types.
See https://github.com/dart-lang/language/issues/656
Change-Id: I1460007645a32ac56a505b23ab3ee8a457c3f994
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/123732
Commit-Queue: Aske Simon Christensen <askesc@google.com >
Reviewed-by: Erik Ernst <eernst@google.com >
2019-11-25 14:55:55 +00:00
Johnni Winther
970c164826
[cfe] Use correct types in transformations and start verifying getStaticType
...
With this fix Expression.getStaticType no longer throws on any known cases.
Users of getStaticType can therefore avoid enclosing static type computation
in try-catch.
Closes #38597
Change-Id: I52eaacd30256333d7c368e5d14f4e4956bafc96f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121988
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com >
2019-11-21 22:15:58 +00:00
Aske Simon Christensen
c504476dc4
[CFE] Extend verifier to check constants.
...
Add a flag to the verifier that tells it to assume that full constant
evaluation has been performed. It will then complain about anything
that should not be there after constant evaluation.
Also fix two bugs exposed by the new checks:
- The constant transformer did not visit annotations on type parameters
in function nodes.
- The InstanceCreation constructor did not set the parent pointers of
its children.
Change-Id: Ieef865a51892918e524da973b0cbaf52ed467181
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/123400
Reviewed-by: Johnni Winther <johnniwinther@google.com >
Commit-Queue: Aske Simon Christensen <askesc@google.com >
2019-11-07 09:53:26 +00:00
Martin Kustermann
70a7cbf49d
[vm] Support extensions in ffi transformation and tfa tree shaker
...
Change-Id: I8c3d13b1683224b918f51b2c75885dabf81fb906
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/115709
Commit-Queue: Martin Kustermann <kustermann@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Jens Johansen <jensj@google.com >
Reviewed-by: Samir Jindel <sjindel@google.com >
2019-09-06 10:05:29 +00:00
Johnni Winther
fe2f82650b
[cfe] Remove generics from Loader and UnresolvedType
...
+ cleanup raw types to remove severity rewrite for codeMissingExplicitTypeArguments
Change-Id: I30af950db640cb15ddeeb86e17d9e9cb960a76d1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/110902
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com >
2019-07-31 11:19:52 +00:00
Kevin Millikin
053dfbb2ac
[cfe] Compile list spread elements into block expressions
...
Change-Id: Ic869cbfb2f3dc13a56be771acf0e12df850ff3c6
Reviewed-on: https://dart-review.googlesource.com/c/94748
Commit-Queue: Kevin Millikin <kmillikin@google.com >
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com >
2019-03-04 08:29:56 +00:00
Kevin Millikin
c9b8bae4e6
[Kernel] Add BlockExpression to the Kernel language
...
This is not yet used or tested.
Change-Id: Id050802926ad6452df3c39ace12ea5dd56d4faaa
Reviewed-on: https://dart-review.googlesource.com/c/87970
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
Reviewed-by: Aske Simon Christensen <askesc@google.com >
Commit-Queue: Kevin Millikin <kmillikin@google.com >
2019-02-22 12:38:26 +00:00
Peter von der Ahé
cbe30dc0d5
Remove Target.disableTypeInference
...
Change-Id: I440b07258a79796092e14abf816f257d9af40427
Reviewed-on: https://dart-review.googlesource.com/c/86357
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com >
2018-12-19 17:21:51 +00:00
Leaf Petersen
b5fe750007
Strong mode fixes to kernel and dart2js
...
Change-Id: Ic51e0bbc31cf993ffb7d2ec6909b96c7ace964ed
Reviewed-on: https://dart-review.googlesource.com/63342
Reviewed-by: Kevin Millikin <kmillikin@google.com >
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com >
Commit-Queue: Leaf Petersen <leafp@google.com >
2018-07-10 19:19:24 +00:00
Peter von der Ahé
4f2bdff90b
Rename Program to Component
...
Change-Id: I1a3cc03fba9783807fa637a9d42fdbad68ee7686
Reviewed-on: https://dart-review.googlesource.com/31040
Commit-Queue: Peter von der Ahé <ahe@google.com >
Reviewed-by: Kevin Millikin <kmillikin@google.com >
2018-03-15 12:22:23 +00:00
Aske Simon Christensen
de2ce48e17
Finish type variables earlier so their bounds are available when building the program.
...
Check bounds in verifier.
Fixed an inconsistency in the printing of parent nodes in the verifier.
Closes https://github.com/dart-lang/sdk/issues/30838
Closes https://github.com/dart-lang/sdk/issues/31213
Closes https://github.com/dart-lang/sdk/issues/31700
Change-Id: I328ca2c5bfa01a6753a806abd2510c98fa2b7cfe
Reviewed-on: https://dart-review.googlesource.com/22500
Commit-Queue: Aske Simon Christensen <askesc@google.com >
Reviewed-by: Peter von der Ahé <ahe@google.com >
2017-12-22 11:06:52 +00:00
Martin Kustermann
d354a28cb2
[kernel] Add kernel2kernel constant evaluation, binary format as well as vm support
...
The introduced "constants" transformation can evaluate constant expressions. The
original use-sites of constant expressions are replaced by a new [ConstantExpression]
node, which points to a subclass of a new [Constant] class hierarchy. Constant
[Field]s and [VariableDeclarations]s will be removed, since all use-sites are
re-written.
The [Constant] class hierarchy is, similarly to the [DartType] class hierarchy, not
part of the AST tree (also has no parent pointer). The constants form a
DAG (directed acyclic graph).
There is no canonicalization requirement of the [Constant] objects referenced by the
AST (via [ConstantExpression]). Although it is beneficial to canonicalize them during
construction, since it reduces time spent in operator==/hashCode.
This CL furthermore adds support for a constant table in the binary format. Similarly
to [String]s, we canonicalize the constants before writing the table to the binary.
The constant table entries in the binary are written in a post-order way, to ensure
easy construction on the backend side.
The text format will be augmented with a "constants { ... }" section at the end,
which lists the constants in the same order as in the binary format.
The transformation can be used by those backends who choose to do so. It is not
enabled by default atm. It should therefore not affect analyzer, fasta or other
components.
Change-Id: I57cd9624fedcf537ab6870db76246149647bed21
Reviewed-on: https://dart-review.googlesource.com/14382
Commit-Queue: Martin Kustermann <kustermann@google.com >
Reviewed-by: Kevin Millikin <kmillikin@google.com >
2017-11-16 11:08:02 +00:00
Peter von der Ahé
6eff945874
Mark top-level error field as static.
...
Closes https://github.com/dart-lang/sdk/issues/30431
R=sjindel@google.com
Review-Url: https://codereview.chromium.org/2999033002 .
2017-08-29 12:39:00 +02:00
Erik Corry
e431e93e87
Revert two Kernel changes that were causing test failures.
...
Example failure:
python tools/test.py -m release -c dartk --builder-tag no_ipv6 \
language/function_type/function_type63_test
Revert "Serialize typedef parameters (including function typed ones) to Kernel and use it to resynthesize typedefs from Kernel."
This reverts commit afc392b66d .
Reverts https://codereview.chromium.org/2990783002
Revert "Add Member.documentationComment and use it to resynthesize documentation from Kernel."
This reverts commit 47ecf72272 .
Reverts https://codereview.chromium.org/2990873002
Also reverts some attempts to fix test files:
302b410364
https://codereview.chromium.org/2984343002
05ccf27015
https://codereview.chromium.org/2992683002
f71dcd7834
https://codereview.chromium.org/2984363003
Also had to revert some test changes that were committed on top of a red buildbot, in order to try to get back to a place where bots were green:
23952fdf56
https://codereview.chromium.org/2990773002
557cab2a3e
https://codereview.chromium.org/2985173002
R=johnniwinther@google.com , karlklose@google.com
BUG=
Review-Url: https://codereview.chromium.org/2986093002 .
2017-07-28 14:08:23 +02:00
Konstantin Shcheglov
afc392b66d
Serialize typedef parameters (including function typed ones) to Kernel and use it to resynthesize typedefs from Kernel.
...
R=ahe@google.com , brianwilkerson@google.com , sigmund@google.com
BUG=
Review-Url: https://codereview.chromium.org/2990783002 .
2017-07-27 11:53:15 -07:00
Peter von der Ahé
5095646191
Apply transformations after comparing to golden files.
...
R=paulberry@google.com
Review-Url: https://codereview.chromium.org/2939533002 .
2017-06-13 09:40:35 +02:00
Peter von der Ahé
5d08d5bb6c
Update verifier to correctly analyze types of fields.
...
Fixes #29511 .
R=paulberry@google.com
Review-Url: https://codereview.chromium.org/2855603002 .
2017-05-01 17:26:10 +02:00
Asger Feldthaus
ac40d0bb8e
Add typedef AST node boilerplate.
...
This adds the Typedef and TypedefType to the kernel AST,
with the relevant boilerplate.
Typedefs are not implemented in frontend or backend.
R=ahe@google.com , kmillikin@google.com
Committed: https://github.com/dart-lang/sdk/commit/d1c3ee4b35227cb6926f03479a34f82774523773
Review-Url: https://codereview.chromium.org/2825053002 .
2017-04-28 13:26:47 +02:00
Asger Feldthaus
3f1aa32183
Revert "Add typedef AST node boilerplate."
...
This reverts commit d1c3ee4b35 .
TBR
BUG=
Review-Url: https://codereview.chromium.org/2849803002 .
2017-04-28 12:54:19 +02:00
Asger Feldthaus
d1c3ee4b35
Add typedef AST node boilerplate.
...
This adds the Typedef and TypedefType to the kernel AST,
with the relevant boilerplate.
Typedefs are not implemented in frontend or backend.
R=ahe@google.com , kmillikin@google.com
Review-Url: https://codereview.chromium.org/2825053002 .
2017-04-28 12:39:21 +02:00
Peter von der Ahé
6b150cb01f
Verify rethrow and parents of variables.
...
R=asgerf@google.com
Review-Url: https://codereview.chromium.org/2800853005 .
2017-04-07 12:59:03 +02:00
Peter von der Ahé
4f6d58fc50
Implement nested switches and missing switch continue targets.
...
R=karlklose@google.com
Review-Url: https://codereview.chromium.org/2746923002 .
2017-03-13 13:52:39 +01:00
Asger Feldthaus
8bfc4b47c0
Implement canonical name scheme in kernel.
...
This adds a class CanonicalName that can represent a library, class,
or member. All references now go through a Reference object, which is
linked to both the AST node and its CanonicalName, so either can be
created first.
dartk now accepts multiple input files:
- If multiple dart files are given, they are all compiled.
- If multiple binaries are given, they are linked together.
Mixed dart and binary input is not supported by dartk.
dartk now has a flag --include-sdk which includes the entire SDK in
the output. This is so the SDK can be compiled alone and then linked.
Example of compiling separately and then linking:
dartk foo.dart -o foo.dill
dartk main.dart -o main.dill
dartk --include-sdk -o sdk.dill
dartk main.dill foo.dill sdk.dill --target=vm --link -o program.dill
dartk still has incredibly slow cold start due to the analyzer loading
the dart sdk, so this does not actually speed things up at the moment.
BUG=
R=ahe@google.com , kmillikin@google.com , kustermann@google.com , sigmund@google.com
Review-Url: https://codereview.chromium.org/2665723002 .
2017-02-23 14:12:10 +01:00
Peter von der Ahé
1be77216f1
Report problems through a method.
...
R=asgerf@google.com
Review-Url: https://codereview.chromium.org/2620133004 .
2017-01-31 11:07:13 +01:00
Peter von der Ahé
bd9d33736d
Restore verifier flags after failed verification.
...
R=asgerf@google.com
Review-Url: https://codereview.chromium.org/2614143003 .
2017-01-31 11:07:13 +01:00
Asger Feldthaus
8dd2b15951
Insert implicit downcasts in kernel strong mode.
...
This is implemented as a separate pass, although going forward
I would like the new frontend to insert these checks.
R=kmillikin@google.com
Review-Url: https://codereview.chromium.org/2619193003 .
2017-01-11 13:47:40 +01:00
Asger Feldthaus
440813c67b
Check that invocations have well-formed targets in kernel verifier.
...
This also fixes some issues in the frontend and transformers that
generated calls without the correct number of type arguments.
BUG=
R=kmillikin@google.com
Review URL: https://codereview.chromium.org/2533793005 .
2016-11-30 08:24:03 +01:00
Asger Feldthaus
640061d62e
Add more checks to kernel verifier.
...
We now check that classes and type parameters are not redeclared.
The verify_test also verifies that its test harness has no errors,
as this would make all the other tests useless.
BUG=
R=kmillikin@google.com
Review URL: https://codereview.chromium.org/2539743002 .
2016-11-29 13:04:43 +01:00
Asger Feldthaus
8f12489839
Add --verify-ir flag to dartk and test.py.
...
This replaces the old --sanity-check flag from dartk. Some files have
been renamed to avoid the wording "sanity check".
Compared to --sanity-check, the following checks have been added:
- variables are not referenced out of scope
- variables are not redeclared
- class type parameters are not referenced from static context
A unit test has been added to check that the verifier rejects certain
invalid ASTs.
BUG=
R=kmillikin@google.com
Review URL: https://codereview.chromium.org/2531873002 .
2016-11-28 12:21:19 +01:00