Commit Graph

3345 Commits

Author SHA1 Message Date
Peter von der Ahé 1773006c96 Build for loops in BodyBuilder
Change-Id: I6e24c56f0e60805d4dc6c9ccf2583eabdc556cf4
Reviewed-on: https://dart-review.googlesource.com/c/85901
Auto-Submit: Peter von der Ahé <ahe@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-12-05 11:23:15 +00:00
Paul Berry 670f9ab49b Merge commit '65401da92251a7318e3264b816ce0c4e14701751' into analyzer 2018-12-04 15:38:21 -08:00
danrubel 848d93c0b5 Improve parser recovery given superclass field initializer
This improves upon the patch in
https://dart-review.googlesource.com/c/sdk/+/85780
to better recover given malformed constructor initializer such as

C() : super = 42;

and

C() : super.a = 42;

This also add a new FieldInitializedOutsideDeclaringClass error code
to better indicate the problem and how the user should fix it.

Change-Id: I4476c6c9fac20b0dd47970c2c81078a5c441bde1
Reviewed-on: https://dart-review.googlesource.com/c/85781
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-12-04 21:27:13 +00:00
Jenny Messerly d3c3341b8a [dartdevc] fix conditional imports in kernel backend
Change-Id: I694b67624dff65099ca8cb8147d2b56a3532cd6c
Reviewed-on: https://dart-review.googlesource.com/c/85880
Reviewed-by: Jake Macdonald <jakemac@google.com>
Commit-Queue: Jenny Messerly <jmesserly@google.com>
2018-12-04 18:39:46 +00:00
Paul Berry 0a4873bb35 Merge commit '191a09f540ac0516c4088fb8454c693743be8b3f' into analyzer 2018-12-04 09:41:55 -08:00
Peter von der Ahé e7a048d12e Make constructors private
Change-Id: Idf2775e07aca1db9e3fa856723e658306f51df37
Reviewed-on: https://dart-review.googlesource.com/c/85762
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Auto-Submit: Peter von der Ahé <ahe@google.com>
2018-12-04 09:11:02 +00:00
Peter von der Ahé 7ba67a0a74 Wrap various synthetic kernel nodes
Change-Id: I51172dee3fc6f19166bab22f5aabf83a13864e31
Reviewed-on: https://dart-review.googlesource.com/c/85742
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Auto-Submit: Peter von der Ahé <ahe@google.com>
2018-12-04 08:47:47 +00:00
Peter von der Ahé e3793d8661 Use helper methods to handle SyntheticExpressionJudgment
Change-Id: If4f0deef1e0aea630257d6c35c5e771db65ba474
Reviewed-on: https://dart-review.googlesource.com/c/85761
Commit-Queue: Peter von der Ahé <ahe@google.com>
Auto-Submit: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-12-04 08:16:48 +00:00
Paul Berry 43cd8ba822 Merge commit '4eeebc46cff4e47e6265e86f4774da103d060aa1' into analyzer
Conflicts:
	pkg/analyzer/CHANGELOG.md
	pkg/analyzer/pubspec.yaml
2018-12-03 12:20:40 -08:00
Paul Berry 7af0ba8dbf Merge commit '4088bb1302cebbb6922e1292037bc60127f1f852' into analyzer 2018-12-03 07:19:08 -08:00
Paul Berry 9a7f42d05a Merge commit 'dc346e6fdd89663388f8ae4e6767d6ece597c278' into analyzer 2018-12-03 06:35:54 -08:00
Peter von der Ahé 16cfb6c922 Remove TypeInferrerDisabled
Change-Id: I9ff7f3723c3acb05bc2649cda47b8c516f6523d9
Reviewed-on: https://dart-review.googlesource.com/c/85760
Auto-Submit: Peter von der Ahé <ahe@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-12-03 13:32:58 +00:00
Peter von der Ahé f9ee5da8f8 Add BodyBuilder.legacyMode getter
Change-Id: Ica42e03aed4a0789811bd0d654e1ac9f9a8251c8
Reviewed-on: https://dart-review.googlesource.com/c/85712
Auto-Submit: Peter von der Ahé <ahe@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-12-03 13:20:27 +00:00
Peter von der Ahé cd6ecf19fa Clone metadata in BodyBuilder instead of type inference
Change-Id: Iaf1344455c45693902d89c866c93395670e56251
Reviewed-on: https://dart-review.googlesource.com/c/85711
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
Auto-Submit: Peter von der Ahé <ahe@google.com>
2018-12-03 13:18:08 +00:00
Peter von der Ahé 4088bb1302 Remove prepareTopLevelInference from base builder API
Change-Id: I87fd423c30c184e4775291a0a45176cba618d8e6
Reviewed-on: https://dart-review.googlesource.com/c/85710
Auto-Submit: Peter von der Ahé <ahe@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-12-03 12:33:21 +00:00
Peter von der Ahé cc003934fc Use modifiers to store some flags
Change-Id: I1848186917d5538266e4eb5d6a76e07435d2d871
Reviewed-on: https://dart-review.googlesource.com/c/85707
Commit-Queue: Peter von der Ahé <ahe@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Auto-Submit: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-12-03 12:27:39 +00:00
Peter von der Ahé 0fe6f76ffb Improve handling of duplicated declarations
Change-Id: Ib13a14908c8c6a1fc8e78c1bf5b031317945a344
Reviewed-on: https://dart-review.googlesource.com/c/85682
Commit-Queue: Peter von der Ahé <ahe@google.com>
Auto-Submit: Peter von der Ahé <ahe@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2018-12-03 10:11:36 +00:00
Jacob MacDonald f72f07793b Handle null initializer, this is being hit internally when compiling large
projects.

