Commit Graph

3027 Commits

Author SHA1 Message Date
Konstantin Shcheglov 4af81e2a5b Issue 45459. Report EXPERIMENT_NOT_ENABLED instead of INVALID_GENERIC_FUNCTION_TYPE when nonfunction_type_aliases is not enabled.
Bug: https://github.com/dart-lang/sdk/issues/45459
Change-Id: I0773f15e4697620427f4449622a592e40b5a5de4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/193100
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-25 21:43:04 +00:00
Jens Johansen ac9b4aab8d [parser] More specific error messages when recovering new/const/Map/Set/List with said literals
Follow-up to https://dart-review.googlesource.com/c/sdk/+/190022

Change-Id: Id42336216267dcbf481ae6e111177e6296ea6779
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190881
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2021-03-25 13:27:03 +00:00
Sam Rawlins 97cd131c9a analyzer: Introduce cannot-ignore analysis option.
Fixes https://github.com/dart-lang/sdk/issues/45404, which describes the option
in detail.

This removes all unfortunate exceptions for dart2js test code and for flutter
code. This removes the lateness of one final field.

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

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

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

Related to https://github.com/flutter/flutter/issues/52899

Change-Id: I054f487fafe2742ae57da1d2ccd2d52dce4188bf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192560
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-03-24 13:32:49 +00:00
pq 706758a142 linter 1.2.1
Change-Id: I4d2ccc0bcc4128d60d76ea5119594d946fec35c3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192483
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2021-03-23 15:01:16 +00:00
Jens Johansen 31acdc9d92 [parser] Recovery of of new/const/Map/Set/List with said literals
E.g. recover `Map<int, int>{}` by ignoring the map (i.e. it's
just a literal map), recover `new {}` as just `{}` etc.

Fixes #45251.

Change-Id: I44e67ca6d3b9b068014b8e28822a61063c794d57
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190022
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2021-03-12 10:41:06 +00:00
Konstantin Shcheglov 54b2948461 Replace TypeAnnotation.type with null check with 'typeOrThrow'.
Change-Id: I16922aef63d294448436c93004386ee8a3439e31
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190724
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-11 19:41:10 +00:00
Konstantin Shcheglov f7dc2d29de Issue 45195. Report MIXIN_INHERITS_FROM_NOT_OBJECT for class aliases.
Bug: https://github.com/dart-lang/sdk/issues/45195
Change-Id: I4b1e60a672b49c3c9fda92b3eac59c256eea13da
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189300
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-08 20:48:43 +00:00
Konstantin Shcheglov 19e0673582 Revert "Return List<XyzElementImpl> from ElementImpl getters."
This reverts commit 645035bbb9.

Reason for revert: b/182098851

Original change's description:
> Return List<XyzElementImpl> from ElementImpl getters.
>
> Change-Id: Ice8a0feb6a0bd2599fcfd5ccc35c0b4242ed9530
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189620
> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>

Change-Id: I33eff159d62813c35e7e00eee5b7d9dd4fb4e563
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189781
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-08 19:09:44 +00:00
Konstantin Shcheglov 645035bbb9 Return List<XyzElementImpl> from ElementImpl getters.
Change-Id: Ice8a0feb6a0bd2599fcfd5ccc35c0b4242ed9530
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189620
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-08 07:00:40 +00:00
Konstantin Shcheglov 75308fc26b Return Impl nodes from AstFactoryImpl and AstTestFactory.
Change-Id: I5d3f6eb8d07145079560c6f8820aa15e2f8183a3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189580
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-03-07 23:24:10 +00:00
Konstantin Shcheglov 0506b1b2d3 Deprecate setters in API of AST.
Change-Id: Ib2ec164ef87b3a5a4bf028d592552e37451abd35
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189520
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-03-07 21:48:50 +00:00
Sam Rawlins f32575e43a analyzer: stop mixing WithNullSafety into tests extending PubPackageResolutionTest
Bug: https://github.com/dart-lang/sdk/issues/44666
Change-Id: I01aa8a5908b8a2f195859c4c9fd99e3127249e29
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/186880
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2021-02-24 17:41:44 +00:00
Sam Rawlins b485114c32 analyzer: update two test classes to use null safety
Bug: https://github.com/dart-lang/sdk/issues/44666
Change-Id: I7db26be235d3911b6c88b199df874da1ee2d552e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/186760
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-02-24 02:41:57 +00:00
Sam Rawlins e05ad3ae9d Migrate NonErrorResolverTest to null safety
In order to do this, I split the test into two:

