1.27.0 (#3576)

* 1.27.0

* Insert reasoning for `avoid_function_literals_in_foreach_calls` lint (#3545)

* Update avoid_function_literals_in_foreach_calls.dart

* Second attempt

* Add a the to make for betterer english

* convert unnecessary `.from`s to `.of`s (#3577)

* deflake `avoid_redundant_argument_values`

* ++

Co-authored-by: Brett Morgan <brett.morgan@gmail.com>
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b6f5d83..80a6e7c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,20 @@
+# 1.27.0
+
+- fix `avoid_redundant_argument_values` when referencing required 
+  parameters in legacy libraries
+- performance improvements for `use_late_for_private_fields_and_variables`
+- new lint: `use_string_in_part_of_directives`
+- fixed `use_super_parameters` false positive with repeated super
+  parameter references
+- updated `use_late_for_private_fields_and_variables` to handle enums
+- fixed `prefer_contains` false positive when start index is non-zero
+- improved `noop_primitive_operations` to catch `.toString()`
+  in string interpolations
+- updated `public_member_api_docs` to report diagnostics on extension
+  names (instead of bodies)
+- miscellaneous documentation improvements
+- (internal): `DartTypeUtilities` refactoring
+
 # 1.26.0
 
 - new lint: `combinators_ordering`
diff --git a/lib/src/rules/avoid_redundant_argument_values.dart b/lib/src/rules/avoid_redundant_argument_values.dart
index b771336..584268d 100644
--- a/lib/src/rules/avoid_redundant_argument_values.dart
+++ b/lib/src/rules/avoid_redundant_argument_values.dart
@@ -71,7 +71,10 @@
     for (var i = arguments.length - 1; i >= 0; --i) {
       var arg = arguments[i];
       var param = arg.staticParameterElement;
-      if (param == null || param.hasRequired || !param.isOptional) {
+      if (param == null ||
+          param.declaration.isRequired ||
+          param.hasRequired ||
+          !param.isOptional) {
         continue;
       }
       var value = param.computeConstantValue();
diff --git a/lib/src/version.dart b/lib/src/version.dart
index 2a919c3..766a291 100644
--- a/lib/src/version.dart
+++ b/lib/src/version.dart
@@ -3,4 +3,4 @@
 // BSD-style license that can be found in the LICENSE file.
 
 /// Package version.  Synchronized w/ pubspec.yaml.
-const String version = '1.26.0';
+const String version = '1.27.0';
diff --git a/pubspec.yaml b/pubspec.yaml
index de0fb2e..01f615d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: linter
-version: 1.26.0
+version: 1.27.0
 
 description: >-
   The implementation of the lint rules supported by the analyzer framework.
diff --git a/test/rules/avoid_redundant_argument_values_test.dart b/test/rules/avoid_redundant_argument_values_test.dart
index a33c218..ad2954f 100644
--- a/test/rules/avoid_redundant_argument_values_test.dart
+++ b/test/rules/avoid_redundant_argument_values_test.dart
@@ -51,6 +51,26 @@
 ''');
   }
 
+  /// https://github.com/dart-lang/sdk/issues/49596
+  test_legacyRequired() async {
+    var a = newFile('$testPackageLibPath/a.dart', r'''
+class Foo {
+  int? foo;
+  Foo({required this.foo});
+}
+''');
+    await resolveFile(a.path);
+
+    await assertNoDiagnostics(r'''
+// @dart = 2.9
+import 'a.dart';
+
+void f() {
+  Foo(foo: null);
+}
+''');
+  }
+
   test_requiredNullable() async {
     await assertNoDiagnostics(r'''
 void f({required int? x}) { }