function isSameType()

in lib/semantic.js [155:198]


function isSameType(expect, actual) {
  if(actual.type === 'basic' &&  actual.name === '$type') {
    return true;
  }

  if (expect.type === 'basic' && actual.type === 'basic') {
    return expect.name === actual.name;
  }

  if (expect.type === 'model' && actual.type === 'model') {
    return expect.name === actual.name && expect.moduleName === actual.moduleName;
  }

  if (expect.type === 'array' && actual.type === 'array') {
    return isSameType(expect.itemType, actual.itemType);
  }

  if (expect.type === 'map' && actual.type === 'map') {
    return isSameType(expect.keyType, actual.keyType) &&
      isSameType(expect.valueType, actual.valueType);
  }

  if (expect.type === 'iterator' && actual.type === 'iterator') {
    return isSameType(expect.valueType, actual.valueType);
  }

  if (expect.type === 'asyncIterator' && actual.type === 'asyncIterator') {
    return isSameType(expect.valueType, actual.valueType);
  }

  if (expect.type === 'module_instance' && actual.type === 'module_instance') {
    return expect.name === actual.name;
  }

  if (expect.type === 'enum' && actual.type === 'enum') {
    return expect.name === actual.name;
  }

  if (expect.type === 'typedef' && actual.type === 'typedef') {
    return expect.moduleName === actual.moduleName && expect.name === actual.name;
  }

  return false;
}