From 04b74f17c0873fdfdf258a1887295bb97647cf9d Mon Sep 17 00:00:00 2001 From: Sam Rawlins Date: Wed, 7 Sep 2022 10:52:41 -0400 Subject: [PATCH] Automated g4 rollback of changelist 471719348. *** Reason for rollback *** Rolling forward after fixes *** Original change description *** Automated g4 rollback of changelist 471650729. *** Reason for rollback *** Breaks GPay tap (pay.flutter.tap) https://fusion2.corp.google.com/ci;ids=1912127488/tap/pay.flutter.tap/activity/471652072/targets *** Original change description *** Include `required` keyword in functions used as default return values. *** *** PiperOrigin-RevId: 472723817 --- CHANGELOG.md | 1 + lib/src/builder.dart | 7 ++++++- test/builder/auto_mocks_test.dart | 19 ++++++++++++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ceb0d63c..bd0e2507 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Allow generating a mock class which includes overriding members with private types in their signature. Such members cannot be stubbed with mockito, and will only be generated when specified in MockSpec `unsupportedMembers`. +* Include `required` keyword in functions used as default return values. ## 5.3.0 diff --git a/lib/src/builder.dart b/lib/src/builder.dart index ce643083..a70d830c 100644 --- a/lib/src/builder.dart +++ b/lib/src/builder.dart @@ -1492,7 +1492,11 @@ class _MockClassInfo { superParameterType: parameter.type, defaultName: '__p$position'); b.optionalParameters.add(matchingParameter); position++; - } else if (parameter.isNamed) { + } else if (parameter.isOptionalNamed) { + final matchingParameter = + _matchingParameter(parameter, superParameterType: parameter.type); + b.optionalParameters.add(matchingParameter); + } else if (parameter.isRequiredNamed) { final matchingParameter = _matchingParameter(parameter, superParameterType: parameter.type); b.optionalParameters.add(matchingParameter); @@ -1595,6 +1599,7 @@ class _MockClassInfo { _typeReference(superParameterType, forceNullable: forceNullable); } if (parameter.isNamed) pBuilder.named = true; + if (parameter.isRequiredNamed) pBuilder.required = true; if (parameter.defaultValueCode != null) { try { pBuilder.defaultTo = _expressionFromDartObject( diff --git a/test/builder/auto_mocks_test.dart b/test/builder/auto_mocks_test.dart index cb2c0849..28e9cdfa 100644 --- a/test/builder/auto_mocks_test.dart +++ b/test/builder/auto_mocks_test.dart @@ -1524,7 +1524,7 @@ void main() { void m({required covariant int a}); } '''), - _containsAllOf('void m({num? a}) => super.noSuchMethod('), + _containsAllOf('void m({required num? a}) => super.noSuchMethod('), ); }); @@ -2455,6 +2455,23 @@ void main() { ); }); + test( + 'creates a dummy non-null function-typed return value, with required ' + 'named parameters', () async { + await expectSingleNonNullableOutput( + dedent(r''' + abstract class Foo { + void Function(Foo, {required bool b}) m(); + } + '''), + _containsAllOf(''' + returnValue: ( + _i2.Foo __p0, { + required bool b, + }) {},'''), + ); + }); + test( 'creates a dummy non-null function-typed return value, with non-core ' 'return type', () async {