I don't know the exact situation that is being hit here and if something else
is going on, or continuing here is sane. It does appear to work though.

Change-Id: I7cbdf59f954ed80e0a9c71430b5661a335e21d9b
Reviewed-on: https://dart-review.googlesource.com/c/85402
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Jake Macdonald <jakemac@google.com>
2018-11-30 17:07:41 +00:00
Paul Berry 63770042aa Merge commit '80c23f87a3e3123d7e337c1fc8bc3b5ec49b34a0' into analyzer 2018-11-30 08:12:45 -08:00
danrubel 80c23f87a3 Update more analyzer error codes to be generated
This updates more analyzer error codes to be generated
from the corresponding CFE error code.

Several of these analyzer error codes had multiple CFE error
codes mapped to them. In these situations, new analyzer error
codes were added to match the existing CFE error codes:

* EXTERNAL_FACTORY_WITH_BODY
* EXTERNAL_FACTORY_REDIRECTION
* CATCH_SYNTAX_EXTRA_PARAMETERS

Change-Id: Ib1cbb9e04d2092e4859e2cfadbcc85e03093f808
Reviewed-on: https://dart-review.googlesource.com/c/85431
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-11-30 15:00:36 +00:00
Jens Johansen 17d322b62a Handle AmbiguousBuilder in computeRedirecteeType
We get an AmbiguousBuilder if there are more than one redirecting
factory with the same name. We shouldn't crash though.

Fixes #35266.

Bug: 35266
Change-Id: I1ac0babdde49c4ca3966e6af5c580191baac0873
Reviewed-on: https://dart-review.googlesource.com/c/85390
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-11-30 12:58:07 +00:00
Jens Johansen 5410bc4098 Fix rare crash in type inference engine
Before this CL, running fasta compile on these 3 tests would make it
crash in type inference because the enclosingClass on a constrcutor
is null:

tests/language_2/const_error_multiply_initialized_test.dart
tests/language_2/constructor_duplicate_final_test.dart
tests/language_2/field3_test.dart

Note that these tests are all multi-tests and they are here run
unprocessed. The compiler crashes only after issuing errors.
The crash likely happens because of multiple definitions of
constructors with the same name.

This is a cut-down version that crashed prior to this CL:

```
class C {
  final d;

  C() {}
  C(this.d) {}
}
```

Fixes #35258.

Change-Id: I350c55428932ef0ae76f78875177b08acf95cdfc
Reviewed-on: https://dart-review.googlesource.com/c/85363
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2018-11-30 12:57:17 +00:00
Aske Simon Christensen c45abca648 Get rid of double colons in override error messages.
Change-Id: Ice49347ab20fcf02971abe724b7233ca5fdf03e5
Reviewed-on: https://dart-review.googlesource.com/c/85582
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-11-30 11:36:23 +00:00
Aske Simon Christensen 8ab76a521a Use new type printer for bound errors on method calls.
Change-Id: I3b098a1fd1d52718e19c37816dd1a19680bdf0f6
Reviewed-on: https://dart-review.googlesource.com/c/85581
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-11-30 11:36:23 +00:00
Aske Simon Christensen 3a52e7bc31 Avoid copying result arrays for nested types in type labeler.
Change-Id: Iab38c942d00c0c5d530b12e3c320cee39daeab5c
Reviewed-on: https://dart-review.googlesource.com/c/85583
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2018-11-30 10:45:23 +00:00
Jens Johansen ad62f21e5b Fix crash with multiple same-named redirecting constructors
Without this CL we end up putting a null-reference in the tree because
the parent is never set on the redirecting constructor we try pointing
to.

Fixes #35259, #35260.

