Konstantin Shcheglov
e620276d12
Update check for potentially constant types to include any type aliases.
...
Change-Id: I7d43e532db1d0baa6e64639f174845077631effa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179362
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2021-01-15 00:46:43 +00:00
Konstantin Shcheglov
6700437384
Update variance computing and default types for non-function type aliases.
...
Rename some resynthesize tests to make them more consistent.
Change-Id: I6701b9c409973a68b545227b840a05e1bdd237d9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179363
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2021-01-15 00:43:52 +00:00
Konstantin Shcheglov
7f95c18812
Deprecate CompilationUnitElement.functionTypeAliases
...
Change-Id: I0f13761adf3d1dfd18798d5b7549e64462be0b65
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179360
Reviewed-by: Samuel Rawlins <srawlins@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2021-01-14 22:38:23 +00:00
Konstantin Shcheglov
cfe510ade8
Test for search of non-function type alias.
...
Change-Id: Iab2fc3980563a321eec3cf4e843d487b7b2b399d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179320
Reviewed-by: Samuel Rawlins <srawlins@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2021-01-14 21:52:13 +00:00
Konstantin Shcheglov
c393930f59
Feature 'constant-update-2018' is always enabled.
...
Change-Id: I97b9135e2a8e3b01933bf463437220ffd8bf1d0c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179160
Reviewed-by: Samuel Rawlins <srawlins@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2021-01-14 19:12:13 +00:00
Konstantin Shcheglov
b0db6d38c0
Use single InstanceState.lazyEqualEqual()
...
R=brianwilkerson@google.com
Change-Id: I74e36c5b1a98cff0429a1cb77452f53a59cee9e1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179120
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2021-01-14 02:24:04 +00:00
Konstantin Shcheglov
aaabc7537d
Use runtime type equality for type literal identity.
...
https://github.com/dart-lang/language/pull/1389/files#diff-2f9dda5244b707ca3b6d5988c6e5257d6025a99a5fa08ce0dc171c94bdc8ce0dR1256
Change-Id: Ie6b01c1ad5f5ab62ceef3e2672a2174ddaf62db8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179063
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2021-01-14 01:13:34 +00:00
Konstantin Shcheglov
e5d5a0f345
Don't report INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_* when null safety.
...
https://github.com/dart-lang/language/pull/1389/files#diff-2f9dda5244b707ca3b6d5988c6e5257d6025a99a5fa08ce0dc171c94bdc8ce0dR665
Change-Id: Iccc90f8f9bb877da604d5a5774a931b71a185b91
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178928
Reviewed-by: Samuel Rawlins <srawlins@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2021-01-13 21:19:04 +00:00
Daco Harkes
5d40d52fca
[vm/ffi] Add Opaque type
...
Issue: https://github.com/dart-lang/sdk/issues/44622
Issue: https://github.com/dart-lang/sdk/issues/43974
TEST=samples/ffi/sqlite/lib/src/bindings/types.dart
TEST=tests/ffi/vmspecific_static_checks_test.dart
Change-Id: Ib9e72df6a07b1bc2b72a7db66f945652814baf51
Cq-Include-Trybots: luci.dart.try:vm-precomp-ffi-qemu-linux-release-arm-try,analyzer-analysis-server-linux-try,analyzer-linux-release-try,analyzer-nnbd-linux-release-try,front-end-linux-release-x64-try,front-end-nnbd-linux-release-x64-try,benchmark-linux-try,dart-sdk-linux-try,pkg-linux-release-try,vm-ffi-android-release-arm-try,vm-ffi-android-release-arm64-try,vm-kernel-nnbd-win-debug-x64-try,vm-kernel-win-debug-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178984
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Reviewed-by: Clement Skau <cskau@google.com >
2021-01-13 17:04:08 +00:00
Daco Harkes
4e2343c290
[vm/ffi] Introduce Allocator API
...
Introduces the Allocator API in `dart:ffi`.
This CL does not yet roll `package:ffi` to use `Allocator`, because that
breaks the checked in Dart in Fluter in g3. Instead, this coppies
`_MallocAllocator` from `package:ffi` into the ffi tests for testing.
This CL does not yet migrate off `allocate` and `free` in the SDK. That
is done in a dependent CL.
Issue: https://github.com/dart-lang/sdk/issues/44621
Issue: https://github.com/dart-lang/sdk/issues/38721
TEST=tests/ffi/allocator_test.dart
TEST=tests/ffi/calloc_test.dart
TEST=tests/ffi/vmspecific_static_checks_test.dart
Change-Id: I173e213a750b8b3f594bb8d4fc72575f2b6b91f7
Cq-Include-Trybots: luci.dart.try:vm-precomp-ffi-qemu-linux-release-arm-try,analyzer-analysis-server-linux-try,analyzer-linux-release-try,analyzer-nnbd-linux-release-try,front-end-linux-release-x64-try,front-end-nnbd-linux-release-x64-try,benchmark-linux-try,dart-sdk-linux-try,pkg-linux-release-try,vm-ffi-android-release-arm-try,vm-ffi-android-release-arm64-try,vm-kernel-nnbd-win-debug-x64-try,vm-kernel-win-debug-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177705
Reviewed-by: Clement Skau <cskau@google.com >
2021-01-13 17:04:08 +00:00
Sam Rawlins
ef72b9fe6d
Analyzer: Look for bazel BUILD file before .packages files
...
Also move local function packageRootedHere outside of a while loop.
Change-Id: Ie900a36507934038a7bace23e6241a9c91080943
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178640
Commit-Queue: Samuel Rawlins <srawlins@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
2021-01-13 00:34:33 +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
Danny Tuppeny
6c33457014
[analyzer] Add support for multiline TODO comments
...
Fixes https://github.com/Dart-Code/Dart-Code/issues/3030 .
Change-Id: I97b885ee49573514560bc0452fd84793e04ee5df
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178680
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2021-01-12 19:08:02 +00:00
Brian Wilkerson
11e7cdcfd1
Unify two error codes for documentation purposes
...
Change-Id: I730a0ee287e7d54bace9fdf84a02be5c3f4da017
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178520
Reviewed-by: Samuel Rawlins <srawlins@google.com >
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
2021-01-11 23:12:20 +00:00
Brian Wilkerson
a4298ba418
Unify two error codes for documentation purposes
...
Change-Id: I31cb070e7dfcccfed042d1bf308f672e880b1d22
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178440
Reviewed-by: Samuel Rawlins <srawlins@google.com >
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
2021-01-11 22:52:20 +00:00
Danny Tuppeny
c818059287
[Analyzer] Report EXTRA_POSITIONAL_ARGUMENTS and EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED against first unmatched argument
...
Fixes #44598 .
Change-Id: I6bccf4f5448de024f27d0ed1ba51c730e22b6fe9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178020
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2021-01-11 18:46:26 +00:00
Johnni Winther
63373b9e9c
[cfe,analyzer] Pass message arguments directly to AnalysisError
...
This allows for supporting customized message for scanner/parser
errors.
Change-Id: Ib9470c3d8231de69611bc672570ae8902e9c0e6e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177940
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2021-01-11 16:45:26 +00:00
Brian Wilkerson
2efc8bf9e3
Unify two error codes for documentation purposes
...
Change-Id: I30c7bafdb0cde73a984c0d75a82cb324cded18b2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178500
Reviewed-by: Samuel Rawlins <srawlins@google.com >
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
2021-01-10 22:52:25 +00:00
Sam Rawlins
897235204e
Split use_of_nullable_value into separate codes with more friendly
...
messages.
* UNCHECKED_INVOCATION_OF_NULLABLE_VALUE
* UNCHECKED_METHOD_INVOCATION_OF_NULLABLE_VALUE
* UNCHECKED_OPERATOR_INVOCATION_OF_NULLABLE_VALUE
* UNCHECKED_PROPERTY_ACCESS_OF_NULLABLE_VALUE
* UNCHECKED_USE_OF_NULLABLE_VALUE_AS_CONDITION
* UNCHECKED_USE_OF_NULLABLE_VALUE_AS_ITERATOR
* UNCHECKED_USE_OF_NULLABLE_VALUE_IN_SPREAD
* UNCHECKED_USE_OF_NULLABLE_VALUE_IN_YIELD_EACH
Additionally, improve the ADD_NULL_CHECK quick fix by supporting
expressions which need to be null-checked in a for-each, a yield-each,
and a spread.
Bug: https://github.com/dart-lang/sdk/issues/44603
Change-Id: Ie493a2dc1c05b64a16fd17c77d3468e8d562c497
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178080
Commit-Queue: Samuel Rawlins <srawlins@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2021-01-08 21:07:02 +00:00
Brian Wilkerson
9453c76e22
Remove a hint code that is not being generated
...
Change-Id: Ifdc94c2d8dbcdeaf24ee938532c9f3a93c497e3e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177540
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
2021-01-06 18:20:56 +00:00
Konstantin Shcheglov
17b43ca846
Issue 44353. Fix adding duplicate relavance tags for available declarations in parts.
...
Bug: https://github.com/dart-lang/sdk/issues/44353
Bug: https://github.com/flutter/flutter-intellij/issues/5108
Change-Id: I6a5f04a7f44d12466799c10bac720189bd4b0612
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177640
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2021-01-05 22:43:38 +00:00
Daco Harkes
0d7cdcbcce
[vm/ffi] Document marking struct fields as external
...
Add the suggestion to mark the struct fields as external to both the
CFE and analyzer error message on field initializers for Structs.
Closes: https://github.com/dart-lang/sdk/issues/44024
Change-Id: Ie7b20abe34d96d31df9616c112fbc975351ce0de
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177602
Reviewed-by: Martin Kustermann <kustermann@google.com >
Commit-Queue: Daco Harkes <dacoharkes@google.com >
2021-01-05 16:24:09 +00:00
Darren Chan
bb19112f22
[analyzer] Use package_config in GN workspaces.
...
Per http://fxr/445334 , .packages files are no longer used within the
fuchsia tree. This inadvertently caused http://fxb/65752 , where vscode
integration is broken.
This cl fixes this by updating _findPackagesFile to look for
`*package_config.json` files instead of `.packages` files.
Fixed: http://fxb/65752
Change-Id: I676fcecff49fd980255391555daca3ce5d5d9de9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176540
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Darren Chan <chandarren@google.com >
2021-01-05 14:43:38 +00:00
Brian Wilkerson
6143fb5668
Improve some diagnostic messages
...
Change-Id: Ic351c2addff76dea8fe49c7e2ce68b46043f0814
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177480
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
2021-01-04 16:43:08 +00:00
Konstantin Shcheglov
ea775a6a0f
Migrate SearchEngineImplTest to AnalysisContextCollection.
...
Change-Id: Ide259d4baf2a309a08ae74019ecb95d54d97f365
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177440
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2021-01-02 19:21:16 +00:00
Konstantin Shcheglov
bb8669aadf
Remove 'unresolvedFile' from FileState.
...
Having a FileState with `null` part and URI poisons null safety migration.
Change-Id: Idd3b484591d1ca6f48eabb7f5614abfdcf6ff9bf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176720
Reviewed-by: Samuel Rawlins <srawlins@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2020-12-23 23:17:36 +00:00
pq
eaa0f5d19a
quickfix to remove deprecated lints from options files
...
Change-Id: I0440450257416570feb68e71e78f1f7f4e042287
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176700
Commit-Queue: Phil Quitslund <pquitslund@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
2020-12-21 19:25:59 +00:00
Daco Harkes
b6b82dd3ac
[vm/ffi] Support nested structs
...
This CL adds support for nested structs in FFI calls, callbacks, and
memory loads and stores through the Struct classes itself.
Nesting empty structs and nesting a structs in themselves (directly or
indirectly) is reported as error.
This feature is almost fully implemented in the CFE transformation.
Because structs depend on the sizes of their nested structs, the structs
now need to be processed in topological order.
Field access to nested structs branches at runtime on making a derived
Pointer if the backing memory of the outer struct was a Pointer or
making a TypedDataView if the backing memory of the outer struct was
a TypedData.
Assigning to a nested struct is a byte for byte copy from the source.
The only changes in the VM are contained in the native calling
convention calculation which now recursively needs to reason about
fundamental types instead of just 1 struct deep.
Because of the amount of corner cases in the calling conventions that
need to be covered, the tests are generated, rather than hand-written.
ABIs tested on CQ: x64 (Linux, MacOS, Windows), ia32 (Linux, Windows),
arm (Android softFP, Linux hardFP), arm64 Android.
ABIs tested locally through Flutter: arm64 iOS.
ABIs not tested: ia32 Android (emulator), x64 iOS (simulator), arm iOS.
TEST=runtime/bin/ffi_test/ffi_test_functions_generated.cc
TEST=runtime/bin/ffi_test/ffi_test_functions.cc
TEST=tests/{ffi,ffi_2}/function_structs_by_value_generated_test.dart
TEST=tests/{ffi,ffi_2}/function_callbacks_structs_by_value_generated_tes
TEST=tests/{ffi,ffi_2}/function_callbacks_structs_by_value_test.dart
TEST=tests/{ffi,ffi_2}/vmspecific_static_checks_test.dart
Closes https://github.com/dart-lang/sdk/issues/37271 .
Contains a temporary workaround for
https://github.com/dart-lang/sdk/issues/44454 .
Change-Id: I5e5d10e09e5c3fc209f5f7e997efe17bd362214d
Cq-Include-Trybots: luci.dart.try:dart-sdk-linux-try,dart-sdk-mac-try,dart-sdk-win-try,vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-mac-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-kernel-linux-debug-x64-try,vm-kernel-nnbd-linux-debug-x64-try,vm-kernel-nnbd-linux-debug-ia32-try,vm-kernel-nnbd-mac-release-x64-try,vm-kernel-nnbd-win-debug-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-debug-simarm_x64-try,vm-kernel-precomp-nnbd-linux-debug-x64-try,vm-kernel-precomp-win-release-x64-try,vm-kernel-reload-linux-debug-x64-try,vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,vm-kernel-msan-linux-release-x64-try,vm-kernel-precomp-msan-linux-release-x64-try,vm-kernel-precomp-android-release-arm_x64-try,analyzer-analysis-server-linux-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/169221
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com >
2020-12-18 09:34:35 +00:00
Paul Berry
5c19c9f5e4
Flow analysis: store ExpressionInfo in SSA nodes.
...
This CL modifies flow analysis API so that when a variable is written
or initialized, if the written expression has non-trivial flow
analysis information, it is captured in the SsaNode associated with
the variable.
The stored information is not yet used; in a follow-up CL, I will add
the ability to retrieve it on a read and use it for promotions.
Bug: https://github.com/dart-lang/language/issues/1274
Change-Id: I1e2590205d4a0c59f4400a119f3d6b380a11414c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176460
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Reviewed-by: Johnni Winther <johnniwinther@google.com >
2020-12-17 15:16:04 +00:00
Konstantin Shcheglov
4f15c4af8f
Cache directory to BazelWorkspacePackage mapping.
...
We have a huge performance issue internally because of this.
This CL makes analysis from 3x to 7x faster.
Bug: https://github.com/dart-lang/sdk/issues/44484
Change-Id: I71edde0c9da1dd954c69d64cb7448494bf6f3bad
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176420
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2020-12-16 21:26:52 +00:00
Keerti Parthasarathy
0f71acfcf3
Consider dart lang as third party for options file.
...
Change-Id: I40b07053815a79fe870b5434a4cda93959cec497
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176323
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Keerti Parthasarathy <keertip@google.com >
2020-12-16 16:22:52 +00:00
Konstantin Shcheglov
ac18a7ba91
Implement search for TypeAliasElement.
...
Change-Id: I14c931277432d95c8ed2ae48d5339a878966ddc5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176402
Reviewed-by: Samuel Rawlins <srawlins@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2020-12-16 04:02:31 +00:00
Konstantin Shcheglov
02edd6c182
Migrate SearchTest to PubPackageResolutionTest.
...
Change-Id: Ife51f8eb24bbb50e0f4bba4fa8358ec1f3a9368c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176400
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2020-12-16 01:05:09 +00:00
Konstantin Shcheglov
c272975f92
Report errors when non-function type alias expands to a type parameter.
...
Change-Id: Ibed352c45972f1ff6477566a2c2dcf98839fb44b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176321
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2020-12-15 21:57:01 +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
Konstantin Shcheglov
c860af98d8
Remove ClassElementImpl.collectAllSupertypes()
...
We have API for this now.
Change-Id: I89c68cae5e4205f7ac1200041cb72f5b6842305e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176182
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2020-12-15 07:13:30 +00:00
Konstantin Shcheglov
ced8f5d1d8
Migrate IndexTest to PubPackageResolutionTest.
...
Change-Id: Idf285edac51c2bec5b1b57b4a831889156c795ed
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176181
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2020-12-15 02:10:20 +00:00
Konstantin Shcheglov
17c6567054
Use FindElement in SearchTest and remove findChildElement().
...
Change-Id: I78d0c0fe7ae5a1453167b28fedeb79d3e53b7d29
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176160
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2020-12-15 00:42:09 +00:00
Konstantin Shcheglov
9717c775e4
Deprecate FunctionTypeAliasElement.function
...
Change-Id: Id629afa92c6681ba796aed75b24c4251fd86810f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176140
Reviewed-by: Samuel Rawlins <srawlins@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2020-12-14 22:26:29 +00:00
Konstantin Shcheglov
6606edee3c
Add ElementVisitor.visitTypeAliasElement
...
R=brianwilkerson@google.com
Change-Id: Id2e2fa118d5d9f363201aeb5384806bc6536c973
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176063
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2020-12-14 21:20:29 +00:00
Sam Rawlins
33a9d169ef
Analyzer: prepare for null safety with explicit casts, and boolean defaults
...
Change-Id: Ic2e13b96903b9e23ad86ae1af86b912ac1a8636c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176040
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Samuel Rawlins <srawlins@google.com >
2020-12-14 17:13:48 +00:00
Daco Harkes
3e7cda8a4e
[vm/ffi] Support passing structs by value
...
This CL adds passing structs by value in FFI trampolines.
Nested structs and inline arrays are future work.
C defines passing empty structs as undefined behavior, so that is not
supported in this CL.
Suggested review order:
1) commit message
2) ffi/marshaller (decisions for what is done in IL and what in MC)
3) frontend/kernel_to_il (IL construction)
4) backend/il (MC generation from IL)
5) rest in VM
Overall architecture is that structs are split up into word-size chunks
in IL when this is possible: 1 definition in IL per chunk, 1 Location in
IL per chunk, and 1 NativeLocation for the backend per chunk.
In some cases it is not possible or less convenient to split into
chunks. In these cases TypedDataBase objects are stored into and loaded
from directly in machine code.
The various cases:
- FFI call arguments which are not passed as pointers: pass individual
chunks to FFI call which already have the right location.
- FFI call arguments which are passed as pointers: Pass in TypedDataBase
to FFI call, allocate space on the stack, and make a copy on the stack
and pass the copies' address to the callee.
- FFI call return value: pass in TypedData to FFI call, and copy result
in machine code.
- FFI callback arguments which are not passed as pointers: IL definition
for each chunk, and populate a new TypedData with those chunks.
- FFI callback arguments which are passed as pointer: IL definition for
the pointer, and copying of contents in IL.
- FFI return value when location is pointer: Copy data to callee result
location in IL.
- FFI return value when location is not a pointer: Copy data in machine
code to the right registers.
Some other notes about the implementation:
- Due to Store/LoadIndexed loading doubles from float arrays, we use
a int32 instead and use the BitCastInstr.
- Linux ia32 uses `ret 4` when returning structs by value. This requires
special casing in the FFI callback trampolines to either use `ret` or
`ret 4` when returning.
- The 1 IL definition, 1 Location, and 1 NativeLocation approach does
not remove the need for special casing PairLocations in the machine
code generation because they are 1 Location belonging to 1 definition.
Because of the amount of corner cases in the calling conventions that
need to be covered, the tests are generated, rather than hand-written.
ABIs tested on CQ: x64 (Linux, MacOS, Windows), ia32 (Linux, Windows),
arm (Android softFP, Linux hardFP), arm64 Android.
ABIs tested locally through Flutter: ia32 Android (emulator), x64 iOS
(simulator), arm64 iOS.
ABIs not tested: arm iOS.
TEST=runtime/bin/ffi_test/ffi_test_functions_generated.cc
TEST=runtime/bin/ffi_test/ffi_test_functions.cc
TEST=tests/{ffi,ffi_2}/function_structs_by_value_generated_test.dart
TEST=tests/{ffi,ffi_2}/function_callbacks_structs_by_value_generated_tes
TEST=tests/{ffi,ffi_2}/function_callbacks_structs_by_value_test.dart
TEST=tests/{ffi,ffi_2}/vmspecific_static_checks_test.dart
Closes https://github.com/dart-lang/sdk/issues/36730 .
Change-Id: I474d3a4ee1faadbe767ddadd1b696e24d8dc364c
Cq-Include-Trybots: luci.dart.try:dart-sdk-linux-try,dart-sdk-mac-try,dart-sdk-win-try,vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-mac-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-kernel-linux-debug-x64-try,vm-kernel-nnbd-linux-debug-x64-try,vm-kernel-nnbd-linux-debug-ia32-try,vm-kernel-nnbd-mac-release-x64-try,vm-kernel-nnbd-win-debug-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-debug-simarm_x64-try,vm-kernel-precomp-nnbd-linux-debug-x64-try,vm-kernel-precomp-win-release-x64-try,vm-kernel-reload-linux-debug-x64-try,vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,vm-kernel-msan-linux-release-x64-try,vm-kernel-precomp-msan-linux-release-x64-try,vm-kernel-precomp-android-release-arm_x64-try,analyzer-analysis-server-linux-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140290
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2020-12-14 16:22:48 +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
05cce14437
Write markers into resolution stream.
...
Change-Id: I84092ac81b67637d2975ae331034207027740191
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175960
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2020-12-14 05:50:57 +00:00
Konstantin Shcheglov
34939ac7b8
Resolve default values of nested parameters of function typed formal parameters.
...
FAILURE: /((=#is!?}=
[NoSuchMethodError: The getter 'nullabilitySuffix' was called on null.
Receiver: null
Tried calling: nullabilitySuffix, #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
#1 SubtypeHelper.isSubtypeOf (package:analyzer/src/dart/element/subtype.dart:50:29)
#2 TypeSystemImpl.isSubtypeOf2 (package:analyzer/src/dart/element/type_system.dart:1131:27)
#3 DartObjectImpl.hasType (package:analyzer/src/dart/constant/value.dart:487:41)
#4 DartObjectComputer.typeTest (package:analyzer/src/dart/constant/evaluation.dart:2159:44)
#5 ConstantVisitor.visitIsExpression (package:analyzer/src/dart/constant/evaluation.dart:1230:34)
#6 IsExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:6463:49)
#7 ConstantVisitor.visitConditionalExpression (package:analyzer/src/dart/constant/evaluation.dart:1104:48)
#8 ConditionalExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:2265:15)
#9 ConstantEvaluationEngine.computeConstantValue (package:analyzer/src/dart/constant/evaluation.dart:159:16)
#10 _ConstantWalker.evaluate (package:analyzer/src/dart/constant/compute.dart:57:32)
#11 DependencyWalker.walk.strongConnect (package:analyzer/src/summary/link.dart:100:13)
#12 DependencyWalker.walk (package:analyzer/src/summary/link.dart:119:18)
#13 computeConstants (package:analyzer/src/dart/constant/compute.dart:26:14)
#14 LibraryAnalyzer._computeConstants (package:analyzer/src/dart/analysis/library_analyzer.dart:259:5)
#15 LibraryAnalyzer.analyzeSync (package:analyzer/src/dart/analysis/library_analyzer.dart:145:5)
#16 LibraryAnalyzer.analyze (package:analyzer/src/dart/analysis/library_analyzer.dart:107:12)
#17 AnalysisDriver._computeResolvedLibrary2.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1414:65)
#18 PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:32:15)
#19 AnalysisDriver._computeResolvedLibrary2 (package:analyzer/src/dart/analysis/driver.dart:1400:20)
#20 AnalysisDriver._computeResolvedLibrary.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1393:15)
#21 _rootRun (dart:async/zone.dart:1186:13)
#22 _CustomZone.run (dart:async/zone.dart:1090:19)
#23 _runZoned (dart:async/zone.dart:1626:10)
#24 runZoned (dart:async/zone.dart:1546:10)
#25 NullSafetyUnderstandingFlag.enableNullSafetyTypes (package:analyzer/dart/element/null_safety_understanding_flag.dart:42:12)
#26 AnalysisDriver._computeResolvedLibrary (package:analyzer/src/dart/analysis/driver.dart:1392:40)
#27 AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:962:22)
#28 AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2013:24)
Change-Id: I1d5482390a7d76cccbfbdf1dd871f9473ce2826a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175944
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2020-12-14 05:50:17 +00:00
Konstantin Shcheglov
d2e5d475bc
Fix for crash when annotation references synthtic constructor of a generic class alias.
...
FAILURE: mixi@:class<s=a(=m
[NoSuchMethodError: The getter 'enclosingElement' was called on null.
Receiver: null
Tried calling: enclosingElement, #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
#1 LinkedResolutionReader.nextElement (package:analyzer/src/summary2/bundle_reader.dart:602:22)
#2 ApplyResolutionVisitor._nextElement (package:analyzer/src/summary2/apply_resolution.dart:1106:24)
#3 ApplyResolutionVisitor.visitAnnotation (package:analyzer/src/summary2/apply_resolution.dart:83:20)
#4 AnnotationImpl.accept (package:analyzer/src/dart/ast/ast.dart:280:49)
#5 NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:7611:20)
#6 ApplyResolutionVisitor.visitClassTypeAlias (package:analyzer/src/summary2/apply_resolution.dart:167:20)
#7 ClassTypeAliasImpl.accept (package:analyzer/src/dart/ast/ast.dart:1794:49)
#8 LinkedContext.applyResolution (package:analyzer/src/summary2/bundle_reader.dart:512:11)
#9 LinkedUnitContext.applyResolution (package:analyzer/src/summary2/linked_unit_context.dart:93:25)
#10 ElementImpl.metadata (package:analyzer/src/dart/element/element.dart:2893:21)
#11 ResolutionVisitor.visitClassTypeAlias (package:analyzer/src/dart/resolver/resolution_visitor.dart:256:51)
#12 ClassTypeAliasImpl.accept (package:analyzer/src/dart/ast/ast.dart:1794:49)
#13 NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:7611:20)
#14 CompilationUnitImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:2141:21)
#15 RecursiveAstVisitor.visitCompilationUnit (package:analyzer/dart/ast/visitor.dart:731:10)
#16 CompilationUnitImpl.accept (package:analyzer/src/dart/ast/ast.dart:2134:49)
#17 LibraryAnalyzer._resolveFile (package:analyzer/src/dart/analysis/library_analyzer.dart:680:10)
#18 LibraryAnalyzer.analyzeSync.<anonymous closure> (package:analyzer/src/dart/analysis/library_analyzer.dart:139:7)
#19 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:387:8)
#20 LibraryAnalyzer.analyzeSync (package:analyzer/src/dart/analysis/library_analyzer.dart:138:11)
#21 LibraryAnalyzer.analyze (package:analyzer/src/dart/analysis/library_analyzer.dart:107:12)
#22 AnalysisDriver._computeResolvedLibrary2.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1414:65)
#23 PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:32:15)
#24 AnalysisDriver._computeResolvedLibrary2 (package:analyzer/src/dart/analysis/driver.dart:1400:20)
#25 AnalysisDriver._computeResolvedLibrary.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1393:15)
Change-Id: I6f04a325b30d9dc61e7eb1a4bba91ed8b9bcd1d3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176060
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2020-12-14 05:37:37 +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