resolveModuleMember method
DependencyConfig
resolveModuleMember(
- ClassElement moduleClazz,
- ExecutableElement executableElement
Resolves a DependencyConfig from the given module member ExecutableElement by reading its annotations and parameters.
The moduleClazz parameter is used to resolve the type of the module that contains the member.
Implementation
DependencyConfig resolveModuleMember(
ClassElement moduleClazz,
ExecutableElement executableElement,
) {
var moduleType = _typeResolver.resolveType(moduleClazz.thisType);
var initializerName = executableElement.displayName;
var isAbstract = false;
final returnType = executableElement.returnType;
throwIf(
returnType.element is! ClassElement,
'${returnType.nameWithoutSuffix} is not a class element',
element: returnType.element,
);
Element? clazz;
var type = returnType;
if (executableElement.isAbstract) {
clazz = returnType.element;
isAbstract = true;
throwIf(
executableElement.formalParameters.isNotEmpty,
'Abstract methods can not have injectable or factory parameters',
element: executableElement,
);
} else {
if (returnType.isDartAsyncFuture) {
final typeArg = returnType as ParameterizedType;
clazz = typeArg.typeArguments.first.element;
type = typeArg.typeArguments.first;
} else {
clazz = returnType.element;
}
}
_moduleConfig = ModuleConfig(
isAbstract: isAbstract,
isMethod: executableElement is MethodElement,
type: moduleType,
initializerName: initializerName,
);
_type = _typeResolver.resolveType(type);
return _resolveActualType(clazz as ClassElement, executableElement);
}