Commit Graph

264 Commits

Author SHA1 Message Date
Paul Berry b7b7a63407 Fix relative import from pkg/kernel/test to pkg/kernel/lib.
This doesn't work due to the file organization used in google3.

Change-Id: I814a087bd9c6e10fc7738c782af6f54fde3cf000
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99181
Auto-Submit: Paul Berry <paulberry@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-04-12 07:17:47 +00:00
Jens Johansen 460d00616c Better printing of imports
Before a import of, say "hello.dart" was printed as
"import './hello.dart'".
Now instead it is printed as "import 'hello.dart'".

At the same time we get rid of a dependency.

Change-Id: I352f0f507168fde75358704ec9bf0e248bb8179d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/98480
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-04-11 11:43:23 +00:00
Peter von der Ahé 76e3dfe096 Remove TypeEnvironment.legacyMode
Change-Id: I1bcebc66cbf4d3cb749fdc4cec382d936d4107ca
Reviewed-on: https://dart-review.googlesource.com/c/94212
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2019-02-25 12:17:54 +00:00
Peter von der Ahé ceb998ecc0 Remove unused TargetFlags
Change-Id: I33f1ffaec5bb9a936639424b78393cd187344ff9
Reviewed-on: https://dart-review.googlesource.com/c/94210
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-02-25 12:17:54 +00:00
Dmitry Stefantsov ef9592a9c7 [kernel] Add (de)serialization for ExpressionStatements
Change-Id: I388e8201086227a92adb2b7ac6622ea9def340eb
Reviewed-on: https://dart-review.googlesource.com/c/92563
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-02-20 12:40:21 +00:00
Dmitry Stefantsov 395c0e4b98 [kernel] Add text (de)serialization for NamedTypes
Change-Id: I70aa3092a4a7b9c7f77b4e007a9d6fd602883ccf
Reviewed-on: https://dart-review.googlesource.com/c/92560
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-02-20 12:40:21 +00:00
Dmitry Stefantsov 14f5936468 [kernel] Simplify (de)serialization encoding for FunctionTypes
Change-Id: I1fde87601eb57d1e73fbc262b5b6be659fa2d3a0
Reviewed-on: https://dart-review.googlesource.com/c/92431
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-02-20 12:40:21 +00:00
Dmitry Stefantsov 5e3e633d5d [kernel] Add text (de)serialization for TypeParameterTypes
Change-Id: I6a50629b40fab061f3bade650b11499b505f9c3d
Reviewed-on: https://dart-review.googlesource.com/c/92429
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-02-20 12:40:21 +00:00
Dmitry Stefantsov d60354b521 [kernel] Add binders and close terms as separate operations
Change-Id: I3e9372df5f37cad91d4609d052f05c94fdc54ab1
Reviewed-on: https://dart-review.googlesource.com/c/92428
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-02-20 12:40:21 +00:00
Dmitry Stefantsov a3736868c0 [kernel] Add text (de)serialization for type parameters
Change-Id: Id661da5ff16d9151852a563be08adc702c06b60a
Reviewed-on: https://dart-review.googlesource.com/c/92420
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-02-20 12:40:21 +00:00
Peter von der Ahé cf5a7cf36a Simplify class_hierarchy_test: Move tests of getLegacyLeastUpperBound to own file
Change-Id: Iff64676644f17c32dea2b01e0c25e92af1f63774
Reviewed-on: https://dart-review.googlesource.com/c/93024
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-13 14:35:15 +00:00
Peter von der Ahé a92ddcf34b Add package:expect/matchers_lite.dart
Change-Id: I671f317ee2c806380584646c75412762e549418e
Reviewed-on: https://dart-review.googlesource.com/c/93023
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-13 14:35:15 +00:00
Peter von der Ahé 0dfac95dac Simplify class_hierarchy_test: don't use package:test
Change-Id: I68319c20230b1194ef372fed4526bfcbb3b50442
Reviewed-on: https://dart-review.googlesource.com/c/93022
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-13 14:35:15 +00:00
Peter von der Ahé 5bf0065b46 Simplify class_hierarchy_test: don't use package:test_reflective_loader
Change-Id: I4eb3678ddda2b020404fba9adcc658362df8ebfa
Reviewed-on: https://dart-review.googlesource.com/c/93021
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-13 14:35:15 +00:00
Peter von der Ahé f954c0535c Simplify class_hierarchy_test: remove abstract class
Change-Id: I805325a165a8d0540c3c839b656cc39fb898228a
Reviewed-on: https://dart-review.googlesource.com/c/92980
Reviewed-by: Jens Johansen <jensj@google.com>
2019-02-13 14:35:15 +00:00
Dmitry Stefantsov 88fea76f58 [kernel] Add text (de)serialization for simple function types
Change-Id: Ied1be7c530793f94fea0c71ef8112a4524d6b815
Reviewed-on: https://dart-review.googlesource.com/c/92289
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-02-08 13:39:35 +00:00
Peter von der Ahé b6dc18e21e Remove legacyMode parameter and delete obsolete version of test
Change-Id: Ie50c43641279f9f33e7e9fffb57e6017e4d96b98
Reviewed-on: https://dart-review.googlesource.com/c/90946
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2019-02-01 11:51:06 +00:00
Jens Johansen eb956a2516 Add synthetic bit to Library flags
Fasta can generate synthetic libraries.
Previously we didn't include them when serializing, but that leaves
references in the binary to libraries that doesn't exist which isn't
ideal.

