dart-sdk/pkg
Paul Berry c9e2b012b1 Make the type schema for null-aware spread operations consistent.
Prior to this CL, the CFE used a nullable type schema for null-aware
spread operators in list literals, but a non-nullable type schema for
null-aware spread operators in set and map literals. This was clearly
an oversight; a nullable type schema should be used for for null-aware
spread operators in all kinds of collection literals.

This change brings the CFE into alignment with the analyzer.

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

Change-Id: I0d5aa128656c22211228f0dd35ccee40925b4ef0
Bug: https://github.com/dart-lang/sdk/issues/54828
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/349921
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2024-02-13 22:25:41 +00:00
..
_fe_analyzer_shared Revert "[macros] Tweak diagnostic for unexpected macro implementation exception." 2024-02-13 12:38:14 +00:00
_js_interop_checks [jsinterop] fix lowering of callMethod unchecked calls. 2024-02-09 01:59:46 +00:00
analysis_server Verify that outlines work in generated code 2024-02-13 20:35:19 +00:00
analysis_server_client [analysis_server] Add a supportsUris client capability for legacy server to switch into URI mode 2024-02-01 22:19:00 +00:00
analyzer CQ. ErrorReporter, use atElement() instead of reportErrorForElement() 2024-02-13 17:16:07 +00:00
analyzer_cli Reland Workspace changes. 2024-02-05 17:33:09 +00:00
analyzer_plugin Legacy. Deprecate 'withNullability' in getDisplayString() methods. 2024-02-07 01:25:38 +00:00
analyzer_utilities final -> var for analyzer_utilities 2024-01-12 22:29:37 +00:00
async_helper
bisect_dart
build_integration
compiler [dart2js] Make KernelImpactConverter state settable. 2024-02-13 21:26:46 +00:00
dart2js_info [dart2js] Fix dump-info tests by starting indexing at 0 instead of 1. 2024-01-12 21:51:51 +00:00
dart2js_runtime_metrics [dart2js] Expose JS_TRUE and JS_FALSE via dart2js_runtime_metrics. 2024-02-09 18:38:55 +00:00
dart2js_tools
dart2native [ dart2native ] Remove unused constant 2024-02-08 19:51:11 +00:00
dart2wasm Cleanup some code regarding deprecated native syntax 2024-02-13 10:41:32 +00:00
dart_internal
dart_service_protocol_shared
dartdev Solidify dtd lifecycle 2024-02-13 16:17:18 +00:00
dds [package:dds] Prepare to publish v3.2.0 2024-02-13 18:21:35 +00:00
dds_service_extensions [ DDS ] Migrate DDS specific tests from service/ and update package:dds_service_extensions to 1.7.0 2024-01-26 22:45:14 +00:00
dev_compiler [ddc] shard runtime_debugger_api_test. 2024-02-13 20:10:17 +00:00
dtd Solidify dtd lifecycle 2024-02-13 16:17:18 +00:00
dtd_impl Solidify dtd lifecycle 2024-02-13 16:17:18 +00:00
expect [expect] remove top-level dart2jsProductionMode and webNumbers. 2024-02-08 17:00:59 +00:00
front_end Make the type schema for null-aware spread operations consistent. 2024-02-13 22:25:41 +00:00
frontend_server [CFE et al] Optimize presubmit scripts 2024-01-31 10:41:20 +00:00
heap_snapshot
js [pkg:js] Update changelog to better comment breaking change in 0.7.0 2024-01-05 21:16:11 +00:00
js_ast [js_ast] Fix js_ast printer bugs 2024-01-20 02:06:59 +00:00
js_runtime
js_shared [web] Move Variance to js_shared/lib/ for shared use. 2023-12-22 18:16:01 +00:00
kernel Cleanup some code regarding deprecated native syntax 2024-02-13 10:41:32 +00:00
language_versioning_2_12_test
linter fix unnecessary_parens overreporting on records missing commas 2024-02-12 23:37:32 +00:00
meta Prepare package:meta for publish 2024-02-05 14:05:29 +00:00
mmap Revert "[ffi]: Remove pointer elementAt method." 2024-01-22 12:20:48 +00:00
modular_test [expect] introduce package:expect/requirement.dart 2024-02-08 01:48:24 +00:00
native_stack_traces
scrape
smith [test_runner] Rename host-checked to host-asserts 2024-02-08 22:01:09 +00:00
sourcemap_testing
status_file [test_runner] Rename host-checked to host-asserts 2024-02-08 22:01:09 +00:00
telemetry
test_runner Reland "[ddc] Fix running d8 with test.py" 2024-02-13 20:09:58 +00:00
testing [package:testing] Reset the isolates errors fatal option 2024-02-05 14:38:05 +00:00
vm Cleanup some code regarding deprecated native syntax 2024-02-13 10:41:32 +00:00
vm_service [vm] Remove context allocations for tear-offs 2024-02-13 15:33:38 +00:00
vm_service_interface [deps] rev crypto, dartdoc, ecosystem, lints, native, sse 2024-02-13 00:30:32 +00:00
vm_service_protos
vm_snapshot_analysis
wasm_builder [dart2wasm] Outline <obj> is/as <type> checks to shared helper functions 2024-02-12 12:06:07 +00:00
.gitignore
analysis_options.yaml
BUILD.gn
OWNERS
pkg.dart
pkg.status analyzer/test/src/summary/macro_test: Slow, Pass 2024-02-09 23:47:32 +00:00
README.md

Package validation

The packages in pkg/ are automatically validated on the LUCI CI bots. The validation is largely done by the tools/package_deps package; it can be tested locally via:

dart tools/package_deps/bin/package_deps.dart

Packages which are published

There are several packages developed in pkg/ which are published to pub. Validation of these packages is particularly important because the pub tools are not used for these packages during development; we get our dependency versions from the DEPS file. Its very easy for the dependencies specified in a package's pubspec file to get out of date wrt the packages and versions actually used.

In order to better ensure we're publishing correct packages, we validate some properties of the pubspec files on our CI system. These validations include:

  • that the dependencies listed in the pubspec are used in the package
  • that all the packages used by the source are listed in the pubspec
  • that we don't use relative path deps to pkg/ or third_party/ packages

Packages which are not published

For packages in pkg/ which we do not intend to be published, we put the following comment in the pubspec.yaml file:

# This package is not intended for consumption on pub.dev. DO NOT publish.
publish_to: none

These pubspecs are still validated by the package validation tool. The contents are more informational as the pubspecs for these packages are not consumed by the pub tool or ecosystem.

We validate:

  • that the dependencies listed in the pubspec are used in the package
  • that all the packages used by the source are listed in the pubspec
  • that a reference to a pkg/ package is done via a relative path dependency