19 language(rhs.language==nullptr?nullptr:rhs.language->new_language()),
20 filename(rhs.filename)
44 language->convert_lazy_method(
id, symbol_table);
50 file.second.language->show_parse(out);
59 std::ifstream infile(
file.first);
73 error() <<
"Parsing of " <<
file.first <<
" failed" <<
eom;
79 file.second.get_modules();
87 const bool keep_file_local)
93 if(
file.second.language->interfaces(symbol_table))
99 unsigned collision_counter=0;
106 for(language_filet::modulest::const_iterator
107 mo_it=modules.begin();
108 mo_it!=modules.end();
112 std::string module_name=*mo_it;
122 module.
name=module_name;
124 std::pair<std::string, language_modulet>(module.
name, module));
132 if(
file.second.modules.empty())
134 if(
file.second.language->can_keep_file_local())
136 if(
file.second.language->typecheck(symbol_table,
"", keep_file_local))
141 if(
file.second.language->typecheck(symbol_table,
""))
147 std::unordered_set<irep_idt> lazy_method_ids;
148 file.second.language->methods_provided(lazy_method_ids);
149 for(
const auto &
id : lazy_method_ids)
173 if(
file.second.language->generate_support_functions(symbol_table))
187 if(
file.second.language->final(symbol_table))
199 if(
file.second.language->interfaces(symbol_table))
208 const std::string &module,
209 const bool keep_file_local)
213 module_mapt::iterator it=
module_map.find(module);
217 error() <<
"found no file that provides module " << module <<
eom;
227 const bool keep_file_local)
238 error() <<
"circular dependency in " << module.
name <<
eom;
246 std::set<std::string> dependency_set;
250 for(std::set<std::string>::const_iterator it=
251 dependency_set.begin();
252 it!=dependency_set.end();
267 symbol_table, module.
name, keep_file_local);