matchesParametersTypes method

bool matchesParametersTypes(
  1. ASTFunctionSignature parametersSignature,
  2. bool exactTypes
)

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;
}