* many test cases were concerned with type promotion
  which only seemed to pertain to pre-null safe code.
* some code could not be made valid in both null safe
  and pre-null safe environments.

Bug: https://github.com/dart-lang/sdk/issues/44666
Change-Id: I818a39f2e3eb3cae17de18b008d9e4c7b8ff84c5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/184844
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2021-02-13 03:40:48 +00:00
Sam Rawlins 89f563c4d3 analyzer: add triple-shift experiment to all tests
Change-Id: I560f82b239d78b748f6e2298a291d71cd2c831a0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/184840
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-02-12 21:17:54 +00:00
Sam Rawlins 337bba0ee9 Analyzer: add triple-shift constant test
Bug: https://github.com/dart-lang/sdk/issues/44908
Change-Id: If510a9aa36fa028e8f91d3cc9dd161282d2db383
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/184701
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2021-02-12 17:45:36 +00:00
Konstantin Shcheglov f6a6e57689 Issue 44223. Improve diagnostics for type arguments violating type parameter bounds.
Bug: https://github.com/dart-lang/sdk/issues/44223
Change-Id: Ia3ffddbc7d2a1be8455f642c5799d21051eefb1d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/184524
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-12 17:37:53 +00:00
Konstantin Shcheglov 875af7c991 Deprecated TypeProvider.futureType2/listType2/etc
Change-Id: Ia994be1e29b4d96b89d714beafcb9256a0cb4de6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/184641
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-12 17:26:07 +00:00
Konstantin Shcheglov 3d8d4b4c2b FunctionExpression always has a body, at least EmptyFunctionBody.
Change-Id: I0d09df2571436f30a7706e657a98056a021e25e8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/184342
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-11 18:00:11 +00:00
Sam Rawlins af0120803e analyzer: Remove unnecessary imports
Change-Id: Iea88852d6592e14007e9853aa2d568a772678e1e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/184282
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2021-02-10 21:37:45 +00:00
Konstantin Shcheglov 8120c43d85 Replace 'Expression.staticType!' with 'typeOrThrow'.
It is not a huge improvement, because it does not add static safety,
for this we would need to distinguish between unresolved and resolved
expressions, as separate types.

But it is still an improvement.

1. We get to know the node that was not resolved.
   Maybe not enough, in case if it was because of the enclosing
   now that this node was not resolved. But still something.

2. We group this use case into one place.

Change-Id: I2e8f029e8a5fcd8ccecdd1b6bc9d78ee9eaf12a1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/184103
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-10 17:19:27 +00:00
Konstantin Shcheglov b4409ea3b4 Deprecate FunctionType.element/typeArguments
Bug: https://github.com/dart-lang/sdk/issues/44629
Change-Id: I5009a1abd456f33738d3b5e2ecae24b269b20000
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182700
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-02-10 17:17:58 +00:00
Konstantin Shcheglov 4765ef5037 Remove 'actualUri' from UriResolver.resolveAbsolute()
Change-Id: I87edfa780e891a5e1ecdd1a9a548509e4cfa641a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183440
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-09 22:17:08 +00:00
Sam Rawlins 82bcd13476 Change PubPackageResolutionTest to use null safety.
Some tests had some issues migrating to null safety that I
could not immediately hash out, or may warrant some more discussion.
So I've added WithoutNullSafetyMixin, and we can incrementally
migrate these after this CL.

