-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Immutable List/Map #236
Comments
This comment was originally written by diegof...@gmail.com If there is an immutable list, String could implement that interface |
This comment was originally written by drfibonacci@google.com Removed Type-Defect label. |
This comment was originally written by @yjbanov Here's my proposal for an implementation of read-only collection interfaces (with minimal disruptions to the current status quo and with programmer familiarity in mind) along with a working prototype. The discussion on misc mailing list was mostly favorable: Discussions: Proposed class hierarchy: Prototype code: Also, it would be nice to distinguish true immutability from read-only interfaces. The proposal is for the latter, not the former. The two concepts are independent of each other, although very related. It is highly desirable that immutable classes only provide read-only interfaces. Unfortunately, I refer to read-only interfaces as immutable in my code comments. I'm planning to fix that. Thanks, Yegor |
This comment was originally written by james.h.crack...@gmail.com (Disclosure: my background is C#, but I am very interested in Dart in that it has the potential to unite the client and server code bases. I believe that C# is a great language with a terrible framework, and do not want to say the same of Dart.) I would like to add that the availability of immutable interfaces is important in that it dramatically improves the expressiveness of your interfaces. Usually when you publicly expose a collection, you want it to be immutable, so what ends up happening is everything returns Collection or Iterable (this is also the case in C#). If you have immutable interfaces, your interfaces become vastly more expressive. The Iterable and Collection types tell a programmer absolutely nothing beyond the fact that you have a bunch of objects, whereas with immutable interfaces for the standard abstract data types, the consumer of your interface immediately knows everything that those interfaces entail:
This may seem like small details, but in actuality there is a wealth of valuable information here - particularly when developing complex models. If you consider reflection-orientated uses for this information (think ORMs such as [N]Hibernate), the uses become particularly evident. Now, while the class hierarchy posted by Yegor is pretty much spot-on in terms of structure, I would suggest that it is preferable to give the immutable interface the common name; the reason being that you want the selection of a mutable type to be a conscious decision on the part of the programmer per the 'make it hard to write bad code' mantra. Thus I would suggest the a structure along the following lines: Iterable <-- Collection <-- List <-- MutableList Implementation should be fairly easy with some refactoring in that all that has to happen is make the existing interfaces implement the immutable ones, and move all of the 'read' methods to the immutable interfaces. No code breakage, although there are probably a large number of cases where the newly created immutable interfaces should be used in lieu of the mutable ones. @yegor: I think what you may be trying to communicate is 'this will never change' as opposed to 'you cannot change this'. The former is a difficult guarantee to make because there is no real facility to do so. You can define a type ListThatWillNeverChange, but there is no guarantee that the returned object's behavior will not change beyond the fact that its type name claims it to be so. |
This comment was originally written by @yjbanov James, your suggestions are great. However, some of Dart's goals make it a little hard to go the whole 9 yards with this. Please, have a look at the mailing list discussions (links above). There you will find reasons for reserving common names for writable interfaces, as well as why I switched from "immutable" to "read-only". Yegor PS: The issue tracker is a bad place for design discussions. Why don't you post your thoughts to the mailing list instead of here (but provide cross-links)? Many more people would get a chance to read and comment on your ideas. |
Issue #3700 has been merged into this issue. |
This comment was originally written by domi...@google.com I'd like to see this solved not with new container types but with an immutable type extension, akin to const. Where const suggests the reference is not mutable, immutable would suggest the contents would not be mutable. This is important as it allows the VM and compiler to make assumptions and introduce new optimizations. |
FYI: Sequence<T> in r13806 gets me half way there with List. |
I know people are asking for something like Sequence. However, I can point out that there is an UnmodifiableListView class here: http://api.dartlang.org/docs/releases/latest/dart_collection/UnmodifiableListView.html (not sure why there isn't an UnmodifiableMapView, I'll open a bug for that :) CCing Florian to see if we should close this or keep this issue open. cc @floitschG. |
This comment was originally written by kajmagnu...@gmail.com I like Scala's class hierarchy and immutable/mutable classes a lot, e.g.: collection.Map -- can be mutable or immutable or read-only, exposes no mutating functions Here's an overview of what the Scala people have built; it's amazingly well designed IMO: |
Agreed that the Scala hierarchy is good. |
The Quiver library might be a good place to try immutable collection classes. https://github.com/google/quiver-dart Pull Requests welcome. |
cc @justinfagnani. |
I think most of these are covered by http://api.dartlang.org/docs/releases/latest/unmodifiable_collection.html and http://api.dartlang.org/docs/releases/latest/dart_collection/UnmodifiableListView.html The original request here was to have core interfaces without mutate methods. Sadly, this is not going to happen in V1. While it's possible to ship a List-like class without []=, remove, etc, it'll be a tough sell as a reusable Type. Too many other method expect to get something of type List, etc. |
This comment was originally written by davidm...@google.com I think separate collections with distinct interfaces is exactly the way to go. The fact that Iterable does not have any mutating methods means they can all implement that. Methods that accept List should where possible be changed to accept Iterable, or you can call toList on the immutable type. I am indeed trying to get these added to Quiver, we'll see how it goes :) |
This comment was originally written by Samuel....@gmail.com There are methods like Map.from(Map other), that expect other Map as an parameter. These methods don't need a whole Map, they are just fine with "read-only" Map. However, it is not possible to me give them object that implements just the read functionality of Map, because it can't be derived from Map. This is pity. I have to implement write methods that throw UnsupportedError. I feel this is somehow wrong. |
I fought hard for this, but in the end adding a non-mutable layer to List|Map|Set added too many types to a core library that was already big. Added NotPlanned label. |
This comment was originally written by @tkrotoff When I want an immutable variable, I do: final i = 10; If I want an immutable list, I would like to simply write: final names = ['Anna', 'Nicolas']; |
For the record, https://github.com/google/built_collection.dart is about as close as it's possible to get without changing the SDK. For example, BuiltList.toList uses a copy-on-write wrapper to implement the List interface, so you can efficiently call a method that expects a List but does not need the mutating part of the interface. |
Failures generate a StrongModeError. Fixes #236. Partially addresses #238. Some issues to do: - We're too eager to throw a StrongModeError. E.g., <int>[] is List<String> will throw. - We don't differentiate between implicit and explicit casts. R=leafp@google.com Review URL: https://codereview.chromium.org/1298893003 .
2019-06-11 tvolkert@users.noreply.github.com More fixes to cast response to Stream<List<int>> (#385) 2019-06-11 tvolkert@users.noreply.github.com Pass Uint8List to Datagram (#382) 2019-06-11 tvolkert@users.noreply.github.com Cast HttpRequest and HttpClientResponse streams to List<int> (#384) 2019-06-10 sgrekhov@unipro.ru Fixes #364. Change expected result to null for default values of clientMaxWindowBits and serverMaxWindowBits 2019-06-07 sgrekhov@unipro.ru Fixes #380. Added tests for logical and bitwise operations via type aliases 2019-06-07 sgrekhov@unipro.ru Additional fix for #373. Code style improved and more strict pattern checking 2019-06-06 sgrekhov@unipro.ru Fix for #380. Added tests for type aliases for built-in types. Test string concatenation and arithmetic operations 2019-06-05 sgrekhov@unipro.ru Fixes #380. Added tests for type aliases for built-in types initialization 2019-06-05 sgrekhov@unipro.ru Fixes #373. Expect reasonable file mode on Unix 2019-06-04 sgrekhov@unipro.ru Fixes #379. Numerous fixes for io/Process tests 2019-06-04 sgrekhov@unipro.ru Fixes #378. Use Platform.resolvedExecutable instead of 'dart' command 2019-06-04 irina.arkhipets@gmail.com Fixed Issue #375: it's possible that IPv6 loopback does not exist. 2019-06-04 irina.arkhipets@gmail.com Fixed Issue #236: host.host can be either "localhost" or Platform.localHostname. 2019-06-04 irina.arkhipets@gmail.com Issue #370, instantiate-to-bounds: added static tests for non-function type aliases. 2019-06-04 sgrekhov@unipro.ru Fix for #377. Use correct network interface type name (IPvX) 2019-06-04 sgrekhov@unipro.ru Fixes #374. Change pattern for error messages 2019-06-04 irina.arkhipets@gmail.com Issue #370, instantiate-to-bounds: added dynamic tests for non-function type aliases. 2019-06-04 sgrekhov@unipro.ru Fix for #372. Expect.fail() on timeout added 2019-06-04 sgrekhov@unipro.ru Fixes #371. Remove excessive asyncStart() 2019-06-03 irina.arkhipets@gmail.com Issue #147, test super bounded types: added tests for non-function type aliases. 2019-05-30 sgrekhov@unipro.ru Fixes #369. Use correct type arguments to avoid errors 2019-05-30 sgrekhov@unipro.ru Fixes #368. Don't try to bind system port 2019-05-30 sgrekhov@unipro.ru Fixes #367. Remove excessive asyncStart() 2019-05-30 sgrekhov@unipro.ru Fixes #366. Change expected result to SocketException TBR=whesse@google.com Change-Id: I137689755907b3333e597d7d210db2b4d37d70d0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105641 Reviewed-by: Alexander Thomas <athom@google.com> Reviewed-by: William Hesse <whesse@google.com>
Note the comment in cd1be9d07df32413024fe5c4ae9c5c6017c2f2c8 regarding this issue is wrong ... it should NOT be closed. @athomas |
@oetiker Thanks, we will remove the '#' signs from those messages in the future to avoid this from happening again. |
This change is not planned, and not likely to happen in the current Dart platform libraries. Having multiple versions of Should All in all, the original arguments for having only one The counter-argument would be that the increased static safety is worth the extra cost. You'll never get a run-time error from trying to modify a For now this issue can be closed. |
…criptor, stack_trace, usage, watcher bazel_worker (https://github.com/dart-lang/bazel_worker/compare/ceeba09..9710de6): 9710de6 2022-04-19 Devon Carew Update pubspec.yaml (#62) ec5905a 2022-03-20 Kevin Moore Fix CI (#61) collection (https://github.com/dart-lang/collection/compare/e1407da..69766da): 69766da 2022-05-25 Nate Bosch Add complexity bound on binary search methods (#239) 5b43ad7 2022-04-08 Kevin Moore Fix analysis issue with latest dev release (#236) e83c373 2022-04-08 Enrico Zamagni fixed maxBy compare param signature (#224) c1a07e4 2022-04-08 Sandro Lovnički Add a comment about NaN in min/max extensions (#234) 2bbb27b 2022-03-07 Nate Bosch Prepare to publish (#233) mockito (https://github.com/dart-lang/mockito/compare/1e977a7..fcd6b28): fcd6b28 2022-05-16 srawlins Release mockito 5.2.0 2faf8f1 2022-05-16 srawlins Import dart-lang/mockito#533 0f8ed0c 2022-04-19 Devon Carew Populate the pubspec 'repository' field. d399ca8 2022-05-13 fzyzcjy Fix compile errors in Flutter 3.0 948973e 2022-04-06 Samuel Rawlins clarify docs for unsupportedMembers. b86c24d 2022-03-14 srawlins Support `@GenerateMocks` annotations on `import` and `export` directives. c6971dd 2022-03-05 srawlins Fix generation of methods with return type of `FutureOr<T>`. pub_semver (https://github.com/dart-lang/pub_semver/compare/ea6c540..5c0b4bf): 5c0b4bf 2022-03-07 Devon Carew Update README.md (#65) test_descriptor (https://github.com/dart-lang/test_descriptor/compare/ead23c1..5ed5d7f): 5ed5d7f 2022-05-24 Nate Bosch Move TestOn annotation to library level (#41) ecb2447 2022-05-03 Devon Carew populate the repository field (#40) 776a4c4 2022-03-02 dependabot[bot] Bump actions/checkout from 2 to 3 (#39) d8eb6bd 2021-10-04 Kevin Moore Migrate to pkg:lints, enable two disable lints (#38) stack_trace (https://github.com/dart-lang/stack_trace/compare/5220580..17f09c2): 17f09c2 2022-05-03 Devon Carew Merge pull request #117 from dart-lang/repository_field a6403d0 2022-05-03 Devon Carew switch to package:lints ae8b883 2022-05-03 Devon Carew add markdown badges eed6081 2022-05-03 Devon Carew populate the pubspec repository field 46f6ee1 2022-02-01 Nate Bosch Change a TODO to a permanent comment (#114) usage (https://github.com/dart-lang/usage/compare/e85d575..79eef48): 79eef48 2022-05-25 Devon Carew refactor the github action (#177) f296352 2022-05-02 dependabot[bot] Bump actions/checkout from 2 to 3 (#176) 8852f1a 2022-05-02 Devon Carew Update dependabot to watch github actions (#175) 2d5b693 2022-04-26 Devon Carew Update README.md (#174) 2b2f3f8 2022-04-20 Devon Carew Switch from homepage to repository in pubspec (#173) 9b90d7c 2022-04-14 Devon Carew Update dependabot.yaml (#172) watcher (https://github.com/dart-lang/watcher/compare/f76997a..e00c0ea): e00c0ea 2022-01-19 Danny Tuppeny Add/enable Windows tests (#124) Change-Id: I0d48d3a7831040a18c996120cd51898e24215512 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/246725 Reviewed-by: Nate Bosch <nbosch@google.com> Commit-Queue: Devon Carew <devoncarew@google.com>
…ath, pool, source_maps, test, tools, webdev Revisions updated by `dart tools/rev_sdk_deps.dart`. args (https://github.com/dart-lang/args/compare/b08471e..9305d5a): 9305d5a 2023-02-15 Naoto Kaneko Update README.md (#236) characters (https://github.com/dart-lang/characters/compare/29f3a3e..3281cc7): 3281cc7 2023-02-16 Devon Carew blast_repo fixes (#75) dartdoc (https://github.com/dart-lang/dartdoc/compare/3931595..dba6f94): dba6f946 2023-02-16 Janice Collins Preserve type aliases for records in output (#3340) 96e61903 2023-02-16 Sam Rawlins Remove unused additionalOptions parameter, other little refactorings (#3339) f64290e1 2023-02-13 Devon Carew remove an unused css attribute (#3335) c055526a 2023-02-13 Devon Carew fix an issue where we created a temporary directory when performing a dry run (#3334) 1f6c8db5 2023-02-13 dependabot[bot] Bump github/codeql-action from 2.2.1 to 2.2.4 (#3337) f1fa0efc 2023-02-13 dependabot[bot] Bump actions/cache from 3.2.4 to 3.2.5 (#3338) ffi (https://github.com/dart-lang/ffi/compare/69d7596..32f5eef): 32f5eef 2023-02-20 Daco Harkes Bump SDK constraint to 4.0.0 (#185) http (https://github.com/dart-lang/http/compare/f4b365e..c13a3f8): c13a3f8 2023-02-17 Alex Li ✨ Add Cronet embedded tool (#853) markdown (https://github.com/dart-lang/markdown/compare/f51c24c..4befe66): 4befe66 2023-02-16 Zhiguang Chen Do not generate heading IDs for headings with no content in `HeaderWithIdSyntax` (#522) cae08af 2023-02-15 Kevin Moore Prepare to release v7.0.1 (#520) bdbaf76 2023-02-15 Zhiguang Chen Remove lookarounds from autolink extension patterns (#519) eb09fac 2023-02-14 Kevin Moore Move to pkg:dart_flutter_team_lints (#518) 51a6389 2023-02-15 Zhiguang Chen Add line endings to HTML blocks (#512) a4cd7a0 2023-02-14 Kevin Moore Label tests that only run on the VM: allows running tests with browser (#516) 6788042 2023-02-14 Kevin Moore CI: add publish and response workflows (#517) mockito (https://github.com/dart-lang/mockito/compare/d2a8df1..ed5bd84): ed5bd84 2023-01-09 Ross Wang Relax mixin criteria 781752c 2023-02-13 Sam Rawlins Change `void` to `dynamic` when overriding method arguments 71e41b9 2023-02-10 Sam Rawlins Add `ignore_for_file: use_of_void_result` d5a25f8 2023-02-08 Sam Rawlins Fix violations of `unnecessary_parenthesis` lint path (https://github.com/dart-lang/path/compare/a95f1e9..24b58a2): 24b58a2 2023-02-20 Kevin Moore Move to team lints, require Dart 2.19 (#138) 8ec8ca0 2023-02-18 Kevin Moore blast_repo fixes (#137) pool (https://github.com/dart-lang/pool/compare/51f1131..694cfd8): 694cfd8 2023-02-20 Kevin Moore move to package:dart_flutter_team_lints, require Dart 2.19 (#65) 40bf2af 2023-02-20 Kevin Moore blast_repo fixes (#64) source_maps (https://github.com/dart-lang/source_maps/compare/cf44db3..a112e98): a112e98 2023-02-16 Devon Carew configure publishing automation (#74) test (https://github.com/dart-lang/test/compare/b5e70db..e56c643): e56c6439 2023-02-17 Jacob MacDonald Add exe compiler, supports running tests compiled to native executables (#1941) f80dfa00 2023-02-16 Nate Bosch Add note about why we are replacing matcher (#1940) 732ae1de 2023-02-15 Nate Bosch Add `because` usage in examples (#1939) f6df9756 2023-02-15 Jacob MacDonald Fix typo in readme (#1937) aca53419 2023-02-14 Nate Bosch Add a caret constraint for matcher (#1927) f7f3a019 2023-02-14 Jacob MacDonald use test_api/backend.dart instead of test_core/backend.dart (#1936) de40c1c0 2023-02-14 Jacob MacDonald Add support for `--compiler` flag (#1903) 1f42db8c 2023-02-13 Devon Carew updates to package:checks docs (#1933) tools (https://github.com/dart-lang/tools/compare/48a544b..a53933c): a53933c 2023-02-17 Elias Yishak [package:dash_analytics] Tests for conforming to GA4 Measurement Protocol limitations (#9) c54430b 2023-02-17 Devon Carew add some clarification to the top-level readme (#8) webdev (https://github.com/dart-lang/webdev/compare/0bae2be..ae7eb80): ae7eb80 2023-02-17 Anna Gringauze Add tests for object inspection (#1973) 7d80a2c 2023-02-17 Elliott Brooks (she/her) Ignore offset / count if an instance has no `length` (#1972) cd66172 2023-02-17 Elliott Brooks (she/her) [MV3 Debug Extension] User can reload app and continue to debug (#1968) 8b7f9d3 2023-02-16 Anna Gringauze Re-enable weak webdev tests (#1960) 83d8e47 2023-02-16 Elliott Brooks (she/her) [MV3 Debug Extension] Variables in panel.dart should be private (#1969) 4e85e74 2023-02-16 Elliott Brooks (she/her) [MV3 Debug Extension] The new debug extension can be run on Manifest V3 or Manifest V2 (#1966) 3982f5f 2023-02-15 Elliott Brooks (she/her) [MV3 Debug Extension] Clean up tests in preparation for supporting compiling to MV2 (#1964) 3ad544e 2023-02-15 Elliott Brooks (she/her) [MV3 Debug Extension] Remove isMV3Extension field from DevtoolsRequest (#1963) c77043e 2023-02-14 Elliott Brooks (she/her) [MV3 Debug Extension] Fix isDevMode getter (#1962) a761125 2023-02-14 Elliott Brooks (she/her) [MV3 Debug Extension] Print `console` messages on test failure (#1961) 41e92be 2023-02-14 Anna Gringauze Create test_common package (#1945) 443f820 2023-02-14 Anna Gringauze Re-enable skipped reload test (#1958) a7bc3fc 2023-02-14 Anna Gringauze Make dart-uri-file-uri test use sound null safety (#1959) 464a8eb 2023-02-14 Elliott Brooks (she/her) [MV3 Debug Extension] Compile extension with Dart instead of shell script (#1954) 7cf8fe2 2023-02-13 Anna Gringauze Fix asset handler tests (#1956) c371ad7 2023-02-13 Anna Gringauze Fix chrome_proxy_service tests broken after switch to null safety by default (#1957) d6ec127 2023-02-13 Anna Gringauze Move test-only code from the SdkLayout (#1955) 35fa34b 2023-02-13 Elliott Brooks (she/her) [MV3 Debug Extension] Update Chrome APIs to be backwards compatible with MV2 (#1951) Change-Id: I4250594d0fa775d07cb3a0f8594e634552de452b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/284240 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Auto-Submit: Devon Carew <devoncarew@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
…ctor, browser_launcher, characters, clock, collection, convert, crypto, csslib, dartdoc, fixnum, glob, html, http, http_multi_server, http_parser, json_rpc_2, logging, matcher, mime, package_config, path, pool, pub_semver, source_maps, source_span, sse, stack_trace, stream_channel, term_glyph, test, test_descriptor, test_process, tools, usage, watcher, web_socket_channel, webdev, yaml, yaml_edit Revisions updated by `dart tools/rev_sdk_deps.dart`. args (https://github.com/dart-lang/args/compare/7a5e3b0..5ac2ba1): 5ac2ba1 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#238) f77b1dc 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#239) async (https://github.com/dart-lang/async/compare/f454380..0127813): 0127813 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#236) 100445b 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#237) bazel_worker (https://github.com/dart-lang/bazel_worker/compare/53871c5..d5f8837): d5f8837 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#70) a8a55e6 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#71) benchmark_harness (https://github.com/dart-lang/benchmark_harness/compare/725534a..e591ec4): e591ec4 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#86) 38bf5b8 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#87) boolean_selector (https://github.com/dart-lang/boolean_selector/compare/16e6ad3..28dc03d): 28dc03d 2023-04-04 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#45) browser_launcher (https://github.com/dart-lang/browser_launcher/compare/bc2dc4e..ba4e028): ba4e028 2023-04-04 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#41) characters (https://github.com/dart-lang/characters/compare/3281cc7..ba8d557): ba8d557 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#79) 60cae68 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#80) clock (https://github.com/dart-lang/clock/compare/984642e..93d9f56): 93d9f56 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#48) collection (https://github.com/dart-lang/collection/compare/30fd0f8..9db854d): 9db854d 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#278) convert (https://github.com/dart-lang/convert/compare/83886e3..8812e40): 8812e40 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#79) d28dc33 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#80) crypto (https://github.com/dart-lang/crypto/compare/9efb888..8a03816): 8a03816 2023-04-04 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#143) csslib (https://github.com/dart-lang/csslib/compare/d32bdd4..5836863): 5836863 2023-04-04 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#177) dartdoc (https://github.com/dart-lang/dartdoc/compare/9be04e0..1a7952b): 1a7952b1 2023-04-03 dependabot[bot] Bump ossf/scorecard-action from 2.1.2 to 2.1.3 (#3382) fixnum (https://github.com/dart-lang/fixnum/compare/f8379d9..92ec336): 92ec336 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#108) f14fd19 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#109) glob (https://github.com/dart-lang/glob/compare/f378dc8..eaa878b): eaa878b 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#73) c0c7e66 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#74) html (https://github.com/dart-lang/html/compare/08643e9..57b747d): 57b747d 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#209) 51c9910 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#210) http (https://github.com/dart-lang/http/compare/74f9d3d..ffb4438): ffb4438 2023-04-04 Brian Quinlan Fix maxRedirects documentation to mention ClientException rather than RedirectException (#907) ad0e1cf 2023-04-03 Bahaa Fathi Yousef Fix some spelling (#885) http_multi_server (https://github.com/dart-lang/http_multi_server/compare/7bd190c..e0b5d35): e0b5d35 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#53) 3bbaf22 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#52) http_parser (https://github.com/dart-lang/http_parser/compare/b3b283b..bbe37dd): bbe37dd 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#70) f0527a8 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#71) json_rpc_2 (https://github.com/dart-lang/json_rpc_2/compare/aea3bea..5da2705): 5da2705 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#94) d6ab373 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#95) logging (https://github.com/dart-lang/logging/compare/abef371..787030a): 787030a 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#133) be6a20e 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#134) matcher (https://github.com/dart-lang/matcher/compare/61f4347..cb6b68c): cb6b68c 2023-04-04 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#216) mime (https://github.com/dart-lang/mime/compare/1a51be0..2d8496d): 2d8496d 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#90) 3b39378 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#91) package_config (https://github.com/dart-lang/package_config/compare/74ac1cb..7e09db1): 7e09db1 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#132) 6dc4072 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#133) path (https://github.com/dart-lang/path/compare/cd37179..23e3319): 23e3319 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#140) pool (https://github.com/dart-lang/pool/compare/338bfb4..650e5d3): 650e5d3 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#66) pub_semver (https://github.com/dart-lang/pub_semver/compare/c0e6ea7..860e3d8): 860e3d8 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#82) 12eca92 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#83) source_maps (https://github.com/dart-lang/source_maps/compare/a112e98..0a4b030): 0a4b030 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#76) e753fea 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#75) source_span (https://github.com/dart-lang/source_span/compare/3951ba5..b739fbf): b739fbf 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#94) c6547c2 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#95) sse (https://github.com/dart-lang/sse/compare/8c3efdc..11e83a0): 11e83a0 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#79) stack_trace (https://github.com/dart-lang/stack_trace/compare/6ceb191..9c1b1c5): 9c1b1c5 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#128) 56a09db 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#129) stream_channel (https://github.com/dart-lang/stream_channel/compare/fe0f5e4..74646ea): 74646ea 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#88) term_glyph (https://github.com/dart-lang/term_glyph/compare/d275a8f..f6856e2): f6856e2 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#36) test (https://github.com/dart-lang/test/compare/a01b185..8ea4298): 8ea42987 2023-04-04 Jakub Vrána Make tests compatible with Strict CSP (#1987) 49f7e17a 2023-04-03 dependabot[bot] Bump ossf/scorecard-action from 2.1.2 to 2.1.3 (#1982) 1a4f76b2 2023-04-03 dependabot[bot] Bump github/codeql-action from 2.2.5 to 2.2.9 (#1985) test_descriptor (https://github.com/dart-lang/test_descriptor/compare/1d4a967..aa11162): aa11162 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#49) 226fe86 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#50) test_process (https://github.com/dart-lang/test_process/compare/f76d0b8..946bc27): 946bc27 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#40) 441f585 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#41) tools (https://github.com/dart-lang/tools/compare/d40ca93..0304fbb): 0304fbb 2023-04-04 Elias Yishak Add catcherror callback for `sendData` (#72) 6d1dedf 2023-04-04 Daco Harkes [cli_config] Pub badges (#71) 561dce2 2023-04-04 Daco Harkes [cli_config] Bump version (#68) d3909a4 2023-04-04 Daco Harkes Fix windows path resolving (#67) 77cf078 2023-04-03 Daco Harkes [cli_config] Fix optionalString validValues (#69) usage (https://github.com/dart-lang/usage/compare/399770f..0698711): 0698711 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#190) 2cdb5e3 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#189) watcher (https://github.com/dart-lang/watcher/compare/5968409..00aa79b): 00aa79b 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#140) 598038f 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#141) web_socket_channel (https://github.com/dart-lang/web_socket_channel/compare/e2fe7f6..40eb236): 40eb236 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#260) 1823444 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#261) webdev (https://github.com/dart-lang/webdev/compare/b139649..e887316): e887316c 2023-04-03 Elliott Brooks Prepare DWDS for version `19.0.0` release (#2068) 704d5086 2023-04-03 Elliott Brooks Fix typo (#2069) 2e6e1b63 2023-04-03 Anna Gringauze Fix getObject failure on record class. (#2063) yaml (https://github.com/dart-lang/yaml/compare/0f80b12..56dfaf4): 56dfaf4 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#140) d925d7e 2023-04-03 dependabot[bot] Bump actions/checkout from 3.3.0 to 3.5.0 (#141) yaml_edit (https://github.com/dart-lang/yaml_edit/compare/fbc5cb3..386fd33): 386fd33 2023-04-03 dependabot[bot] Bump dart-lang/setup-dart from 1.4.0 to 1.5.0 (#49) Change-Id: I986c83f657631813a32e360fbb90f42f7d43440a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/293280 Auto-Submit: Devon Carew <devoncarew@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This issue was originally filed by die...@gmail.com
Collection interface allows immutable implementations.
But List interface defines methods like add or remove. Including an immutable version of a sequence (with [], getRange, indexOf) could be useful for cases in which one need to represent a sequence of elements without allowing modifications.
The text was updated successfully, but these errors were encountered: