10
10
11
11
#include < fstream>
12
12
13
+ #include < util/message.h>
13
14
#include < util/object_factory_parameters.h>
14
15
15
16
#include " language.h"
@@ -45,14 +46,16 @@ void language_filet::convert_lazy_method(
45
46
language->convert_lazy_method (id, symbol_table, message_handler);
46
47
}
47
48
48
- void language_filest::show_parse (std::ostream &out)
49
+ void language_filest::show_parse (std::ostream &out, message_handlert &message_handler )
49
50
{
50
51
for (const auto &file : file_map)
51
- file.second .language ->show_parse (out, get_message_handler () );
52
+ file.second .language ->show_parse (out, message_handler );
52
53
}
53
54
54
- bool language_filest::parse ()
55
+ bool language_filest::parse (message_handlert &message_handler )
55
56
{
57
+ messaget log (message_handler);
58
+
56
59
for (auto &file : file_map)
57
60
{
58
61
// open file
@@ -61,17 +64,17 @@ bool language_filest::parse()
61
64
62
65
if (!infile)
63
66
{
64
- error () << " Failed to open " << file.first << eom;
67
+ log. error () << " Failed to open " << file.first << messaget:: eom;
65
68
return true ;
66
69
}
67
70
68
71
// parse it
69
72
70
73
languaget &language=*(file.second .language );
71
74
72
- if (language.parse (infile, file.first , get_message_handler () ))
75
+ if (language.parse (infile, file.first , message_handler ))
73
76
{
74
- error () << " Parsing of " << file.first << " failed" << eom;
77
+ log. error () << " Parsing of " << file.first << " failed" << messaget:: eom;
75
78
return true ;
76
79
}
77
80
@@ -85,13 +88,17 @@ bool language_filest::parse()
85
88
86
89
bool language_filest::typecheck (
87
90
symbol_tablet &symbol_table,
91
+ <<<<<<< HEAD
88
92
const bool keep_file_local)
93
+ =======
94
+ message_handlert &message_handler)
95
+ >>>>>>> language_filest is not a messaget
89
96
{
90
97
// typecheck interfaces
91
98
92
99
for (auto &file : file_map)
93
100
{
94
- if (file.second .language ->interfaces (symbol_table, get_message_handler () ))
101
+ if (file.second .language ->interfaces (symbol_table, message_handler ))
95
102
return true ;
96
103
}
97
104
@@ -132,6 +139,7 @@ bool language_filest::typecheck(
132
139
{
133
140
if (file.second .modules .empty ())
134
141
{
142
+ <<<<<<< HEAD
135
143
<<<<<<< HEAD
136
144
if (file.second .language ->can_keep_file_local ())
137
145
{
@@ -146,6 +154,9 @@ bool language_filest::typecheck(
146
154
=======
147
155
if (file.second .language ->typecheck (
148
156
symbol_table, " " , get_message_handler ()))
157
+ =======
158
+ if (file.second .language ->typecheck (symbol_table, " " , message_handler))
159
+ >>>>>>> language_filest is not a messaget
149
160
return true ;
150
161
>>>>>>> languaget is not a messaget
151
162
// register lazy methods.
@@ -162,23 +173,28 @@ bool language_filest::typecheck(
162
173
163
174
for (auto &module : module_map)
164
175
{
176
+ <<<<<<< HEAD
165
177
if (typecheck_module (symbol_table, module .second , keep_file_local))
178
+ =======
179
+ if (typecheck_module (symbol_table, module .second , message_handler))
180
+ >>>>>>> language_filest is not a messaget
166
181
return true ;
167
182
}
168
183
169
184
return false ;
170
185
}
171
186
172
187
bool language_filest::generate_support_functions (
173
- symbol_tablet &symbol_table)
188
+ symbol_tablet &symbol_table,
189
+ message_handlert &message_handler)
174
190
{
175
191
std::set<std::string> languages;
176
192
177
193
for (auto &file : file_map)
178
194
{
179
195
if (languages.insert (file.second .language ->id ()).second )
180
196
if (file.second .language ->generate_support_functions (
181
- symbol_table, get_message_handler () ))
197
+ symbol_table, message_handler ))
182
198
return true ;
183
199
}
184
200
@@ -200,11 +216,12 @@ bool language_filest::final(symbol_table_baset &symbol_table)
200
216
}
201
217
202
218
bool language_filest::interfaces (
203
- symbol_tablet &symbol_table)
219
+ symbol_tablet &symbol_table,
220
+ message_handlert &message_handler)
204
221
{
205
222
for (auto &file : file_map)
206
223
{
207
- if (file.second .language ->interfaces (symbol_table, get_message_handler () ))
224
+ if (file.second .language ->interfaces (symbol_table, message_handler ))
208
225
return true ;
209
226
}
210
227
@@ -214,36 +231,52 @@ bool language_filest::interfaces(
214
231
bool language_filest::typecheck_module (
215
232
symbol_tablet &symbol_table,
216
233
const std::string &module ,
234
+ <<<<<<< HEAD
217
235
const bool keep_file_local)
236
+ =======
237
+ message_handlert &message_handler)
238
+ >>>>>>> language_filest is not a messaget
218
239
{
219
240
// check module map
220
241
221
242
module_mapt::iterator it=module_map.find (module );
222
243
223
244
if (it==module_map.end ())
224
245
{
225
- error () << " found no file that provides module " << module << eom;
246
+ messaget log (message_handler);
247
+ log.error () << " found no file that provides module " << module
248
+ << messaget::eom;
226
249
return true ;
227
250
}
228
251
252
+ <<<<<<< HEAD
229
253
return typecheck_module (symbol_table, it->second , keep_file_local);
254
+ =======
255
+ return typecheck_module (symbol_table, it->second , message_handler);
256
+ >>>>>>> language_filest is not a messaget
230
257
}
231
258
232
259
bool language_filest::typecheck_module (
233
260
symbol_tablet &symbol_table,
234
261
language_modulet &module ,
262
+ <<<<<<< HEAD
235
263
const bool keep_file_local)
264
+ =======
265
+ message_handlert &message_handler)
266
+ >>>>>>> language_filest is not a messaget
236
267
{
237
268
// already typechecked?
238
269
239
270
if (module .type_checked )
240
271
return false ;
241
272
273
+ messaget log (message_handler);
274
+
242
275
// already in progress?
243
276
244
277
if (module .in_progress )
245
278
{
246
- error () << " circular dependency in " << module .name << eom;
279
+ log. error () << " circular dependency in " << module .name << messaget:: eom;
247
280
return true ;
248
281
}
249
282
@@ -260,21 +293,31 @@ bool language_filest::typecheck_module(
260
293
it!=dependency_set.end ();
261
294
it++)
262
295
{
296
+ <<<<<<< HEAD
263
297
module .in_progress = !typecheck_module (symbol_table, *it, keep_file_local);
264
298
if (module .in_progress == false )
299
+ =======
300
+ if (typecheck_module (symbol_table, *it, message_handler))
301
+ {
302
+ module .in_progress =false ;
303
+ >>>>>>> language_filest is not a messaget
265
304
return true ;
266
305
}
267
306
268
307
// type check it
269
308
270
- status () << " Type-checking " << module .name << eom;
309
+ log. status () << " Type-checking " << module .name << messaget:: eom;
271
310
272
311
<<<<<<< HEAD
273
312
if (module .file ->language ->can_keep_file_local ())
274
313
=======
275
314
if (module .file ->language ->typecheck (
315
+ <<<<<<< HEAD
276
316
symbol_table, module .name , get_message_handler ()))
277
317
>>>>>>> languaget is not a messaget
318
+ =======
319
+ symbol_table, module .name , message_handler))
320
+ >>>>>>> language_filest is not a messaget
278
321
{
279
322
module .in_progress = !module .file ->language ->typecheck (
280
323
symbol_table, module .name , keep_file_local);
0 commit comments