Many tests have little no-op tweaks to make them null safe, like
initializing variables, adding late, making nullable.

Nest steps:
1. Remove `WithNullSafetyMixin` applications.
2. Remove `WithoutNullSafetyMixin` in every position with a TODO for
   #44666.
3. For every file with pair(s) of test classes (one pre-null safety,
   and one null safety), move around test cases so that they generally
   run with null safety, unless they are testing things very specific to
   before and after null safety.

Bug: https://github.com/dart-lang/sdk/issues/44666
Change-Id: I0512dedcda42e864fd580af4842702095937bdb6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183140
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-02-08 23:06:04 +00:00
Sam Rawlins 8432b379e7 Analyzer: Prepare tests for null safety.
Tests that include, for example, a field `int a;` need to be migrated to
something which is both legal in pre-null safety, and in null safety. So no `?`
etc,. Additionally:

* parameters to `main` must be correct,
* new flow analysis may change inference,
* avoid `List()`

Bug: https://github.com/dart-lang/sdk/issues/44666
Change-Id: I77b7c3a6f391953c74824153012c1a537f8bebe0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183520
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-02-07 19:45:56 +00:00
Paul Berry d5fc9fb06f Unit test generic annotation functionality of AstCloner.
The update to AstCloner was made as part of
ba5064fa31, but it couldn't be unit
tested until now due to the lack of parser support.

Bug: https://github.com/dart-lang/sdk/issues/44838
Change-Id: If2fd5ce41a46c3460b5f90ba854f22ae1baef11c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182840
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-02-05 22:43:08 +00:00
Paul Berry c14fd57acc Update AstBuilder to handle generic annotations.
Bug: https://github.com/dart-lang/sdk/issues/44838
Change-Id: If69cbbc13a087f0f6280da0bc7f9dbca1d3ec0ea
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182740
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-02-05 20:57:18 +00:00
Paul Berry ba5064fa31 Analyzer AST changes for generic metadata
Bug: https://github.com/dart-lang/sdk/issues/44838
Change-Id: I55b8dacc571570568c1b3f101a1a4e1f517f7f6f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182581
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-02-04 09:45:47 +00:00
Jens Johansen 1392263ecc [parser] Non-crashing recovery of in-progress generification of typedef
Fixes #43090

Change-Id: I1377ebf08a8c561e4f15abbf458c5bb0d8c61494
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182040
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-02-04 08:01:07 +00:00
Konstantin Shcheglov 4c6f5f7658 Remove NullSafetyUnderstandingFlag.
Bug: https://github.com/dart-lang/sdk/issues/40531

Change-Id: I197cfdf64c697a09bb9e0e3896f3ee5ac1967757
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/168160
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-02-02 18:03:24 +00:00
Sam Rawlins 237c84249b Remove unnecessary imports in analyzer
Change-Id: Ifb9a5c0a31cf3669febf2981b1d26b84f5b9d237
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/180781
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2021-02-02 14:40:24 +00:00
Konstantin Shcheglov 9f986d2501 Migrate package:analyzer to null safety.
Change-Id: Iffe4370431587e46a141ddc72a86ceec29c163b2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176486
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2021-02-01 18:56:04 +00:00
Jens Johansen 16a66c8902 [parser] Don't crash, try to recover from written out logical operators and and or
Fixes #44785

Change-Id: I4c7198ea1c223900a58039c032ee303d7da2c14f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/181580
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-02-01 09:30:48 +00:00
Konstantin Shcheglov cea28f1ac5 Support for AwaitExpression in binary summary format.
Bug: https://github.com/dart-lang/sdk/issues/44699
Change-Id: I174e015ff8378fafc1c528198df2157532cf393a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/180460
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-01-21 23:15:16 +00:00
Sam Rawlins cddd44e1e9 analyzer: Add separate code for concrete implementation override check
Erik wrote a great explanation for this check here:
https://github.com/dart-lang/sdk/issues/37993#issuecomment-757976910

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