This change includes them, and adds a flag to kernel Libraries such that
we know they are synthetic.

Change-Id: Ied25a21cd1f384d318347021bc7ec18dae3a4e05
Reviewed-on: https://dart-review.googlesource.com/c/91722
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2019-02-01 11:00:26 +00:00
Dmitry Stefantsov bdeefc380a [kernel] Add ability to (de)serialize ConstructorInvocation
Change-Id: Ia25e1800c820c63a7e48818860ed3110de5473ea
Reviewed-on: https://dart-review.googlesource.com/c/90384
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
2019-01-22 12:14:57 +00:00
Dmitry Stefantsov 53217e6eb1 [kernel] Add ability to (de)serialize DirectMethodInvocation
Change-Id: I52371f85a76cf7c7422365052b248229a22a9287
Reviewed-on: https://dart-review.googlesource.com/c/89529
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-01-18 13:15:44 +00:00
Dmitry Stefantsov 5048889c54 [kernel] Add ability to (de)serialize StaticInvocation
Change-Id: I63aaa041dc939ae6199cd48593dfa7ccd6415559
Reviewed-on: https://dart-review.googlesource.com/c/89528
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-01-18 13:15:44 +00:00
Dmitry Stefantsov 7ea2dfad20 [kernel] Add ability to (de)serialize DirectPropertySet
Change-Id: I769941faa7b80eddb5a9c52f250191dca6c9ecd3
Reviewed-on: https://dart-review.googlesource.com/c/89527
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
2019-01-18 13:15:44 +00:00
Dmitry Stefantsov 50c06c55ba [kernel] Add ability to (de)serialize DirectPropertyGet
Change-Id: Ie75b45601f898a8286c72e97e11e7c08b64c00e8
Reviewed-on: https://dart-review.googlesource.com/c/89526
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
2019-01-18 13:15:44 +00:00
Dmitry Stefantsov 793fbc0d4a [kernel] Add ability to (de)serialize StaticSet
Change-Id: I1efa620f4dfad37f4cbcbca94e9fa12ca7bfd752
Reviewed-on: https://dart-review.googlesource.com/c/89586
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
2019-01-18 13:15:44 +00:00
Dmitry Stefantsov 6205d7e82c [kernel] Add ability to (de)serialize StaticGet
Change-Id: I8593c38c38f7aa4a9b8d573516681158db7f670c
Reviewed-on: https://dart-review.googlesource.com/c/89546
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
2019-01-18 09:31:06 +00:00
Dmitry Stefantsov f437fa02c2 [kernel] Nest *Environment into *State for (de)serialization
Change-Id: I580a67fd366546d7526e8b8204111aa89bb34c79
Reviewed-on: https://dart-review.googlesource.com/c/89284
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-01-18 09:31:06 +00:00
Dmitry Stefantsov 9157bbcf19 [kernel] Add text (de)serialization for VariableSet
Change-Id: Ib49aae4ee0f5ba1ff809dbf8b8ff0bc1c16e6838
Reviewed-on: https://dart-review.googlesource.com/c/89121
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
2019-01-11 12:16:43 +00:00
Dmitry Stefantsov 59b252fa0a [kernel] Add text serializer/deserializer for VariableGet
Change-Id: I884190dffbca5eb5181f21bc12972b375e31de65
Reviewed-on: https://dart-review.googlesource.com/c/88724
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-01-10 14:20:01 +00:00
Peter von der Ahé 50ea6344f5 Use TypeEnvironment.getTypeAsInstanceOf instead of ClassHierarchy
Change-Id: I1682baeb336b8be3cb6c5874715ef8ba730561e0
Reviewed-on: https://dart-review.googlesource.com/c/88803
Commit-Queue: Peter von der Ahé <ahe@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Auto-Submit: Peter von der Ahé <ahe@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-01-09 10:08:03 +00:00
Kevin Millikin a7b23e1cb5 [Kernel] Add text serializers for some invocations
Add serializers for instance getters, setters, and methods and for
super getters, setters, and methods.  This requires also serializing
Arguments.

