Explicitly declare a Future<void> when using Future.value
The inference_failure_on_instance_creation error will trigger on code like
```
returnValueForMissingStub: Future.value()
```
because, even though no value has been given to `value()`, that does not
affect the Future's type (it still defaults to `void`). Explicitly using
`Future<void>.value()` satisfies the check.
PiperOrigin-RevId: 382770034
diff --git a/lib/src/builder.dart b/lib/src/builder.dart
index fea64b0..0b23589 100644
--- a/lib/src/builder.dart
+++ b/lib/src/builder.dart
@@ -1007,7 +1007,8 @@
if (method.returnType.isVoid) {
returnValueForMissingStub = refer('null');
} else if (method.returnType.isFutureOfVoid) {
- returnValueForMissingStub = _futureReference().property('value').call([]);
+ returnValueForMissingStub =
+ _futureReference(refer('void')).property('value').call([]);
}
final fallbackGenerator = fallbackGenerators[method.name];
final namedArgs = {
diff --git a/test/builder/auto_mocks_test.dart b/test/builder/auto_mocks_test.dart
index 4b132da..a1aaa60 100644
--- a/test/builder/auto_mocks_test.dart
+++ b/test/builder/auto_mocks_test.dart
@@ -526,7 +526,7 @@
_containsAllOf(dedent2('''
_i3.Future<void> m() => (super.noSuchMethod(Invocation.method(#m, []),
returnValue: Future<void>.value(),
- returnValueForMissingStub: Future.value()) as _i3.Future<void>);
+ returnValueForMissingStub: Future<void>.value()) as _i3.Future<void>);
''')),
);
});