matchesParametersTypes method
Returns true if parametersSignature
matches this parameters declaration.
exactTypes
if true the types should be exact, and not only acceptable.
Implementation
bool matchesParametersTypes(
ASTFunctionSignature parametersSignature, bool exactTypes) {
var parametersSize = size;
var paramsSignSize = parametersSignature.size;
if (paramsSignSize == 0 && parametersSize == 0) return true;
if (paramsSignSize > parametersSize) return false;
var paramsSignPositionalTypes = parametersSignature.positionalTypes;
var i = 0;
if (paramsSignPositionalTypes != null) {
var positionalSize = paramsSignPositionalTypes.length;
for (; i < positionalSize; ++i) {
var signParamType = paramsSignPositionalTypes[i];
if (signParamType == null) continue;
var param = getParameterByIndex(i);
if (!parameterAcceptsType(param, signParamType, exactTypes)) {
return false;
}
}
}
var namedTypes = parametersSignature.namedTypes;
if (namedTypes != null) {
for (var entry in namedTypes.entries) {
var singParamName = entry.key;
var signParamType = entry.value;
if (signParamType == null) continue;
var param = getParameterByName(singParamName);
if (!parameterAcceptsType(param, signParamType, exactTypes)) {
return false;
}
}
}
return true;
}