Change-Id: I6fb0bd530fac495115314838ec0bb2168d5e9ad7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/180088
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2021-01-20 21:27:43 +00:00
Konstantin Shcheglov b4f4de776a Update super-bounded types for null safety.
https://github.com/dart-lang/language/pull/1133/files

Change-Id: I633b328bb62780e09fb58535a83f7f35af161c25
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/180020
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-01-19 20:31:03 +00:00
Konstantin Shcheglov 5e66c2b1a1 Support for ForPartsWithExpression in binary format.
Change-Id: I69b47c6f21a2923731c91ba4d5edf8394b96408f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179680
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-01-16 19:29:43 +00:00
Konstantin Shcheglov 56903e6cfb Replace findElementInUnit(), findLocalFunction(), and findLocalVariable() with FindElement.
Change-Id: I508b63fee81dc087489055448debb495a06eff6a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179361
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-01-14 23:15:25 +00:00
Konstantin Shcheglov 4bef6607e7 Fill and use DartType.aliasElement/aliasArguments
Change-Id: I71a3b7efbbe8578c47a832cb85aab6177156531f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178460
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-01-12 22:50:44 +00:00
Jens Johansen f7052cfbbc [parser] Better handling of eof when parsing 'Stream<List<>>'
This CL avoids the infinite loop created by allowing the parser
to parse it as a complex type (despite no actual name after it) and
adds a few asserts in an attempt to catch rewriting on eof (setting a
token after eof).

Fixes #42229
Fixes #44477

Change-Id: Ie2da0957894067a3d4748cb6384bc9d6cf32c215
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/150521
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-01-11 09:55:06 +00:00
Sam Rawlins cad324cf79 Analyzer: Extract all parser tests to individual files
Change-Id: Ia3f85355186e25d4cc38fcb15ed3770a1db5805c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176360
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2020-12-15 22:57:21 +00:00
Konstantin Shcheglov c11039702c Replace FindElement.functionTypeAlias() with typeAlias().
Change-Id: I88a5b889310df8a39b54318907ba8bbd68b26b9b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176183
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-12-15 07:13:41 +00:00
Sam Rawlins 13f9993511 Analyzer: Extract parser test base classes, helpers
Each of the *_Fasta test cases has a lot of test cases from the
corresponding *Mixin mixin. I started to combine _all_ of these
in parser_test.dart, but the file became too long; the formatter
was freezing IntelliJ.

So I've extracted out the non-test classes into parser_test_base.dart.

