Package* Package::loadPackage(const char *name, EmojicodeChar ns, const Token *errorToken) { Package *package = findPackage(name); if (package) { if (!package->finishedLoading()) { compilerError(errorToken, "Circular dependency detected: %s tried to load a package which intiatiated %s’s own loading.", name, name); } } else { char *path; asprintf(&path, packageDirectory "%s/header.emojic", name); package = new Package(name); if (strcmp("s", name) != 0) { package->loadPackage("s", globalNamespace, errorToken); } package->parse(path, errorToken); } package->loadInto(this, ns, errorToken); return package; }