Change-Id: I8ad520453742ff1de8dd9ca5e619f9edbff9971c
Reviewed-on: https://dart-review.googlesource.com/c/85384
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-11-30 08:53:10 +00:00
Jens Johansen c2bd36e94d Add --omit_platform as option to fasta.
Change-Id: I9f8b7b89a0440bbff8b466ed2e4f2af73c72c023
Reviewed-on: https://dart-review.googlesource.com/c/84428
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-11-30 07:48:15 +00:00
Paul Berry b72ca19f33 Merge commit 'c9aaa7a654b1cac1307c854ba38f4dc995c86f09' into analyzer 2018-11-29 09:43:36 -08:00
Paul Berry 706776a14d Merge commit '80c4d3e3c70ba8d0dfcc3fd038f29a388652cf3b' into analyzer 2018-11-29 09:29:09 -08:00
Aske Simon Christensen c9aaa7a654 Re-formulation of type bound violation error messages
Change-Id: I7f0b99c184b02f6910da054b877b5b5bee86f6bc
Reviewed-on: https://dart-review.googlesource.com/c/85346
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-11-29 13:27:16 +00:00
Aske Simon Christensen 03a1fe30f5 De-duplicate some bound check code.
Change-Id: I75cb1b31f8b47525ee18c8d01a3fe534512ad579
Reviewed-on: https://dart-review.googlesource.com/c/85293
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-11-29 13:27:16 +00:00
Aske Simon Christensen 4427bb70bc Get rid of double colon notation for class members in messages.
Type variable bound violations on constructor/factory invocations
now mention just the class name (which is the one that has the type
variables) instead of the constructor/factory name.

Change-Id: I65330f1921451fef0157be01b4a5086855d80439
Reviewed-on: https://dart-review.googlesource.com/c/85291
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-11-29 13:27:16 +00:00
Aske Simon Christensen c959bd98af Print origins of types in bullet points below error messages.
This gets rid of the useless '#lib1::' prefixes on types in error
messages and instead adds a line to the error message for each
interface type appearing in the message stating where that type
originates.

Name clashes are disambiguated by appending markers like '/*1*/' and
'/*2*/' to the types whenever two interface types with the same name
appear in the same message.

The commonly used core types 'bool', 'num', 'int', 'double', 'String'
and 'Null' are excluded from the origin list unless they take part in a
name clash.

Change-Id: I017ea376d4f6ff2d4f3b36487774463f03bb3301
Reviewed-on: https://dart-review.googlesource.com/c/84604
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-11-29 13:27:16 +00:00
Aske Simon Christensen 5198e49ffd Use new type labeler API in message generation.
For now, it uses a dummy implementation that retains the old behavior.

Change-Id: Iab358b73af470b99d5bd0ed59028d96d26bae47f
Reviewed-on: https://dart-review.googlesource.com/c/84603
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-11-29 13:27:16 +00:00
Aske Simon Christensen aed186ad10 New printer for types and constants
Adds labels to ambiguous types and generates a bullet list of the
origins of all raw types contained in printed types.

Change-Id: I9b8a46aa8b1f463c6cd02b9df042075fc1c46404
Reviewed-on: https://dart-review.googlesource.com/c/84602
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-11-29 13:27:16 +00:00
Aske Simon Christensen c632e7cc6d Separate names of blacklisted core classes into their own file.
Change-Id: Idcb3a5f2179ef2e87e9ad17dbb38bac596218b8d
Reviewed-on: https://dart-review.googlesource.com/c/84601
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-11-29 13:27:16 +00:00
Paul Berry 589a823888 Cherry-pick f02e7bb374 to the analyzer branch
Original commit message:

    Rework parseLiteralSetOrMapSuffix to remove expression lookahead

    This reworks the set literal support to remove unnecessary lookahead
    by removing the listener.beginLiteralMapEntry event
    and renaming the listener.endLiteralMapEntry to handleLiteralMapEntry.

Change-Id: I608e94aadc2afb86c772fdc6ef24b0da32c5ddde
Reviewed-on: https://dart-review.googlesource.com/c/85410
Auto-Submit: Paul Berry <paulberry@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-11-28 23:53:01 +00:00
Brian Wilkerson 65787a250e Use the experiment flag to enable scanning the >>> operator
Change-Id: I93678479911b629c3b88edd76d1ffa0c1daebaf3
Reviewed-on: https://dart-review.googlesource.com/c/85520
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
2018-11-28 20:22:28 +00:00
danrubel 80c4d3e3c7 Fix set literal optimization
This fixes a bug in the parsing set literal optimization
https://dart-review.googlesource.com/c/sdk/+/84661

and the additional tests are on the analyzer branch in
https://dart-review.googlesource.com/c/sdk/+/85429