Change-Id: I36d36892bf896cd12b48f9e77395c0584daf47f1
Reviewed-on: https://dart-review.googlesource.com/c/88710
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
2019-01-09 09:43:31 +00:00
Peter von der Ahé e7c808f910 Remove unused methods
Change-Id: I782700f972b846ec0d86b671c0c9b097ca73495d
Reviewed-on: https://dart-review.googlesource.com/c/88800
Commit-Queue: Peter von der Ahé <ahe@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Auto-Submit: Peter von der Ahé <ahe@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-01-09 09:40:51 +00:00
Jens Johansen 6c909a0efa Be explicit about whether a reference is allowed to be null or not
Before this change we allowed to serialize some references as null,
and would only complain when trying to read the dill back in.
This CL changes that so it complains up front.

It is unknown if any of this would ever occur in practise.

Change-Id: Id5e1af89abfb88a2d4249bd439b53b062d7aeffa
Reviewed-on: https://dart-review.googlesource.com/c/85392
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-01-04 08:39:36 +00:00
Kevin Millikin 9f866c8696 [Kernel] Do not serialize list lengths
The length is redundant if the list is delimited.  Serializing the
length had the slight advantage of preallocating a list of the correct
size and the disadvantages of being harder to maintain by hand and
ugly to read.

Instead, delimit lists.  The empty list is naturally ().

Change-Id: I17c14f4e0ca4934cfd3dcdf2a0047f87df80bb79
Reviewed-on: https://dart-review.googlesource.com/c/88320
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2019-01-03 10:16:14 +00:00
Kevin Millikin 66fa918fd3 [Kernel] Add text serializers for Let expressions
Serializing Let requires us to serialize variable declarations which are
complicated.  They require us to support optional values because they
have an optional initializer.  This is done by using a _ for none.

Having support for Let will allow us to support variable get and set.

Change-Id: I207183730389de70409ae6ca5017510420e36830
Reviewed-on: https://dart-review.googlesource.com/c/88182
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2019-01-02 15:49:49 +00:00
Kevin Millikin 01b23e23a4 [Kernel] Add text serializers for lists, sets, and maps
Use separate tags for the non-const and const versions of these
literals, just like the binary serializer does.

Change-Id: I3fabf02ce758a46ce55ff258723dd3ae11e6d497
Reviewed-on: https://dart-review.googlesource.com/c/88181
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2019-01-02 12:12:49 +00:00
Kevin Millikin 94e77946a0 [Kernel] Add text serializers for some DartTypes
Add serializers for some simple DartTypes and some expressions that
were blocked on being able to serializer DartTypes.

Change-Id: Ib16aa59e5782bddc820ea88e0885f258fc17bbd0
Reviewed-on: https://dart-review.googlesource.com/c/88180
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2019-01-02 10:45:35 +00:00
Kevin Millikin da0216e92d [Kernel] add serializers for more simple expressions
Support the rest of the expressions that do not require serializing
DartType, Name, Arguments, or references to other parts of the AST.

Change-Id: Icef3c2824354add1b13fa8c34fa7ff7c48bd2148
Reviewed-on: https://dart-review.googlesource.com/c/87963
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2018-12-21 14:00:10 +00:00
Kevin Millikin aeb873187d [Kernel] Add text serializers for lists
Add a serializer for lists that writes the length and then the elements.
Use it for serializing/deserializing StringConcatenation.

Change-Id: I61eb0ec319b0dbf94a2f3965b392a7ad12ce01dc
Reviewed-on: https://dart-review.googlesource.com/c/87962
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2018-12-21 10:46:00 +00:00
Peter von der Ahé e45e334548 Rename strong mode to legacy mode in package:kernel
Change-Id: Ia4a8a9cac7817a8db5771ec82541b556c705f7c8
Reviewed-on: https://dart-review.googlesource.com/c/86353
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-12-20 18:06:34 +00:00
Kevin Millikin 9d77f18784 [Kernel] Serialize logical expressions
Use the operator string as the tag.  This requires us to be able to
serialize a sequence of (two) things.  Homogeneous lists don't give us
static typing so we introduce a pair class.

This requires allocating a pair (serializing a list would require
allocating a list anyway).  When we start generating and optimizing
the combinator applications we expect to eliminate the pair allocation
overhead.

