comparison dmd/module.c @ 875:330f999ade44

Merged DMD 1.038
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Tue, 06 Jan 2009 16:33:51 +0100
parents aa953cc960b6
children 369996c08420
comparison
equal deleted inserted replaced
874:2ddee23bd70e 875:330f999ade44
887 } while (deferred.dim < len || dprogress); // while making progress 887 } while (deferred.dim < len || dprogress); // while making progress
888 nested--; 888 nested--;
889 //printf("-Module::runDeferredSemantic('%s'), len = %d\n", toChars(), deferred.dim); 889 //printf("-Module::runDeferredSemantic('%s'), len = %d\n", toChars(), deferred.dim);
890 } 890 }
891 891
892 /************************************
893 * Recursively look at every module this module imports,
894 * return TRUE if it imports m.
895 * Can be used to detect circular imports.
896 */
897
898 int Module::imports(Module *m)
899 {
900 //printf("%s Module::imports(%s)\n", toChars(), m->toChars());
901 int aimports_dim = aimports.dim;
902 #if 0
903 for (int i = 0; i < aimports.dim; i++)
904 { Module *mi = (Module *)aimports.data[i];
905 printf("\t[%d] %s\n", i, mi->toChars());
906 }
907 #endif
908 for (int i = 0; i < aimports.dim; i++)
909 { Module *mi = (Module *)aimports.data[i];
910 if (mi == m)
911 return TRUE;
912 if (!mi->insearch)
913 {
914 mi->insearch = 1;
915 int r = mi->imports(m);
916 mi->insearch = 0;
917 if (r)
918 return r;
919 }
920 }
921 return FALSE;
922 }
923
892 /* =========================== ModuleDeclaration ===================== */ 924 /* =========================== ModuleDeclaration ===================== */
893 925
894 ModuleDeclaration::ModuleDeclaration(Array *packages, Identifier *id) 926 ModuleDeclaration::ModuleDeclaration(Array *packages, Identifier *id)
895 { 927 {
896 this->packages = packages; 928 this->packages = packages;