resolveModuleMember method
DependencyConfig
resolveModuleMember(
- ClassElement2 moduleClazz,
- ExecutableElement2 executableElement
Implementation
DependencyConfig resolveModuleMember(
ClassElement2 moduleClazz,
ExecutableElement2 executableElement,
) {
var moduleType = _typeResolver.resolveType(moduleClazz.thisType);
var initializerName = executableElement.displayName;
var isAbstract = false;
final returnType = executableElement.returnType;
throwIf(
returnType.element3 is! ClassElement2,
'${returnType.nameWithoutSuffix} is not a class element',
element: returnType.element3,
);
Element2? clazz;
var type = returnType;
if (executableElement.isAbstract) {
clazz = returnType.element3;
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.element3;
type = typeArg.typeArguments.first;
} else {
clazz = returnType.element3;
}
}
_moduleConfig = ModuleConfig(
isAbstract: isAbstract,
isMethod: executableElement is MethodElement2,
type: moduleType,
initializerName: initializerName,
);
_type = _typeResolver.resolveType(type);
return _resolveActualType(clazz as ClassElement2, executableElement);
}