Skip to content
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

Closed
DartBot opened this issue Oct 26, 2011 · 22 comments
Closed

Immutable List/Map #236

DartBot opened this issue Oct 26, 2011 · 22 comments
Labels
area-core-library SDK core library issues (core, async, ...); use area-vm or area-web for platform specific libraries. closed-not-planned Closed as we don't intend to take action on the reported issue type-enhancement A request for a change that isn't a bug

Comments

@DartBot
Copy link

DartBot commented Oct 26, 2011

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.

@DartBot
Copy link
Author

DartBot commented Oct 26, 2011

This comment was originally written by diegof...@gmail.com


If there is an immutable list, String could implement that interface

@DartBot
Copy link
Author

DartBot commented Oct 26, 2011

This comment was originally written by drfibonacci@google.com


Removed Type-Defect label.
Added Type-Enhancement, Area-Library, Triaged labels.

@DartBot
Copy link
Author

DartBot commented Nov 26, 2011

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:
 https://groups.google.com/a/dartlang.org/group/misc/browse_thread/thread/4c94c9b11c21290c/e3b0b4ddbf96dd53?lnk=gst&q=read-only#e3b0b4ddbf96dd53
 https://groups.google.com/a/dartlang.org/group/misc/browse_thread/thread/92939371911ad67c/492db8eab1ec629b

Proposed class hierarchy:
 http://goo.gl/MlQkL

Prototype code:
 http://code.google.com/p/yegor-experimental/source/browse/#git%2Fdart%2Fcollections

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

@DartBot
Copy link
Author

DartBot commented Feb 20, 2012

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:

  • Set: every object is unique
  • List: the collection is in some kind of order
  • OrderedSet: both of the above

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.

@DartBot
Copy link
Author

DartBot commented Feb 20, 2012

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.

@sethladd
Copy link
Contributor

Issue #3700 has been merged into this issue.

@DartBot
Copy link
Author

DartBot commented Jun 18, 2012

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.

@kevmoo
Copy link
Member

kevmoo commented Oct 22, 2012

FYI: Sequence<T> in r13806 gets me half way there with List.

@sethladd
Copy link
Contributor

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.

@DartBot
Copy link
Author

DartBot commented Oct 5, 2013

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
collection.immutable.Map -- is immutable, extends collections.Map
collection.mutable.Map -- is mutable, extends collections.Map

Here's an overview of what the Scala people have built; it's amazingly well designed IMO:
http://docs.scala-lang.org/overviews/collections/overview.html

@floitschG
Copy link
Contributor

Agreed that the Scala hierarchy is good.
In Dart we decided to keep the number of classes relatively small. This, of course, comes with some limitations. It's the same trade-off as between sound type-system and unsound (or optional) type-system.

@sethladd
Copy link
Contributor

sethladd commented Oct 6, 2013

The Quiver library might be a good place to try immutable collection classes. https://github.com/google/quiver-dart Pull Requests welcome.

@sethladd
Copy link
Contributor

sethladd commented Oct 6, 2013

cc @justinfagnani.

@kevmoo
Copy link
Member

kevmoo commented Oct 7, 2013

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.

@DartBot
Copy link
Author

DartBot commented Oct 7, 2013

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 :)

@DartBot
Copy link
Author

DartBot commented Nov 11, 2013

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.

@kevmoo
Copy link
Member

kevmoo commented Feb 14, 2014

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.

@DartBot
Copy link
Author

DartBot commented Aug 3, 2014

This comment was originally written by @tkrotoff


When I want an immutable variable, I do:

final i = 10;
i = 11; // Error

If I want an immutable list, I would like to simply write:

final names = ['Anna', 'Nicolas'];
names.add('Thomas'); // Should give an error: cannot change length
names[1] = 'Thomas'; // Should give an error: cannot change content

@DartBot DartBot added Type-Enhancement area-core-library SDK core library issues (core, async, ...); use area-vm or area-web for platform specific libraries. closed-not-planned Closed as we don't intend to take action on the reported issue labels Aug 3, 2014
@davidmorgan
Copy link
Contributor

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.

@kevmoo kevmoo added type-enhancement A request for a change that isn't a bug and removed type-enhancement labels Mar 1, 2016
nex3 pushed a commit that referenced this issue Aug 31, 2016
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 .
dart-bot pushed a commit that referenced this issue Jun 12, 2019
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>
@oetiker
Copy link

oetiker commented Jun 30, 2019

Note the comment in cd1be9d07df32413024fe5c4ae9c5c6017c2f2c8 regarding this issue is wrong ... it should NOT be closed. @athomas

@athomas
Copy link
Member

athomas commented Jul 2, 2019

@oetiker Thanks, we will remove the '#' signs from those messages in the future to avoid this from happening again.

@athomas athomas reopened this Jul 2, 2019
@lrhn
Copy link
Member

lrhn commented Jul 2, 2019

This change is not planned, and not likely to happen in the current Dart platform libraries.

Having multiple versions of List, say Sequence and List where the former is read-only and the latter is mutable, means that users need to decide which one to use for every occurrence of the type. Even if we don't actually make any objects that implement only Sequence, the API complexity still increases. We might want to change old code to use Sequence, but we can only do that if we already always return unmodifiable lists. We can't change a parameter of an instance method to Sequence because then it's a breaking change for an implementation of that interface to require a List. Migration of old code will not be pleasant, and likely not satisfactory in the end.
Also, it is not enough. We may also want a type like Array which is a mutable fixed length list. Modifiability of lists is not an either-or concern, we have degrees between immutable and growable lists. This ups the complexity cost again.

Should Sequence be a subtype of Iterable, or should it just have length and operator[]? In the latter case, String is a Sequence<String>, even if it is not an Iterable at all. A small marker-interface which represents the ability to do fast index lookup using integer indices, or a proper super-class of List with all the non-mutating non-Iterable members (operator[], operator+, asMap(), getRange, indexOf, lastIndexOf, indexWhere, lastIndexWhere, reversed, sublist - and of these, operator+, reversed and sublist would now have to return a Sequence instead).

All in all, the original arguments for having only one List interface still stands: The added complexity of having multiple types does not pay for itself. Users having to worry about the kind of list that they accept and/or provide is a mental cost that is unnecessary in the majority of cases. And, arguably, the unmodifiable list case exists already: Iterable.

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 Sequence because that'll be a static error, the Sequence has no add method at all. And without implicit downcast, this subtyping won't be as error-prone by itself.

For now this issue can be closed.

@lrhn lrhn closed this as completed Jul 2, 2019
copybara-service bot pushed a commit that referenced this issue Jun 2, 2022
…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>
copybara-service bot pushed a commit that referenced this issue Feb 20, 2023
…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>
copybara-service bot pushed a commit that referenced this issue Apr 4, 2023
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-core-library SDK core library issues (core, async, ...); use area-vm or area-web for platform specific libraries. closed-not-planned Closed as we don't intend to take action on the reported issue type-enhancement A request for a change that isn't a bug
Projects
None yet
Development

No branches or pull requests

8 participants