@@ -48,8 +48,10 @@ void language_filest::show_parse(std::ostream &out)
4848 file.second .language ->show_parse (out);
4949}
5050
51- bool language_filest::parse ()
51+ bool language_filest::parse (message_handlert &message_handler )
5252{
53+ messaget log (message_handler);
54+
5355 for (auto &file : file_map)
5456 {
5557 // open file
@@ -58,7 +60,7 @@ bool language_filest::parse()
5860
5961 if (!infile)
6062 {
61- error () << " Failed to open " << file.first << eom;
63+ log. error () << " Failed to open " << file.first << messaget:: eom;
6264 return true ;
6365 }
6466
@@ -68,7 +70,7 @@ bool language_filest::parse()
6870
6971 if (language.parse (infile, file.first ))
7072 {
71- error () << " Parsing of " << file.first << " failed" << eom;
73+ log. error () << " Parsing of " << file.first << " failed" << messaget:: eom;
7274 return true ;
7375 }
7476
@@ -82,7 +84,8 @@ bool language_filest::parse()
8284
8385bool language_filest::typecheck (
8486 symbol_table_baset &symbol_table,
85- const bool keep_file_local)
87+ const bool keep_file_local,
88+ message_handlert &message_handler)
8689{
8790 // typecheck interfaces
8891
@@ -153,7 +156,8 @@ bool language_filest::typecheck(
153156
154157 for (auto &module : module_map)
155158 {
156- if (typecheck_module (symbol_table, module .second , keep_file_local))
159+ if (typecheck_module (
160+ symbol_table, module .second , keep_file_local, message_handler))
157161 return true ;
158162 }
159163
@@ -203,36 +207,43 @@ bool language_filest::interfaces(symbol_table_baset &symbol_table)
203207bool language_filest::typecheck_module (
204208 symbol_table_baset &symbol_table,
205209 const std::string &module ,
206- const bool keep_file_local)
210+ const bool keep_file_local,
211+ message_handlert &message_handler)
207212{
208213 // check module map
209214
210215 module_mapt::iterator it=module_map.find (module );
211216
212217 if (it==module_map.end ())
213218 {
214- error () << " found no file that provides module " << module << eom;
219+ messaget log (message_handler);
220+ log.error () << " found no file that provides module " << module
221+ << messaget::eom;
215222 return true ;
216223 }
217224
218- return typecheck_module (symbol_table, it->second , keep_file_local);
225+ return typecheck_module (
226+ symbol_table, it->second , keep_file_local, message_handler);
219227}
220228
221229bool language_filest::typecheck_module (
222230 symbol_table_baset &symbol_table,
223231 language_modulet &module ,
224- const bool keep_file_local)
232+ const bool keep_file_local,
233+ message_handlert &message_handler)
225234{
226235 // already typechecked?
227236
228237 if (module .type_checked )
229238 return false ;
230239
240+ messaget log (message_handler);
241+
231242 // already in progress?
232243
233244 if (module .in_progress )
234245 {
235- error () << " circular dependency in " << module .name << eom;
246+ log. error () << " circular dependency in " << module .name << messaget:: eom;
236247 return true ;
237248 }
238249
@@ -249,14 +260,15 @@ bool language_filest::typecheck_module(
249260 it!=dependency_set.end ();
250261 it++)
251262 {
252- module .in_progress = !typecheck_module (symbol_table, *it, keep_file_local);
263+ module .in_progress =
264+ !typecheck_module (symbol_table, *it, keep_file_local, message_handler);
253265 if (module .in_progress == false )
254266 return true ;
255267 }
256268
257269 // type check it
258270
259- status () << " Type-checking " << module .name << eom;
271+ log. status () << " Type-checking " << module .name << messaget:: eom;
260272
261273 if (module .file ->language ->can_keep_file_local ())
262274 {
0 commit comments