Commit Graph

35087 Commits

Author SHA1 Message Date
Michael Thomsen ea50890370 Fix links in front_end readme
Closes https://github.com/dart-lang/sdk/pull/44412
https://github.com/dart-lang/sdk/pull/44412

GitOrigin-RevId: 145a40371fb91b8ade302b31bb6eab20e07bde43
Change-Id: I0950e524e7af0d65ce146dbac1465196f322c0aa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175260
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2020-12-07 15:02:57 +00:00
Johnni Winther c7519a3f01 [cfe] Pass static target to inferInvocation
This is used to detect calls to identical which need special treatment
for flow analysis.

Change-Id: I5109ccc94cdffd8cd46843adfbe4df6b83b92122
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175240
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-12-07 13:21:57 +00:00
Sam Rawlins 56cf16887c Analyzer: Don't report on prefixed import with illegal references
Bug: TODO from https://github.com/dart-lang/sdk/issues/38784
Change-Id: I4ecdaf333c2613eb5fa0c57e4a8f8be56c35bb21
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175184
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-12-07 01:27:25 +00:00
Alexander Markov f04757f6ea [vm] Specialize List.empty calls for growable and fixed-length lists
TEST=existing tests for List

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

Change-Id: I89eecb15b535cc5a3e1aeea350a306883b463b9f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175003
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2020-12-06 23:31:55 +00:00
Sam Rawlins 3f8ce51efd Analyzer: Do not report unused prefixed import when extension is used
Fixes https://github.com/dart-lang/sdk/issues/40298

Change-Id: I2fb70249749b3bb086470714e5d1e16e80c30811
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175185
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2020-12-06 19:36:44 +00:00
Konstantin Shcheglov c9854e3453 Flow analysis is not available outside of function bodies and initializers.
This fixes a group of crashes during fuzz testing.