I'd like to extract each test class into its own file. For now, I
reduce half a dozen *_Fasta/*Mixin pairs into individual test classes.

Change-Id: I8dd7f28a6fe23e31f956cdb2f1d221669db376dc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176064
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-12-15 03:57:59 +00:00
Paul Berry 5780cacbdb Don't pass null to fasta.Parser.
Fixes null safety errors arising from the migration of _fe_analyzer_shared.

Change-Id: I7da6b7f2d7c23d5d8f6ed120e03aed754aff5b82
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176061
Commit-Queue: Paul Berry <paulberry@google.com>
Commit-Queue: Ivan Inozemtsev <iinozemtsev@google.com>
Auto-Submit: Paul Berry <paulberry@google.com>
Reviewed-by: Ivan Inozemtsev <iinozemtsev@google.com>
2020-12-14 15:55:39 +00:00
Konstantin Shcheglov 72b0d2a297 Terminate null shorting for FunctionExpressionInvocation.
FAILURE: (:s=0?.1(I
['package:_fe_analyzer_shared/src/flow_analysis/flow_analysis.dart': Failed assertion: line 2785 pos 12: '_stack.isEmpty': is not true.
#0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39)
#1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
#2      _FlowAnalysisImpl.finish (package:_fe_analyzer_shared/src/flow_analysis/flow_analysis.dart:2785:12)
#3      FlowAnalysisHelper.topLevelDeclaration_exit (package:analyzer/src/dart/resolver/flow_analysis_visitor.dart:224:10)
#4      AstResolver.resolve (package:analyzer/src/summary2/ast_resolver.dart:88:21)
#5      _VariableInferenceNode._resolveInitializer (package:analyzer/src/summary2/top_level_inference.dart:466:17)
#6      _VariableInferenceNode.computeDependencies (package:analyzer/src/summary2/top_level_inference.dart:393:5)
#7      Node.getDependencies (package:analyzer/src/summary/link.dart:148:40)
#8      DependencyWalker.walk.strongConnect (package:analyzer/src/summary/link.dart:53:40)
#9      DependencyWalker.walk (package:analyzer/src/summary/link.dart:119:18)
#10     _InferenceWalker.walkNodes (package:analyzer/src/summary2/top_level_inference.dart:254:9)
#11     _InitializerInference.perform (package:analyzer/src/summary2/top_level_inference.dart:287:13)
#12     TopLevelInference.infer (package:analyzer/src/summary2/top_level_inference.dart:111:26)
#13     Linker._performTopLevelInference (package:analyzer/src/summary2/link.dart:183:29)
#14     Linker._buildOutlines (package:analyzer/src/summary2/link.dart:93:5)
#15     Linker.link (package:analyzer/src/summary2/link.dart:76:5)
#16     link (package:analyzer/src/summary2/link.dart:33:10)
#17     LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:227:24)
#18     LibraryContext.load2.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:258:17)
#19     PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:32:15)
#20     LibraryContext.load2 (package:analyzer/src/dart/analysis/library_context.dart:256:12)
#21     new LibraryContext (package:analyzer/src/dart/analysis/library_context.dart:78:5)
#22     AnalysisDriver._createLibraryContext.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1538:27)
#23     _rootRun (dart:async/zone.dart:1186:13)
#24     _CustomZone.run (dart:async/zone.dart:1090:19)
#25     _runZoned (dart:async/zone.dart:1626:10)
#26     runZoned (dart:async/zone.dart:1546:10)
#27     NullSafetyUnderstandingFlag.enableNullSafetyTypes (package:analyzer/dart/element/null_safety_understanding_flag.dart:42:12)
#28     AnalysisDriver._createLibraryContext (package:analyzer/src/dart/analysis/driver.dart:1536:33)
#29     AnalysisDriver._computeResolvedLibrary2.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1402:28)


Change-Id: I6b91c6bd89d6e0430a36ded992d8dca82bfedbff
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175961
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-12-14 08:56:08 +00:00
Konstantin Shcheglov 57fa20a8a5 Fix crash for no flow in annotation.
FAILURE: class=class<@((){x:
[NoSuchMethodError: The method 'labeledStatement_begin' was called on null.
Receiver: null
Tried calling: labeledStatement_begin(Instance of 'LabeledStatementImpl'), #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
#1      FlowAnalysisHelper.labeledStatement_enter (package:analyzer/src/dart/resolver/flow_analysis_visitor.dart:196:10)
#2      ResolverVisitor.visitLabeledStatement (package:analyzer/src/generated/resolver.dart:1636:20)
#3      LabeledStatementImpl.accept (package:analyzer/src/dart/ast/ast.dart:6520:49)
#4      NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:7611:20)
#5      BlockImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:1087:17)
#6      ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1749:10)
#7      UnifyingAstVisitor.visitBlock (package:analyzer/dart/ast/visitor.dart:3143:31)
#8      ScopedVisitor.visitBlock.<anonymous closure> (package:analyzer/src/generated/resolver.dart:2473:13)
#9      ScopedVisitor._withDeclaredLocals (package:analyzer/src/generated/resolver.dart:3067:8)
#10     ScopedVisitor.visitBlock (package:analyzer/src/generated/resolver.dart:2472:5)
#11     BlockImpl.accept (package:analyzer/src/dart/ast/ast.dart:1083:49)
#12     BlockFunctionBodyImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:1042:13)
#13     ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1749:10)
#14     UnifyingAstVisitor.visitBlockFunctionBody (package:analyzer/dart/ast/visitor.dart:3146:55)
#15     ScopedVisitor.visitBlockFunctionBody (package:analyzer/src/generated/resolver.dart:2482:13)
#16     ResolverVisitor.visitBlockFunctionBody (package:analyzer/src/generated/resolver.dart:957:13)
#17     BlockFunctionBodyImpl.accept (package:analyzer/src/dart/ast/ast.dart:1038:49)
#18     FunctionExpressionImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:5010:12)
#19     FunctionExpressionResolver.resolve (package:analyzer/src/dart/resolver/function_expression_resolver.dart:65:10)
#20     ResolverVisitor.visitFunctionExpression (package:analyzer/src/generated/resolver.dart:1460:37)
#21     FunctionExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:5004:49)
#22     ResolverVisitor.visitArgumentList (package:analyzer/src/generated/resolver.dart:887:20)
#23     ArgumentListImpl.accept (package:analyzer/src/dart/ast/ast.dart:355:49)
#24     AnnotationResolver.resolve (package:analyzer/src/dart/resolver/annotation_resolver.dart:35:21)
#25     ResolverVisitor.visitAnnotation (package:analyzer/src/generated/resolver.dart:823:30)
#26     AnnotationImpl.accept (package:analyzer/src/dart/ast/ast.dart:280:49)
#27     NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:7611:20)
#28     AnnotatedNodeImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:148:17)
#29     TypeParameterImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:10298:11)
#30     ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1749:10)
#31     UnifyingAstVisitor.visitTypeParameter (package:analyzer/dart/ast/visitor.dart:3475:47)
#32     TypeParameterImpl.accept (package:analyzer/src/dart/ast/ast.dart:10294:49)
#33     NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:7611:20)
#34     TypeParameterListImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:10346:21)
#35     ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1749:10)
#36     UnifyingAstVisitor.visitTypeParameterList (package:analyzer/dart/ast/visitor.dart:3478:55)
#37     TypeParameterListImpl.accept (package:analyzer/src/dart/ast/ast.dart:10342:49)
#38     ScopedVisitor.visitClassDeclarationInScope (package:analyzer/src/generated/resolver.dart:2533:26)
#39     ScopedVisitor.visitClassDeclaration (package:analyzer/src/generated/resolver.dart:2521:7)
#40     ResolverVisitor.visitClassDeclaration (package:analyzer/src/generated/resolver.dart:1015:13)
#41     ClassDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:1536:49)
#42     ResolverVisitor.visitCompilationUnit (package:analyzer/src/generated/resolver.dart:1091:23)
#43     CompilationUnitImpl.accept (package:analyzer/src/dart/ast/ast.dart:2134:49)
#44     LibraryAnalyzer._resolveFile (package:analyzer/src/dart/analysis/library_analyzer.dart:706:10)
#45     LibraryAnalyzer.analyzeSync.<anonymous closure> (package:analyzer/src/dart/analysis/library_analyzer.dart:139:7)

Change-Id: I13a10d2c127528aa9166e82a5ae535ddbbb8a022
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175943
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-12-14 05:58:23 +00:00
Konstantin Shcheglov b21913b0a3 Fix for NPE when no flow for 'if' statement.
FAILURE: typedef:(:<>(s{if
[NoSuchMethodError: The method 'ifStatement_thenBegin' was called on null.
Receiver: null
Tried calling: ifStatement_thenBegin(Instance of 'SimpleIdentifierImpl'), #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
#1      ResolverVisitor.visitIfStatement (package:analyzer/src/generated/resolver.dart:1556:26)
#2      IfStatementImpl.accept (package:analyzer/src/dart/ast/ast.dart:5705:49)
#3      NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:7611:20)
#4      BlockImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:1087:17)
#5      ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1743:10)
#6      UnifyingAstVisitor.visitBlock (package:analyzer/dart/ast/visitor.dart:3143:31)
#7      ScopedVisitor.visitBlock.<anonymous closure> (package:analyzer/src/generated/resolver.dart:2467:13)
#8      ScopedVisitor._withDeclaredLocals (package:analyzer/src/generated/resolver.dart:3061:8)
#9      ScopedVisitor.visitBlock (package:analyzer/src/generated/resolver.dart:2466:5)
#10     BlockImpl.accept (package:analyzer/src/dart/ast/ast.dart:1083:49)
#11     BlockFunctionBodyImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:1042:13)
#12     ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1743:10)
#13     UnifyingAstVisitor.visitBlockFunctionBody (package:analyzer/dart/ast/visitor.dart:3146:55)
#14     ScopedVisitor.visitBlockFunctionBody (package:analyzer/src/generated/resolver.dart:2476:13)
#15     ResolverVisitor.visitBlockFunctionBody (package:analyzer/src/generated/resolver.dart:954:13)
#16     BlockFunctionBodyImpl.accept (package:analyzer/src/dart/ast/ast.dart:1038:49)
#17     FunctionExpressionImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:5010:12)
#18     FunctionExpressionResolver.resolve (package:analyzer/src/dart/resolver/function_expression_resolver.dart:65:10)
#19     ResolverVisitor.visitFunctionExpression (package:analyzer/src/generated/resolver.dart:1457:37)
#20     FunctionExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:5004:49)
#21     DefaultFormalParameterImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:3008:20)
#22     ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1743:10)
#23     UnifyingAstVisitor.visitDefaultFormalParameter (package:analyzer/dart/ast/visitor.dart:3198:65)
#24     ResolverVisitor.visitDefaultFormalParameter (package:analyzer/src/generated/resolver.dart:1239:11)
#25     DefaultFormalParameterImpl.accept (package:analyzer/src/dart/ast/ast.dart:3003:15)
#26     NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:7611:20)
#27     FormalParameterListImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:4493:17)
#28     ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1743:10)
#29     UnifyingAstVisitor.visitFormalParameterList (package:analyzer/dart/ast/visitor.dart:3258:59)
#30     ScopedVisitor.visitFormalParameterList (package:analyzer/src/generated/resolver.dart:2717:11)
#31     FormalParameterListImpl.accept (package:analyzer/src/dart/ast/ast.dart:4489:49)
#32     FunctionTypeAliasImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:5166:18)
#33     ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1743:10)
#34     UnifyingAstVisitor.visitFunctionTypeAlias (package:analyzer/dart/ast/visitor.dart:3285:55)
#35     ScopedVisitor.visitFunctionTypeAliasInScope (package:analyzer/src/generated/resolver.dart:2819:11)
#36     ResolverVisitor.visitFunctionTypeAliasInScope (package:analyzer/src/generated/resolver.dart:1490:11)
#37     ScopedVisitor.visitFunctionTypeAlias (package:analyzer/src/generated/resolver.dart:2812:7)
#38     ResolverVisitor.visitFunctionTypeAlias (package:analyzer/src/generated/resolver.dart:1482:13)
#39     FunctionTypeAliasImpl.accept (package:analyzer/src/dart/ast/ast.dart:5158:49)
#40     ResolverVisitor.visitCompilationUnit (package:analyzer/src/generated/resolver.dart:1088:23)
#41     CompilationUnitImpl.accept (package:analyzer/src/dart/ast/ast.dart:2134:49)
#42     LibraryAnalyzer._resolveFile (package:analyzer/src/dart/analysis/library_analyzer.dart:706:10)


R=brianwilkerson@google.com

Change-Id: I72bf7219d55d0bf53beae11f977f8fb840dd8e2e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175908
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-12-12 18:19:41 +00:00
Konstantin Shcheglov 3c2e851780 Fix for crash when function expression has empty body.
FAILURE: _(:<>(o;?(a(@([
[NoSuchMethodError: The getter 'contextType' was called on null.
Receiver: null
Tried calling: contextType, #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
#1      FunctionExpressionResolver.resolve (package:analyzer/src/dart/resolver/function_expression_resolver.dart:72:35)
#2      ResolverVisitor.visitFunctionExpression (package:analyzer/src/generated/resolver.dart:1424:37)
#3      FunctionExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:5004:49)
#4      ResolverVisitor.visitConditionalExpression (package:analyzer/src/generated/resolver.dart:1068:16)
#5      ConditionalExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:2265:15)
#6      DefaultFormalParameterImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:3008:20)
#7      ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1710:10)
#8      UnifyingAstVisitor.visitDefaultFormalParameter (package:analyzer/dart/ast/visitor.dart:3198:65)
#9      ResolverVisitor.visitDefaultFormalParameter (package:analyzer/src/generated/resolver.dart:1206:11)
#10     DefaultFormalParameterImpl.accept (package:analyzer/src/dart/ast/ast.dart:3003:15)
#11     NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:7611:20)
#12     FormalParameterListImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:4493:17)
#13     ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1710:10)
#14     UnifyingAstVisitor.visitFormalParameterList (package:analyzer/dart/ast/visitor.dart:3258:59)
#15     ScopedVisitor.visitFormalParameterList (package:analyzer/src/generated/resolver.dart:2684:11)
#16     FormalParameterListImpl.accept (package:analyzer/src/dart/ast/ast.dart:4489:49)
#17     FunctionExpressionImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:5009:18)
#18     FunctionExpressionResolver.resolve (package:analyzer/src/dart/resolver/function_expression_resolver.dart:65:10)
#19     ResolverVisitor.visitFunctionExpression (package:analyzer/src/generated/resolver.dart:1415:35)
#20     FunctionExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:5004:49)
#21     FunctionDeclarationImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:4873:26)
#22     ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1710:10)
#23     UnifyingAstVisitor.visitFunctionDeclaration (package:analyzer/dart/ast/visitor.dart:3271:59)
#24     ScopedVisitor.visitFunctionDeclarationInScope (package:analyzer/src/generated/resolver.dart:2749:11)
#25     ResolverVisitor.visitFunctionDeclarationInScope (package:analyzer/src/generated/resolver.dart:1405:11)
#26     ScopedVisitor.visitFunctionDeclaration (package:analyzer/src/generated/resolver.dart:2742:7)
#27     ResolverVisitor.visitFunctionDeclaration (package:analyzer/src/generated/resolver.dart:1374:11)
#28     FunctionDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:4866:49)
#29     ResolverVisitor.visitCompilationUnit (package:analyzer/src/generated/resolver.dart:1055:23)
#30     CompilationUnitImpl.accept (package:analyzer/src/dart/ast/ast.dart:2134:49)
#31     LibraryAnalyzer._resolveFile (package:analyzer/src/dart/analysis/library_analyzer.dart:706:10)


Change-Id: I62cde978d075bbafacb1b429e87049ca5d54d268
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175907
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-12-12 17:13:15 +00:00
Sam Rawlins 17b7d05e72 Analyzer: prepare for null safety in tests: casts and late variables
Change-Id: I37f3663b340952b79cef0e423caf81e5950b700b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175841
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-12-11 19:50:39 +00:00
Sam Rawlins 69cb9f7a67 Analyzer: Remove legacy parser (replaced by Fasta).
* Replace most of the implementation of Parser with the implementation
  found in _Parser2, which uses Fasta.
* Rework Parser constructor to do exactly what the previous factory
  constructor + _Parser2 constructor did.
* Remove _Parser2 and ParserAdapter.
* Remove `useFasta` argument in several places.
* Delete tests in parser_test.dart which only used the legacy parser.
* Move ParserProxy from parser_fasta_test.dart to parser_test.dart
* Remove ~240 cases of dead code like `if (useFasta)` and `useFasta ?`
  in tests.

Change-Id: Iea29a10ff83103293902336490fbc9cd46cd20ce
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175560
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-12-10 23:47:48 +00:00