Consider required modules when checking for layout definitions in modules

Fixes: #11156.
This commit is contained in:
Juergen Spitzmueller 2018-05-24 17:38:10 +02:00
parent a3868e40a4
commit 8b4c76fb24

View File

@ -386,16 +386,28 @@ bool checkModule(string const & name, bool command)
add = true;
}
if (add) {
FileName layout_file = libFileSearch("layouts", module, "module");
vector<string> v;
LayoutModuleList mods;
// addModule is necessary in order to catch required modules
// as well (see #11156)
if (!addModule(module, baseClass, mods, v))
return false;
for (auto const & mod : mods) {
if (!used_modules.moduleCanBeAdded(mod, &baseClass))
return false;
FileName layout_file = libFileSearch("layouts", mod, "module");
if (textclass.read(layout_file, TextClass::MODULE)) {
used_modules.push_back(module);
used_modules.push_back(mod);
// speed up further searches:
// the module does not need to be checked anymore.
ModuleMap::iterator const it = modules.find(mod);
if (it != modules.end())
modules.erase(it);
return true;
}
}
}
}
failed[command].insert(name);
return false;
}