Version 2.18.0-271.1.beta

Merge '2.18.0-271.0.dev' into beta
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cfad1f4..eaf11a0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,61 +1,30 @@
 ## 2.19.0
 
-#### Dart command line
-
-- **Breaking change** [#46100](https://github.com/dart-lang/sdk/issues/46100):
-  The standalone `dartanalyzer` tool has been removed as previously
-  announced. `dartanalyzer` is replaced by the `dart analyze` command.
-
 ### Language
 
-- **Breaking Change** [#48167](https://github.com/dart-lang/sdk/issues/48167):
-  Mixin of classes that don't extend `Object` is no longer supported:
-  ```dart
-  class Base {}
-  class Mixin extends Base {}
-  class C extends Base with Mixin {}
-  ```
-  This should instead be written using a mixin declaration of `Mixin`:
-  ```dart
-  class Base {}
-  mixin Mixin on Base {}
-  class C extends Base with Mixin {}
-  ```
-  This feature has not been supported in most compilation targets for some
-  time but is now completely removed.
-
 ### Libraries
 
-#### `dart:async`
+### `dart:developer`
 
-- The `Stream.fromIterable` stream can now be listened to more than once.
+- Deprecates `UserTag.MAX_USER_TAGS` in favor of `UserTag.maxUserTags`.
 
-### `dart:collection`
+### Tools
 
-- Deprecates `BidirectionalIterator`.
+#### Linter
 
-### Dart VM
+Updated the Linter to `1.26.0`, which includes changes that
 
-Implementation of `async`/`async*`/`sync*` is revamped in Dart VM,
-both in JIT and AOT modes. This also affects Flutter except Flutter Web.
-
-Besides smaller code size and better performance of async methods,
-the new implementation carries a few subtle changes in behavior:
-
-- If `async` method returns before reaching the first `await`, it now returns a completed Future.
-  Previously `async` methods completed resulting Future in separate microtasks.
-
-- Stack traces no longer have duplicate entries for `async` methods.
-
-- New implementation now correctly throws an error if `null` occurs as
-  an argument of a logical expression (`&&` and `||`) which also contains
-  an `await`.
-
-- New implementation avoids unnecessary extending the liveness of local
-  variables in `async`/`async*`/`sync*` methods, which means that unused
-  objects stored in local variables in such methods might be garbage
-  collected earlier than they were before
-  (see issue [#36983](https://github.com/dart-lang/sdk/issues/36983) for details).
+- add new lint: `combinators_ordering`.
+- fix `use_colored_box` and `use_decorated_box` to not over-report on containers without
+  a child.
+- fix `unnecessary_parenthesis` false positives on a map-or-set literal at the start of
+  an expression statement.
+- fix `prefer_final_locals` false positives reporting on fields.
+- fix `unnecessary_overrides` to allow overrides on `@Protected`members.
+- fix `avoid_multiple_declarations_per_line` false positives in `for` statements.
+- fix `prefer_final_locals` false positives on declaration lists with at least one
+  non-final variable.
+- fix`use_build_context_synchronously` to handle `await`s in `if` conditions.
 
 ## 2.18.0
 
@@ -106,8 +75,32 @@
    }
    ```
 
+- **Breaking Change** [#48167](https://github.com/dart-lang/sdk/issues/48167):
+  Mixin of classes that don't extend `Object` is no longer supported:
+  ```dart
+  class Base {}
+  class Mixin extends Base {}
+  class C extends Base with Mixin {}
+  ```
+  This should instead be written using a mixin declaration of `Mixin`:
+  ```dart
+  class Base {}
+  mixin Mixin on Base {}
+  class C extends Base with Mixin {}
+  ```
+  This feature has not been supported in most compilation targets for some
+  time but is now completely removed.
+
 ### Core libraries
 
+#### `dart:async`
+
+- The `Stream.fromIterable` stream can now be listened to more than once.
+
+### `dart:collection`
+
+- Deprecates `BidirectionalIterator`.
+
 #### `dart:html`
 
 - Add `connectionState` attribute and `connectionstatechange` listener to
@@ -177,6 +170,29 @@
 - Allow omitting the `unencodedPath` positional argument to `Uri.http` and
   `Uri.https` to default to an empty path.
 
+### Dart VM
+
+Implementation of `async`/`async*`/`sync*` is revamped in Dart VM,
+both in JIT and AOT modes. This also affects Flutter except Flutter Web.
+
+Besides smaller code size and better performance of async methods,
+the new implementation carries a few subtle changes in behavior:
+
+- If `async` method returns before reaching the first `await`, it now returns a completed Future.
+  Previously `async` methods completed resulting Future in separate microtasks.
+
+- Stack traces no longer have duplicate entries for `async` methods.
+
+- New implementation now correctly throws an error if `null` occurs as
+  an argument of a logical expression (`&&` and `||`) which also contains
+  an `await`.
+
+- New implementation avoids unnecessary extending the liveness of local
+  variables in `async`/`async*`/`sync*` methods, which means that unused
+  objects stored in local variables in such methods might be garbage
+  collected earlier than they were before
+  (see issue [#36983](https://github.com/dart-lang/sdk/issues/36983) for details).
+
 ### Tools
 
 #### Dart command line
@@ -186,6 +202,10 @@
   announced. `dart2js` is replaced by the `dart compile js` command, `dartdevc`
   is no longer exposed as a command-line tool.
 
+- **Breaking change** [#46100](https://github.com/dart-lang/sdk/issues/46100):
+  The standalone `dartanalyzer` tool has been removed as previously
+  announced. `dartanalyzer` is replaced by the `dart analyze` command.
+
 #### Linter
 
 Updated the Linter to `1.25.0`, which includes changes that
@@ -225,6 +245,18 @@
 * `dart pub outdated` now shows which of your dependencies are discontinued.
 * `dart pub publish` will now list all the files it is about to publish.
 
+## 2.17.6 - 2022-07-13
+
+This is a patch release that:
+
+- Improves code completion for Flutter (issue [#49054][]).
+- Fixes a crash on ARM (issue [#106510][]).
+- Fixes a compiler crash with Finalizable parameters (issue [#49402][]).
+
+[#49054]: https://github.com/dart-lang/sdk/issues/49054
+[#106510]: https://github.com/flutter/flutter/issues/106510
+[#49402]: https://github.com/dart-lang/sdk/issues/49402
+
 ## 2.17.5 - 2022-06-22
 
 This is a patch release that fixes:
@@ -396,6 +428,139 @@
 [named args everywhere]: https://github.com/dart-lang/language/blob/master/accepted/future-releases/named-arguments-anywhere/feature-specification.md
 [test package]: https://pub.dev/packages/test
 
+### Language
+
+The following features are new in the Dart 2.17 [language version][]. To use
+them, you must set the lower bound on the SDK constraint for your package to
+2.17 or greater (`sdk: '>=2.17.0 <3.0.0'`).
+
+[language version]: https://dart.dev/guides/language/evolution
+
+-   **[Enhanced enums with members][]**: Enum declarations can now define
+    members including fields, constructors, methods, getters, etc. For example:
+
+    ```dart
+    enum Water {
+      frozen(32),
+      lukewarm(100),
+      boiling(212);
+
+      final int tempInFahrenheit;
+      const Water(this.tempInFahrenheit);
+
+      @override
+      String toString() => "The $name water is $tempInFahrenheit F.";
+    }
+    ```
+
+    Constructors must be `const` since enum values are always constants. If the
+    constructor takes arguments, they are passed when the enum value is
+    declared.
+
+    The above enum can be used like so:
+
+    ```dart
+    void main() {
+      print(Water.frozen); // prints "The frozen water is 32 F."
+    }
+    ```
+
+[enhanced enums with members]: https://github.com/dart-lang/language/blob/master/accepted/future-releases/enhanced-enums/feature-specification.md
+
+-   **[Super parameters][]**: When extending a class whose constructor takes
+    parameters, the subclass constructor needs to provide arguments for them.
+    Often, these are passed as parameters to the subclass constructor, which
+    then forwards them to the superclass constructor. This is verbose because
+    the subclass constructor must list the name and type of each parameter in
+    its parameter list, and then explicitly forward each one as an argument to
+    the superclass constructor.
+
+    [@roy-sianez][] suggested [allowing `super.`][super dot] before a subclass
+    constructor parameter to implicitly forward it to the corresponding
+    superclass constructor parameter. Applying this feature to Flutter
+    eliminated [nearly 2,000 lines of code][flutter super]. For example, before:
+
+    ```dart
+    class CupertinoPage<T> extends Page<T> {
+      const CupertinoPage({
+        required this.child,
+        this.maintainState = true,
+        this.title,
+        this.fullscreenDialog = false,
+        LocalKey? key,
+        String? name,
+        Object? arguments,
+        String? restorationId,
+      }) : super(
+            key: key,
+            name: name,
+            arguments: arguments,
+            restorationId: restorationId,
+          );
+
+      // ...
+    }
+    ```
+
+    And using super parameters:
+
+    ```dart
+    class CupertinoPage<T> extends Page<T> {
+      const CupertinoPage({
+        required this.child,
+        this.maintainState = true,
+        this.title,
+        this.fullscreenDialog = false,
+        super.key,
+        super.name,
+        super.arguments,
+        super.restorationId,
+      });
+
+      // ...
+    }
+    ```
+
+    From our analysis, over 90% of explicit superclass constructor calls can be
+    completely eliminated, using `super.` parameters instead.
+
+[super parameters]: https://github.com/dart-lang/language/blob/master/working/1855%20-%20super%20parameters/proposal.md
+[@roy-sianez]: https://github.com/roy-sianez
+[super dot]: https://github.com/dart-lang/language/issues/1855
+[flutter super]: https://github.com/flutter/flutter/pull/100905/files
+
+-   **[Named args everywhere][]**: In a function call, Dart requires positional
+    arguments to appear before named arguments. This can be frustrating for
+    arguments like collection literals and function expressions that look best
+    as the last argument in the argument list but are positional, like the
+    `test()` function in the [test package][]:
+
+    ```dart
+    main() {
+      test('A test description', () {
+        // Very long function body here...
+      }, skip: true);
+    }
+    ```
+
+    It would be better if the `skip` argument appeared at the top of the call
+    to `test()` so that it wasn't easily overlooked, but since it's named and
+    the test body argument is positional, `skip` must be placed at the end.
+
+    Dart 2.17 removes this restriction. Named arguments can be freely
+    interleaved with positional arguments, allowing code like:
+
+    ```dart
+    main() {
+      test(skip: true, 'A test description', () {
+        // Very long function body here...
+      });
+    }
+    ```
+
+[named args everywhere]: https://github.com/dart-lang/language/blob/master/accepted/future-releases/named-arguments-anywhere/feature-specification.md
+[test package]: https://pub.dev/packages/test
+
 ### Core libraries
 
 #### `dart:core`
@@ -607,6 +772,11 @@
   in 2018, as it doesn't work with any Dart 2.x release.
 - Add optional `sourcePort` parameter to `Socket.connect`, `Socket.startConnect`, `RawSocket.connect` and `RawSocket.startConnect`
 
+- **Breaking Change** [#45410](https://github.com/dart-lang/sdk/issues/45410):
+  `HttpClient` no longer transmits some headers (i.e. `authorization`,
+  `www-authenticate`, `cookie`, `cookie2`) when processing redirects to
+  a different domain.
+
 #### `dart:isolate`
 
 - **Breaking change** [#47769](https://github.com/dart-lang/sdk/issues/47769):
diff --git a/tools/VERSION b/tools/VERSION
index 31ffcb9..b5cd238 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -23,9 +23,9 @@
 #  * Making cherry-picks to stable channel
 #     - increase PATCH by 1
 #
-CHANNEL dev
+CHANNEL beta
 MAJOR 2
 MINOR 18
 PATCH 0
 PRERELEASE 271
-PRERELEASE_PATCH 0
\ No newline at end of file
+PRERELEASE_PATCH 1
\ No newline at end of file