Change-Id: I5a00c6973b9065ac8a91f1a69b52d97554f1e823
Reviewed-on: https://dart-review.googlesource.com/c/87840
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2018-12-20 15:24:15 +00:00
Kevin Millikin 091e38afcb [Kernel] Implement more text serialization
Begin serializing expressions.  Fairly quickly you encounter the cyclic
dependency between class Expression and any subclass that contains
nested expressions.  It isn't possible to implement this with immutable
values in Dart.

A quick solution is to break the cycle somewhere.  Here, the cycle is
broken by late initialization of the serializer for Expression.
Serializers are still immutable (either const or with all final fields)
and still singleton instances (by virtue of being static fields).

Change-Id: I9886bcd57041744e0ef9e95f7b901fcb94b5e042
Reviewed-on: https://dart-review.googlesource.com/c/87801
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2018-12-20 13:45:04 +00:00
Kevin Millikin ff44e27c5a Implement text serialization of strings
Use json.encode/json.decode.  This gets some strings wrong but it
should be enough to make more progress.

Testing with hardcoded strings is already getting awkward.

Change-Id: Ie0b168bec611ed93da13fff90f86232bb56c713f
Reviewed-on: https://dart-review.googlesource.com/c/87663
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2018-12-20 11:12:49 +00:00
Kevin Millikin 612b6884c4 Split the text serializer into libraries
Move the combinators and the reader into their own libraries.

Change-Id: I85042a3f319c0fc945d658dd23a3959c74b7cbca
Reviewed-on: https://dart-review.googlesource.com/c/87660
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2018-12-19 14:24:22 +00:00
Kevin Millikin 4283735fa1 First pieces of Kernel text serialization
Combinator-based serialization of Kernel basic literals.

Change-Id: I6d08c80f47f233b178aa57ee6fc887ac91ed9e9c
Reviewed-on: https://dart-review.googlesource.com/c/87320
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-12-19 12:16:24 +00:00
Peter von der Ahé 54ef78b7c5 Remove non-strong vm dill files from SDK
Change-Id: Ia9337ec090333902ea8fc2492f2ffdac1bcff2d1
Reviewed-on: https://dart-review.googlesource.com/c/79520
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2018-10-12 12:42:57 +00:00
Aske Simon Christensen 6177615d71 [kernel] Fix subtype relationship for generic function types
Fixes #34623

Change-Id: I707502e74c5d867785a80b64bb1d19e09412659f
Reviewed-on: https://dart-review.googlesource.com/c/79212
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2018-10-12 11:58:37 +00:00
Peter von der Ahé 5b32ab3be6 Remove the word "strongMode" from some package:kernel libraries.
Temporarily using "legacyMode" instead, but I plan to rid these soon.

Change-Id: Iff8bcde03b6ebe4ad95f963f456c855e73e58926
Reviewed-on: https://dart-review.googlesource.com/c/79042
Auto-Submit: Peter von der Ahé <ahe@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2018-10-11 08:50:43 +00:00
G?nter Z?chbauer 2da0b9f4f1 fix some typos
Closes #34738
https://github.com/dart-lang/sdk/pull/34738

GitOrigin-RevId: d211bbacfe65355cf7304c990ffb6c79d7a229cf
Change-Id: If690e6d378e543b300e1f6a353ceae73e39c29db
Reviewed-on: https://dart-review.googlesource.com/c/78900
Reviewed-by: Alexander Thomas <athom@google.com>
2018-10-10 19:15:30 +00:00
Peter von der Ahé f942af451b Remove kernel interpreter
The test isn't normally run, and all 12 testcases caused a crash.

Change-Id: Ie1576e32b70f01aa775c3305bff2bc992eebf86f
Reviewed-on: https://dart-review.googlesource.com/c/78940
Auto-Submit: Peter von der Ahé <ahe@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2018-10-10 08:42:21 +00:00
Aske Simon Christensen bb2775b16a Only perform override check on declared members.
The code in class_hierarchy.dart that looped over override pairs
included implementations inherited from its superclass as potential
overriders, presumably in a broken attempt to include some interface
checks into the mix.

With this problem fixed, the special case in kernel_class_builder.dart
that excluded overriders not declared in the current class (i.e.
declared in a mixin) could be removed without incurring false
positives.

These override checks performed on members from a mixin produce an
extra context message indicating the class where the two members meet,
giving rise to the override relation (similarly to interface checks).

Since the same member can now override more than one member (or even
the same member more than once), the diagnostics message duplication
check has been extended to also include the context in the comparison.

Fixes https://github.com/dart-lang/sdk/issues/34235
Fixes https://github.com/dart-lang/sdk/issues/34285

Change-Id: I990e5719ae1749fd1aad1ad478aaa6e173cb170b
Reviewed-on: https://dart-review.googlesource.com/c/76900
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
2018-10-03 14:56:43 +00:00