Version 2.10.0-138.0.dev

Merge commit '122f07c7bb1ae8e7076de09e1deab9f7fd7ab85a' into 'dev'
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
index cc05f18..d05d23a 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
@@ -800,7 +800,9 @@
     var element = parameter.enclosingElement;
     if (element is ConstructorElement) {
       if (Flutter.instance.isWidget(element.enclosingElement)) {
-        var defaultValue = getDefaultStringParameterValue(parameter);
+        // Don't bother with nullability. It won't affect default list values.
+        var defaultValue =
+            getDefaultStringParameterValue(parameter, withNullability: false);
         // TODO(devoncarew): Should we remove the check here? We would then
         // suggest values for param types like closures.
         if (defaultValue != null && defaultValue.text == '[]') {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart b/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart
index 8063ce5..0568dba 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart
@@ -15,6 +15,7 @@
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart' as protocol
     show Element, ElementKind;
+import 'package:meta/meta.dart';
 
 /// The name of the type `dynamic`;
 const DYNAMIC = 'dynamic';
@@ -169,7 +170,8 @@
 }
 
 /// Return a default argument value for the given [parameter].
-DefaultArgument getDefaultStringParameterValue(ParameterElement parameter) {
+DefaultArgument getDefaultStringParameterValue(ParameterElement parameter,
+    {@required bool withNullability}) {
   if (parameter != null) {
     var type = parameter.type;
     if (type is InterfaceType) {
@@ -182,7 +184,8 @@
       }
     } else if (type is FunctionType) {
       var params = type.parameters
-          .map((p) => '${getTypeString(p.type)}${p.name}')
+          .map((p) =>
+              '${getTypeString(p.type, withNullability: withNullability)}${p.name}')
           .join(', ');
       // TODO(devoncarew): Support having this method return text with newlines.
       var text = '($params) {  }';
@@ -209,11 +212,11 @@
   return content.substring(lineStartOffset, notWhitespaceOffset);
 }
 
-String getTypeString(DartType type) {
+String getTypeString(DartType type, {@required bool withNullability}) {
   if (type.isDynamic) {
     return '';
   } else {
-    return type.getDisplayString(withNullability: false) + ' ';
+    return type.getDisplayString(withNullability: withNullability) + ' ';
   }
 }
 
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart
index ee07bf4..40e8f6f 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart
@@ -78,7 +78,9 @@
           }
         }
       }
-      var defaultValue = getDefaultStringParameterValue(missingParameter);
+      var defaultValue = getDefaultStringParameterValue(missingParameter,
+          withNullability: libraryElement.isNonNullableByDefault &&
+              missingParameter.library.isNonNullableByDefault);
 
       await builder.addDartFileEdit(file, (builder) {
         builder.addInsertion(offset, (builder) {
diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart
index fb1e129..2eb4fa8 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart
@@ -250,6 +250,99 @@
 ''');
   }
 
+  Future<void> test_constructor_single_closure_nnbd() async {
+    createAnalysisOptionsFile(experiments: [EnableString.non_nullable]);
+    addMetaPackage();
+    addSource('/home/test/lib/a.dart', r'''
+import 'package:meta/meta.dart';
+
+typedef int Callback(int? a);
+
+class A {
+  A({@required Callback callback}) {}
+}
+''');
+    await resolveTestUnit('''
+import 'package:test/a.dart';
+
+main() {
+  A a = new A();
+  print(a);
+}
+''');
+    await assertHasFix('''
+import 'package:test/a.dart';
+
+main() {
+  A a = new A(callback: (int? a) {  });
+  print(a);
+}
+''');
+  }
+
+  Future<void> test_constructor_single_closure_nnbd_from_legacy() async {
+    createAnalysisOptionsFile(experiments: [EnableString.non_nullable]);
+    addMetaPackage();
+    addSource('/home/test/lib/a.dart', r'''
+// @dart = 2.8
+import 'package:meta/meta.dart';
+
+typedef int Callback(int a);
+
+class A {
+  A({@required Callback callback}) {}
+}
+''');
+    await resolveTestUnit('''
+import 'package:test/a.dart';
+
+main() {
+  A a = new A();
+  print(a);
+}
+''');
+    await assertHasFix('''
+import 'package:test/a.dart';
+
+main() {
+  A a = new A(callback: (int a) {  });
+  print(a);
+}
+''');
+  }
+
+  Future<void> test_constructor_single_closure_nnbd_into_legacy() async {
+    createAnalysisOptionsFile(experiments: [EnableString.non_nullable]);
+    addMetaPackage();
+    addSource('/home/test/lib/a.dart', r'''
+import 'package:meta/meta.dart';
+
+typedef int Callback(int? a);
+
+class A {
+  A({@required Callback callback}) {}
+}
+''');
+    await resolveTestUnit('''
+// @dart = 2.8
+import 'package:test/a.dart';
+
+main() {
+  A a = new A();
+  print(a);
+}
+''');
+    await assertHasFix('''
+// @dart = 2.8
+import 'package:test/a.dart';
+
+main() {
+  A a = new A(callback: (int a) {  });
+  print(a);
+}
+''');
+  }
+
   Future<void> test_constructor_single_list() async {
     addMetaPackage();
     addSource('/home/test/lib/a.dart', r'''
diff --git a/tests/language/variance/variance_downwards_inference_test.dart b/tests/language/variance/variance_downwards_inference_test.dart
index b6cd329..6e531b1 100644
--- a/tests/language/variance/variance_downwards_inference_test.dart
+++ b/tests/language/variance/variance_downwards_inference_test.dart
@@ -10,7 +10,7 @@
   final T _x;
   A(T x):_x = x;
   T get x => _x;
-  void set x(Object value) {}
+  void set x(Object? value) {}
 }
 
 class B<in T> {
@@ -22,7 +22,7 @@
   final T _x;
   C(T x, S y):_x = x;
   T get x => _x;
-  void set x(Object value) {}
+  void set x(Object? value) {}
   void set y(S _value) {}
 }
 
diff --git a/tools/VERSION b/tools/VERSION
index 52e320d..287371e 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 10
 PATCH 0
-PRERELEASE 137
+PRERELEASE 138
 PRERELEASE_PATCH 0
\ No newline at end of file