FAILURE: z({=?[
[NoSuchMethodError: The getter 'flow' was called on null.
Receiver: null
Tried calling: flow
#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
#1      ResolverVisitor.startNullAwareIndexExpression (package:analyzer/src/generated/resolver.dart:743:21)
#2      ResolverVisitor.visitIndexExpression (package:analyzer/src/generated/resolver.dart:1552:5)
#3      IndexExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:5993:49)
#4      AstResolver.resolve (package:analyzer/src/summary2/ast_resolver.dart:85:10)
#5      DefaultValueResolver._parameter (package:analyzer/src/summary2/default_value_resolver.dart:107:18)
#6      DefaultValueResolver._parameters (package:analyzer/src/summary2/default_value_resolver.dart:121:7)
#7      DefaultValueResolver._function (package:analyzer/src/summary2/default_value_resolver.dart:89:5)
#8      DefaultValueResolver.resolve (package:analyzer/src/summary2/default_value_resolver.dart:47:9)
#9      LibraryBuilder.resolveDefaultValues (package:analyzer/src/summary2/library_builder.dart:313:43)
#10     Linker._resolveDefaultValues (package:analyzer/src/summary2/link.dart:230:15)
#11     Linker._buildOutlines (package:analyzer/src/summary2/link.dart:89:5)
#12     Linker.link (package:analyzer/src/summary2/link.dart:69:5)
#13     link (package:analyzer/src/summary2/link.dart:33:10)


Change-Id: I6145a1f728d432be8d0fa55235858e091030461c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175187
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-12-06 05:39:04 +00:00
Brian Wilkerson ce74d6e4ed Restore generation of protocol_common in analysis_server_client
Change-Id: I897380a721c669671b2207b74587b61ed56f23f5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175183
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2020-12-06 04:59:04 +00:00
Konstantin Shcheglov d518832a7c Simplify type hierarchy for resynthesize tests.
Change-Id: I82ba179c4f2756c63f3a30ea71f5f6332b902a6d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175180
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-12-05 18:31:33 +00:00
Sam Rawlins f1916cf0bb Analyzer: do not report an undefined getter with an empty name
Such code is already reported with parser errors, like missing_identifier.

Change-Id: I7f4cc049aa6129cea84d210ccb4e595e52d96fb7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/173740
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-12-05 14:39:03 +00:00
Mark Zhou 37d8c78237 [dartdevc] Containerizing top-level variables to improve stepping times.
This change selectively containerizes many top-level JS constructs. Containers maintain a max size of 500 elements for JS optimization purposes. Containers with unspecified key names are emitted as JS arrays. Containerization occurs for symbols when the number of top level symbols exceeds 600 but is automatic for other constructs. However, containerization in the Dart SDK only happens for web libraries for runtime optimization purposes.

Two types of common DDC constructs result in their capture by all subsequent closures:
* Self-referential variables:
    var selfLambda = () => selfLambda = "foo";
* Variables referenced in sister functions:
    var unused = "foo";
    function unusedF() => console.log(unused);

The following are now accessed through an additional level of indirection:
* Type generators (frequently follow the self-referential variable pattern)
* Constant cache variables
* Dart private names (used for virtual method dispatch)
* Top-level string constants (such as URI strings)

Additional changes:
* The ModuleItemContainer handles automatic renaming of arbitrary top-level JS expressions. This is a multimap that maps keys of an arbitrary type to JS key-value pairs.
* The CacheTable and TypeTable have been unified. The old cache table seemed to have been created with a similar use case as the ModuleItemContainer but had become too specialized.
* The new TypeTable unifies much of the logic for emitting types, including explicitly separating the discharge of types dependent on free variables (such as generic types, generic functions, and their bounds) from types that are fully bound.

Reduces top-level captured variables in the SDK by ~5711 per recursive callback.

Change-Id: Id44efef8e93d1a83fdac808814d9ace99c4d27bd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/173800
Commit-Queue: Mark Zhou <markzipan@google.com>
Reviewed-by: Anna Gringauze <annagrin@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
2020-12-05 02:21:43 +00:00
Paul Berry 2448fc70b7 Flow analysis: Unit test parenthesized expressions properly.
Previously, the unit tests for flow analysis re-used the logic from
the _WrappedExpression class, which uses
FlowAnalysis.forwardExpression rather than
FlowAnalysis.parenthesizedExpression.  As a result,
FlowAnalysis.parenthesizedExpression wasn't being unit tested.

Change-Id: I1905808fd3a7788cb15d28c82d773369c061da59
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175164
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-12-05 01:40:32 +00:00
Ben Konyi fc892d7fca [ package:dds ] Handle StateError when VM service disappears
Fixes https://github.com/flutter/flutter/issues/70579

Change-Id: Ic32acaa038afcf67c98b77d20fd39d136bec13b6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175163
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Jonah Williams <jonahwilliams@google.com>
2020-12-05 01:19:12 +00:00
Konstantin Shcheglov dee85df64d Basic support for elements/types of non-function type aliases.
Change-Id: Ide8f2fff98f7f03375efad23df3ed79795c33a23
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174681
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-12-04 23:32:02 +00:00
Konstantin Shcheglov 2e67e92e0b Specialize writing InterfaceType with no arguments.
This saves 124KB, or about 6% on SDK summary.

Change-Id: I7715136c069d71c6a4cafbd2d622c5d0aa2b81f2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175162
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-12-04 23:15:52 +00:00
Robert Nystrom a5d50740d9 Roll args and dart2js_info into the SDK.
This brings in the null safe migrated args. It also brings in a new
version of dart2js_info with a tiny change to make it compatible with
the new args.

Change-Id: I280d25c9d5d6bea974206996c5a8c232e728e81d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175020
Reviewed-by: Nate Bosch <nbosch@google.com>
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
2020-12-04 22:58:22 +00:00
Paul Berry 25c73c0e56 Flow analysis: better unit testing of captured variables.
Previously, we didn't have a unit test to verify that variable
captures in nested contexts are propagated to enclosing contexts.

Change-Id: I579bce6d07f61119f44259f1fbf1da7f0800adde
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175102
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2020-12-04 22:39:43 +00:00
Konstantin Shcheglov a230d059e1 Add LinkedUnitContext.element, remove TODO for BooleanLiteral.
I tried to do BooleanLiteral, it resulted in just 1500 bytes saving
for the SDK summary, so I think it is not worth it.

Change-Id: I01cccb67be67ccd33219400a7ecf414d310a201f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175160
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-12-04 22:30:33 +00:00
Konstantin Shcheglov 584a1aca16 Fix a couple of TODO in LinkedUnitContext.
R=brianwilkerson@google.com

Change-Id: I8415e6f4e4d7cf68b7ea2484637cf6cc34129669
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175107
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-12-04 21:59:22 +00:00
Konstantin Shcheglov 4ddbbcbf99 Optimize serialization format for ExperimentStatus.
This reduces SDK summary size by 23KB.

Change-Id: I4e59e0be55927198b566d74d6287bab97e1edfa1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175105
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-12-04 21:53:42 +00:00
Konstantin Shcheglov 959f345d5e Another attempt to log more data for getAssists.
I don't understand what happens - we had catch-all, but still get
these exceptions in crash logs. I'm removing the catch, with a hope
that we will get right exception, with more data.

Change-Id: I9415e52a535d7e2bf77641ed77035ba0d8bd762d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175009
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-12-04 17:18:15 +00:00
Paul Berry 6a097edc48 Flow analysis: allow identical to promote values to non-nullable.
This change causes `identical(x, y)` to be treated similarly to `x ==
y` for flow analysis.  For example:

    int? x = ...;
    if (!identical(x, null)) {
      print(x + 1); // Ok, x is known not to be null.
    }

Fixes https://github.com/dart-lang/language/issues/1226.

Bug: https://github.com/dart-lang/language/issues/1226
Change-Id: If2939d3d4dd0dc9d7aaf39984045e9ec3e10ce7d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174760
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-12-04 14:40:15 +00:00
Sigurd Meldgaard f3fe9dc3b3 Reland "Improve handling of disable-dartdev-analytics"
This is a reland of 58860f4814

Original change's description:
> Improve handling of disable-dartdev-analytics
>
> This is second try of https://dart-review.googlesource.com/c/sdk/+/171284
> that was reverted to to faulty logic in main_options.
>
> Some other refactorings are piggy-backed along.
>
> TestProject.runSync no longer takes a 'command' argument. It was anyway
> often not an argument.
>
> Also stop the messy handling of pub arguments. It is no longer needed.
>
> BUG: https://github.com/dart-lang/sdk/issues/44135
> Change-Id: I49abf5810d9ea262409ba9d93f0471037cb8a753
> TEST=The VM change is tested via all the pkg/dartdev/test/command/* tests that invoke dart with the --no-analytics flag.
> TEST=Furthermore manual test that the --no-analytics flag is passed to dartdev.
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174261
> Reviewed-by: Jonas Jensen <jonasfj@google.com>
> Commit-Queue: Sigurd Meldgaard <sigurdm@google.com>

Change-Id: I725662f578d061f87171ceffe9aff3de83688f58
TEST=Furthermore run the vm-kernel-precomp-obfuscate-linux-release-x64-try trybot
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174473
Commit-Queue: Sigurd Meldgaard <sigurdm@google.com>
Reviewed-by: Jonas Jensen <jonasfj@google.com>
2020-12-04 14:22:10 +00:00
Johnni Winther 74be6670c9 [kernel] Remove CoreTypes from legacyErasure
Change-Id: I9692c01ed3bf9982834144dd9eb477a97db5536f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175041
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-12-04 10:03:40 +00:00
Johnni Winther f7ae22a4c1 Reland "[cfe] Improve encoding of set/list literals for unified collections"
Change-Id: I4f8098e110c9a5e5d6e102b8c6230e85c1575c6a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175040
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-12-04 09:52:20 +00:00
pq c7f364562c simple fix driver tool
Work to support https://github.com/dart-lang/sdk/issues/44272.

(Sure to evolve w/ some testing but I think there's enough to iterate on.)


Change-Id: Ieaab218ad8850631f4b16838d3b3821eaf7bd747
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175005
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2020-12-04 02:00:43 +00:00
jonahwilliams d86f0e2836 [frontend_server] add API stability documentatioon
Document some of the API stability guarantees that are required for the command line
API of the frontend_server binary. This will allow package:test and the webdev CLI to
begin using the frontend_server

Change-Id: I4bf05757c527e491b1059489b5dda53dfda876a4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174840
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Jonah Williams <jonahwilliams@google.com>
2020-12-03 19:28:13 +00:00
Danny Tuppeny 9a82c5447b [Analyzer] Use ${0} for solo-tabstops in LSP snippets
Fixes https://github.com/Dart-Code/Dart-Code/issues/2975.

Change-Id: I9c4974c9f04fa10565c831672da067f5b0a2d43f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174926
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2020-12-03 17:51:43 +00:00
Konstantin Shcheglov 08ae001fdf Prepare to publish analyzer_plugin 0.4.0
I updated the analyzer version rage because de-facto tests don't
run on `0.39.12` anymore.

Change-Id: If7413b9ad9b660f3f50ccc475d7f3b35fe3cd324
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174567
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-12-03 17:49:53 +00:00
Danny Tuppeny c5129a2b12 [Analyzer] Increase version to 1.32.1 and add changelog section
Fixes https://github.com/dart-lang/sdk/issues/42572

Change-Id: I6d3776b663f8485bf7df4119e68085b275b584bf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174803
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-12-03 17:39:03 +00:00
Konstantin Shcheglov 416329dafd Issue 44284. Fix LUB to consider also mixins.
Bug: https://github.com/dart-lang/sdk/issues/44284
Change-Id: If1c67dbe4c5be38dd715ca4aa5a1fc82c0911e36
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174820
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-12-03 17:32:43 +00:00
Brian Wilkerson 3f2e5d8a90 Improve the output from the code completion metrics tool
This CL does three things.

First, it makes the output options more fine grained to allow us to get
the information we're after without getting information that we don't
care about at the moment.

Second, it prints the unconditional output in a more compact tabular
form so that it's easier to read.

Third, it adds support for outputing a high-level comparison of multiple
experiments to make it easier to gauage the impact of a change.

Change-Id: Iee8b1eb126de43cb08c27a1b60036090fffc0421
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174941
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2020-12-03 17:14:13 +00:00
Johnni Winther a3236f6622 [cfe] Disable verification of opt-in/opt-out types
In response to https://dart-review.googlesource.com/c/sdk/+/174860

Change-Id: I8d037bcd833990d242c0822adecbd0c4086e604f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174925
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-12-03 17:08:43 +00:00
Johnni Winther 87ef15787a [cfe] Handle write during late local initialization
In response to issue #44372

Change-Id: I6ad0730e662f7fcd8987a745cbab72dbb91c2045
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174923
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-12-03 16:41:53 +00:00
Johnni Winther 442fa7f44e [cfe] Update message for missing default value
Update in response to issue #44329 and to match the change
in https://dart-review.googlesource.com/c/sdk/+/174300

Change-Id: Ia28887f0fad54927b82b7aa29acb88231053cd6a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174800
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-12-03 14:46:23 +00:00
Paul Berry d4f3c02612 Flow analysis: Get rid of initialize and _freshVariableInfo.
The FlowModel._freshVariableInfo field was an optimization with
dubious benefit (it avoided a single allocation when seeing a variable
for the first time).  And it is getting in the way of changes I have
planned for https://github.com/dart-lang/language/issues/1274 (which
will require each fresh variable to be allocated different
information).

Removing FlowModel._freshVariableInfo means that now we have a call to
VariableModel.fresh() whenever we see a variable for the first time,
so we can take advantage of this to elimiate the
VariableModel.initialize() method, and simply allocate the
VariableModel in the initialized state when it's appropriate to do so.

Change-Id: I4b6f7d004fff72eaa4025fdf79e9ca29a81d7f96
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174566
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-12-03 13:10:48 +00:00
Michal Terepeta a9d212b94a Revert "Reland "Roll the latest args package into the SDK repo.""
This reverts commit f9bb05a6ec.

Reason for revert: We discovered more breakage in google3: http://b/174613423#comment14

Original change's description:
> Reland "Roll the latest args package into the SDK repo."
>
> This is a reland of 9906fabaa0
>
> Original change's description:
> > Roll the latest args package into the SDK repo.
> >
> > Change-Id: Ie464e5c01f34a101103d16ff108b6b9eb80fbd4b
> > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174485
> > Reviewed-by: Nate Bosch <nbosch@google.com>
> > Commit-Queue: Bob Nystrom <rnystrom@google.com>
> > Auto-Submit: Bob Nystrom <rnystrom@google.com>
>
> Change-Id: I5b7b041e02857114c257393cf9d560b6b8b03fd5
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174701
> Reviewed-by: Daco Harkes <dacoharkes@google.com>
> Reviewed-by: Martin Kustermann <kustermann@google.com>
> Commit-Queue: Tess Strickland <sstrickl@google.com>

TBR=rnystrom@google.com,kustermann@google.com,nbosch@google.com,dacoharkes@google.com,sstrickl@google.com

Change-Id: Ie47133a25e86e36b0eecdbb3da7abc1388816b71
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174921
Reviewed-by: Michal Terepeta <michalt@google.com>
Reviewed-by: David Morgan <davidmorgan@google.com>
Reviewed-by: Tess Strickland <sstrickl@google.com>
Commit-Queue: Tess Strickland <sstrickl@google.com>
Commit-Queue: Michal Terepeta <michalt@google.com>
2020-12-03 08:11:40 +00:00
Jens Johansen 923facf226 [CFE] Improve crash test minimizer
This CL adds to/changes the crash test minimizer to:
* Make use of the direct-from-parser ast to try to delete entire
  classes, procedures etc.
* Tries to inline small files into the importers/exporters of those
  files to reduce the number of files.
* Can print info by pression 'i' while it's running.
* Can stop the process without throwing away anything by pression 'q'.
* Can save and load a partial minimization to a json file so one can
  start from there again by passing '--fsJson=jsonFileHere'.
* Attempts to prints the reproduction as a "incremental yaml test file"
  so one can quickly create an incremental test reproducing the crash.

For instance, recreating a bug recently fixed, I can find it using:
```
time out/ReleaseX64/dart pkg/front_end/test/crashing_test_case_minimizer.dart --platform=/path/to/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk/platform_strong.dill --invalidate=package:flutter/src/widgets/framework.dart --target=flutter --widgetTransformation --experimental-invalidation --serialize --stack-matches=5 /tmp/edited_flutter_gallery/lib/main.dart

[...]

DONE


Wrote json file system to file:///usr/local/google/home/jensj/code/dart-sdk/sdk/crash_minimizer_result_132
------ Reproduction as semi-done incremental yaml test file ------


type: newworld
trackWidgetCreation: true
target: DDC # basically needed for widget creation to be run
worlds:
  - entry: file:///tmp/edited_flutter_gallery/lib/main.dart
    experiments: alternative-invalidation-strategy
    sources:
      file:///tmp/edited_flutter_gallery/.dart_tool/package_config.json: |
        {
          "configVersion": 2,
          "packages": [
            {
              "name": "flutter",
              "rootUri": "file:///path/to/flutter/packages/flutter",
              "packageUri": "lib/",
              "languageVersion": "2.12"
            }
          ],
          "generated": "2020-11-20T08:58:21.614044Z",
          "generator": "pub",
          "generatorVersion": "2.12.0-50.0.dev"
        }
      file:///tmp/edited_flutter_gallery/lib/main.dart: |
        import "package:flutter/src/widgets/framework.dart";
      file:///path/to/flutter/packages/flutter/lib/src/widgets/framework.dart: |
        import "package:flutter/src/widgets/widget_inspector.dart";
        abstract class Widget {}
      file:///path/to/flutter/packages/flutter/lib/src/widgets/widget_inspector.dart: |
        abstract class _HasCreationLocation {}
        class _Location {}
    expectedLibraryCount: 3 # with parts this is not right

  - entry: file:///tmp/edited_flutter_gallery/lib/main.dart
    experiments: alternative-invalidation-strategy
    worldType: updated
    expectInitializeFromDill: false # or true?
    invalidate:
      - package:flutter/src/widgets/framework.dart
    expectedLibraryCount: 3 # with parts this is not right
    expectsRebuildBodiesOnly: true # or false?

------------------------------------------------------------------


[...]

real    31m16.886s
user    38m57.585s
sys     1m35.374s
```

Change-Id: I9b75a231841c13370f11879a10485ee2add8c3ad
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174643
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2020-12-03 07:53:57 +00:00
Sam Rawlins e0ebe30190 analyzer: Improve unused_import analysis for shared prefix names
Fixes https://github.com/dart-lang/sdk/issues/38784

Change-Id: I42b32261e9ed71018967e228d2ec731a4613205d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147336
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-12-03 04:00:37 +00:00
Devon Carew cec14bbf71 [dart analyze] wrap longer error correction messages
Change-Id: Ibed3e696c1eef76034ecc66b0156fe3cb7e61d35
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174862
Commit-Queue: Devon Carew <devoncarew@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2020-12-03 03:13:17 +00:00
Janice Collins 951046f94b Update lower SDK constraint of analyzer packages to 2.9.
2.9 is two stable versions behind current, as discussed in
the analyzer standup.

Change-Id: I403460ff1621ccfa07192ae4dcf3fa89bf45b152
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174861
Auto-Submit: Janice Collins <jcollins@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
2020-12-02 22:48:57 +00:00
Devon Carew 802467cb76 [dartdev] rename benchmark names
Change-Id: I1924c72dbda64d864d5139b93c5b3377898d6ede
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174780
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
2020-12-02 21:51:17 +00:00
Paul Berry 4234769982 Flow analysis: remove joinUnassigned and markNotUnassigned methods.
They were not being used.

Change-Id: I9f82b02e6e06327de9d7da7092e649ab08a5e658
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174763
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-12-02 20:53:58 +00:00
Danny Tuppeny bb971209d1 [Analyzer] Update to latest version of LSP spec
Change-Id: I16418caeacad044269fd3d79e28b9b800ce798f1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174804
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2020-12-02 20:11:08 +00:00
Konstantin Shcheglov ca8c43e3ed Update FeatureSet(s) in ResynthesizeTestCases.
Change-Id: I4966dc7420702a8d40ff4ec8d7e32969bc4db262
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174766
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-12-02 19:26:38 +00:00
Devon Carew 8cba879f46 Add additional validations to the pkg/ package pubspecs.
TEST=these are additional validations that we run on the bots

Redux of https://dart-review.googlesource.com/c/sdk/+/161040

Change-Id: Ia32ced5d48fbfeafacfa9e51dc4774d2e9425091
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174601
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
2020-12-02 17:27:18 +00:00
Sam Rawlins 3199acc82c Remove use of useFasta flag from analyzer_plugin
The analyzer is always using fasta now; this flag is going away.

Change-Id: I7f0ed80621032e41d1f4a3350f08e7e7055b7b16
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174761
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2020-12-02 16:59:58 +00:00
Johnni Winther d51ab9b62a [cfe] Add ProcedureStubKind
The enum `ProcedureStubKind` together with the flag `isSynthetic`
replaces the flags `isForwardingStub`, `isForwardingSemiStub`,
`isNoSuchMethodForwarder` and `isMemberSignature`.

The semantics of the existing properties on `Procedure` is unchanged.

The new MixinStub and MixinSuperStub stub kinds are not used yet and
the stub target for NoSuchMethodForwarder is not set yet.

TEST=refactoring


Change-Id: I6e81970dbb4baf0229f43c2a0bf0d5e575e65043
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174462
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2020-12-02 16:35:58 +00:00
Brian Wilkerson 8757a336a1 Unconditionally display the correction message when running dart analyze
Change-Id: I4fbc5bc904db6d89c885bf7f01d5e35d8f6c6927
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174564
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2020-12-02 16:30:50 +00:00
Paul Berry 1bfcc2d8da Migration: handle for-each loops where the loop variable is not local.
Fixes #44071.

Bug: https://github.com/dart-lang/sdk/issues/44071
Change-Id: I6a1a9df22f70086860c36108e529f189d3d24875
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174565
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2020-12-02 15:00:53 +00:00
Sam Rawlins 89811d9a92 Reland "dart migrate: Move title bar and add 'Migrate' check box next to title"
This is a reland of 17226bbbff

Remove generated files

Original change's description:
> dart migrate: Move title bar and add 'Migrate' check box next to title
>
> This check box displays whether a file is migrating, opting out, or
> already migrated. The check box can be clicked to toggle between
> migrating and opting out. Clicking the check box updates status in the
> navigation tree. Clicking on check boxes updates the status in the
> title bar.
>
> Screenshot here: https://screenshot.googleplex.com/9z9v9L5DHhBXzEU.png
>
> In terms of the HTML, a new parent above '.content' div was added:
> the '.file' div, which includes a '.title-bar' div above the '.content'
> div.
>
> Bug: https://github.com/dart-lang/sdk/issues/44101 and
> Change-Id: I021f0dd873119ae801e29faa92e97fe48d03ef3c
> https://github.com/dart-lang/sdk/issues/44124
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174440
> Commit-Queue: Samuel Rawlins <srawlins@google.com>
> Reviewed-by: Paul Berry <paulberry@google.com>

Bug: https://github.com/dart-lang/sdk/issues/44101 and
Change-Id: Iefada3e2fc8cbbc767cfc539204dc51b369888a2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174720
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2020-12-02 14:40:07 +00:00