in lib/src/builder.dart [598:629]
void _checkMethodsToStubAreValid(_MockTarget mockTarget) {
final classElement = mockTarget.classElement;
final className = classElement.name;
final substitution = Substitution.fromInterfaceType(mockTarget.classType);
final relevantMembers = _inheritanceManager
.getInterface(classElement)
.map
.values
.where((m) => !m.isPrivate && !m.isStatic)
.map((member) => ExecutableMember.from2(member, substitution));
final unstubbableErrorMessages = relevantMembers.expand((member) {
if (_entryLib.typeSystem._returnTypeIsNonNullable(member) ||
_entryLib.typeSystem._hasNonNullableParameter(member) ||
_needsOverrideForVoidStub(member)) {
return _checkFunction(member.type, member,
hasDummyGenerator:
mockTarget.fallbackGenerators.containsKey(member.name));
} else {
// Mockito is not going to override this method, so the types do not
// need to be checked.
return [];
}
}).toList();
if (unstubbableErrorMessages.isNotEmpty) {
final joinedMessages =
unstubbableErrorMessages.map((m) => ' $m').join('\n');
throw InvalidMockitoAnnotationException(
'Mockito cannot generate a valid mock class which implements '
"'$className' for the following reasons:\n$joinedMessages");
}
}