Hash symeTypeCode(Syme syme) { Hash h = 0; h = symeHash(syme); if (h) return h; tfHashDEBUG(dbOut, "Hash: %s %pSyme %pTForm\n", symeString(syme), syme, symeType(syme)); if (symeIsExport(syme) || symeIsParam(syme) || symeIsSelf(syme)) { h = tfHash(symeType(syme)); symeHashArg(h, (Hash) symeKind(syme)); symeHashArg(h, symeDefLevel(syme)->hash); } else if (symeIsImport(syme)) { h = tfHash(symeType(syme)); symeHashArg(h, tfHash(symeExporter(syme))); } else { h = tfHash(symeType(syme)); symeHashArg(h, symeDefLevel(syme)->hash); } tfHashDEBUG(dbOut, "Hash: %s %pSyme = %d\n", symeString(syme), syme, h); return symeSetHash(syme, h); }
/* Return true if a leaf of sefo has a symbol meaning * which is a SYME_Param. */ local Bool otSefoIsParameterized(Sefo sefo) { if (abIsLeaf(sefo)) { Syme syme = abSyme(sefo); assert(syme); if (symeIsParam(syme)) return true; } else { Length i; for (i = 0; i < abArgc(sefo); i += 1) if (otSefoIsParameterized(abArgv(sefo)[i])) return true; } return false; }