Change-Id: I518352a131bf444ff3536ee1fc9a27ad4e5bb114
Reviewed-on: https://dart-review.googlesource.com/c/85430
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-11-28 19:24:58 +00:00
Sigmund Cherem e9e70f0922 Reduce dependency on library spec from dart2js
Change-Id: I0d55b380f135d2e45a0dd112336bd87085e38c76
Reviewed-on: https://dart-review.googlesource.com/c/85471
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Sigmund Cherem <sigmund@google.com>
2018-11-28 17:12:11 +00:00
Paul Berry 854a7cfe15 Merge commit '43113760f2ea114c183f8965b0d48fbb7469dc7f' into analyzer
Conflicts:
	DEPS
2018-11-28 08:38:52 -08:00
Jens Johansen 43113760f2 Use readAsBytesSync in standard_file_system.dart as it is faster
Timing how long fasta spends on *reading* files when compiling dart2js
(when compiling via the VM) I get a good speedup:

Difference at 95.0% confidence
        -84031.2 +/- 10333.7
        -47.4004% +/- 5.82904%
        (Student's t, pooled s = 7085.44)

Change-Id: I0bb1a1fe6f9d430b47515b9b319069bf810d0aeb
Reviewed-on: https://dart-review.googlesource.com/c/85442
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2018-11-28 12:02:21 +00:00
Jens Johansen 1ec63ec7d5 Only one source of truth for uriToSource
Previously we had several places where different uriToSource was used.
This was both weird and led to errors when something refering to
some state was used to look up in another state.
This CL makes it so we only have one source of truth.

To not include sdk sources when serializing a component that only mixes
something from the sdk in, (or extends it or...), the serialization is
changed slightly to keep track of which uris come from actual
implementation. Before the sdk sources was explicitly removed in the
incremental compiler, but we want to limit those kinds of things,
which is why we're doing it differently here.

Fixes #35215.

Bug: 35215
Change-Id: Iaa5618fcb0ea42b13aba7720f34a87a85144e047
Reviewed-on: https://dart-review.googlesource.com/c/85175
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2018-11-28 10:57:01 +00:00
Jens Johansen 89936a2a0f Fix invalidating part specified via package uri via file uri
In the incremental compiler, if asking to invalidate a file via a file
uri, where the corresponding file is a part that has been used via its
package uri (as in "part 'package:foo/whatever.dart'"), we should still
invalidate it.

Before we didn't because we 'translated' the part uri to a 'file uri'
except it was still a package uri.
Now we do.

Change-Id: I276c6e7c772d6167178fa8b6594417d37d1dd1c4
Reviewed-on: https://dart-review.googlesource.com/c/85344
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-11-28 10:53:21 +00:00
Paul Berry 82add824fd Merge commit 'db89c2d1ac3e8b6c6130cbb714c4e242e6fefc27' into analyzer 2018-11-27 15:11:22 -08:00
Dmitry Stefantsov 57ecf81f91 [fasta] Handle function types in arguments of mixin applications
Fixes #34511

Bug: http://dartbug.com/34511
Change-Id: I88da959b329199fc879f4db6e282829d21f6670a
Reviewed-on: https://dart-review.googlesource.com/c/82987
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
Auto-Submit: Dmitry Stefantsov <dmitryas@google.com>
2018-11-27 12:26:32 +00:00
Dmitry Stefantsov 797334a531 [fasta] Fix crashes in function type builders cloning
Change-Id: Icef0108e051c08800a94e3e61eae1ac1b96f3d3f
Reviewed-on: https://dart-review.googlesource.com/c/82986
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-11-27 10:43:55 +00:00
danrubel 52892f7c47 Add scanner and parser support for new >>> operator
This adds support for the new >>> operator as detailed in
https://github.com/dart-lang/language/blob/master/accepted/future-releases/constant-update-2018/feature-specification.md#new-operators

Tracking issue: https://github.com/dart-lang/language/issues/60

Enable support by setting AbstractScanner.enableGtGtGt = true

Change-Id: I8e7d2fb341971452d8e05d734a1de612880fef5e
Reviewed-on: https://dart-review.googlesource.com/c/85421
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-11-26 22:12:25 +00:00
danrubel f02e7bb374 Rework parseLiteralSetOrMapSuffix to remove expression lookahead
This reworks the set literal support to remove unnecessary lookahead
by removing the listener.beginLiteralMapEntry event
and renaming the listener.endLiteralMapEntry to handleLiteralMapEntry.

Change-Id: Ia71fe69359b0447a60d729db34ec35ad25a54750
Reviewed-on: https://dart-review.googlesource.com/c/84661
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-11-26 20:03:19 +00:00
Dmitry Stefantsov dcc9f74a3c [kernel] Make instantiate-to-bound implementation in Kernel private
Change-Id: I04983b1d99a75054dd93ec6e7131eb7f0492540b
Reviewed-on: https://dart-review.googlesource.com/c/84638
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Auto-Submit: Dmitry Stefantsov <dmitryas@google.com>
2018-11-22 11:50:27 +00:00