Skip to content

Commit 542ac3a

Browse files
committed
language_filest is not a messaget
Pass a message handler as an argument to several of its functions, but do not construct a messaget object without a configured message handler as that is deprecated.
1 parent 247380f commit 542ac3a

File tree

7 files changed

+51
-28
lines changed

7 files changed

+51
-28
lines changed

jbmc/src/java_bytecode/lazy_goto_functions_map.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,8 @@ class lazy_goto_functions_mapt final
173173
symbol_table_baset &function_symbol_table) const
174174
{
175175
// Fill in symbol table entry body if not already done
176-
language_files.convert_lazy_method(name, function_symbol_table);
176+
language_files.convert_lazy_method(
177+
name, function_symbol_table, message_handler);
177178

178179
underlying_mapt::iterator it = goto_functions.find(name);
179180
if(it != goto_functions.end())

jbmc/src/java_bytecode/lazy_goto_model.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ lazy_goto_modelt::lazy_goto_modelt(
6060
driver_program_generate_function_body),
6161
message_handler(message_handler)
6262
{
63-
language_files.set_message_handler(message_handler);
6463
}
6564

6665
lazy_goto_modelt::lazy_goto_modelt(lazy_goto_modelt &&other)
@@ -159,7 +158,7 @@ void lazy_goto_modelt::initialize(
159158

160159
msg.status() << "Converting" << messaget::eom;
161160

162-
if(language_files.typecheck(symbol_table))
161+
if(language_files.typecheck(symbol_table, message_handler))
163162
{
164163
throw invalid_source_file_exceptiont("CONVERSION ERROR");
165164
}
@@ -205,7 +204,7 @@ void lazy_goto_modelt::initialize(
205204

206205
msg.status() << "Converting" << messaget::eom;
207206

208-
if(language_files.typecheck(symbol_table))
207+
if(language_files.typecheck(symbol_table, message_handler))
209208
{
210209
throw invalid_source_file_exceptiont("CONVERSION ERROR");
211210
}

src/goto-cc/compile.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -623,14 +623,14 @@ bool compilet::write_bin_object_file(
623623
optionalt<symbol_tablet> compilet::parse_source(const std::string &file_name)
624624
{
625625
language_filest language_files;
626-
language_files.set_message_handler(log.get_message_handler());
627626

628627
if(parse(file_name, language_files))
629628
return {};
630629

631630
// we just typecheck one file here
632631
symbol_tablet file_symbol_table;
633-
if(language_files.typecheck(file_symbol_table, keep_file_local))
632+
if(language_files.typecheck(
633+
file_symbol_table, keep_file_local, log.get_message_handler()))
634634
{
635635
log.error() << "CONVERSION ERROR" << messaget::eom;
636636
return {};

src/goto-programs/initialize_goto_model.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ goto_modelt initialize_goto_model(
8484
}
8585

8686
language_filest language_files;
87-
language_files.set_message_handler(message_handler);
8887

8988
goto_modelt goto_model;
9089

@@ -129,7 +128,7 @@ goto_modelt initialize_goto_model(
129128

130129
msg.status() << "Converting" << messaget::eom;
131130

132-
if(language_files.typecheck(goto_model.symbol_table))
131+
if(language_files.typecheck(goto_model.symbol_table, message_handler))
133132
{
134133
throw invalid_source_file_exceptiont("CONVERSION ERROR");
135134
}

src/langapi/language_file.cpp

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

8385
bool language_filest::typecheck(
8486
symbol_tablet &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

@@ -204,36 +208,43 @@ bool language_filest::interfaces(
204208
bool language_filest::typecheck_module(
205209
symbol_tablet &symbol_table,
206210
const std::string &module,
207-
const bool keep_file_local)
211+
const bool keep_file_local,
212+
message_handlert &message_handler)
208213
{
209214
// check module map
210215

211216
module_mapt::iterator it=module_map.find(module);
212217

213218
if(it==module_map.end())
214219
{
215-
error() << "found no file that provides module " << module << eom;
220+
messaget log(message_handler);
221+
log.error() << "found no file that provides module " << module
222+
<< messaget::eom;
216223
return true;
217224
}
218225

219-
return typecheck_module(symbol_table, it->second, keep_file_local);
226+
return typecheck_module(
227+
symbol_table, it->second, keep_file_local, message_handler);
220228
}
221229

222230
bool language_filest::typecheck_module(
223231
symbol_tablet &symbol_table,
224232
language_modulet &module,
225-
const bool keep_file_local)
233+
const bool keep_file_local,
234+
message_handlert &message_handler)
226235
{
227236
// already typechecked?
228237

229238
if(module.type_checked)
230239
return false;
231240

241+
messaget log(message_handler);
242+
232243
// already in progress?
233244

234245
if(module.in_progress)
235246
{
236-
error() << "circular dependency in " << module.name << eom;
247+
log.error() << "circular dependency in " << module.name << messaget::eom;
237248
return true;
238249
}
239250

@@ -250,14 +261,15 @@ bool language_filest::typecheck_module(
250261
it!=dependency_set.end();
251262
it++)
252263
{
253-
module.in_progress = !typecheck_module(symbol_table, *it, keep_file_local);
264+
module.in_progress =
265+
!typecheck_module(symbol_table, *it, keep_file_local, message_handler);
254266
if(module.in_progress == false)
255267
return true;
256268
}
257269

258270
// type check it
259271

260-
status() << "Type-checking " << module.name << eom;
272+
log.status() << "Type-checking " << module.name << messaget::eom;
261273

262274
if(module.file->language->can_keep_file_local())
263275
{

src/langapi/language_file.h

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Author: Daniel Kroening, kroening@kroening.com
2020
#include <util/message.h>
2121
#include <util/symbol_table_base.h>
2222

23+
class message_handlert;
2324
class language_filet;
2425
class languaget;
2526
class symbol_tablet;
@@ -59,7 +60,7 @@ class language_filet final
5960
~language_filet();
6061
};
6162

62-
class language_filest:public messaget
63+
class language_filest
6364
{
6465
private:
6566
typedef std::map<std::string, language_filet> file_mapt;
@@ -102,14 +103,22 @@ class language_filest:public messaget
102103
file_map.clear();
103104
}
104105

105-
bool parse();
106+
bool parse(message_handlert &message_handler);
106107

107108
void show_parse(std::ostream &out);
108109

109110
bool generate_support_functions(symbol_tablet &symbol_table);
110111

111112
bool
112-
typecheck(symbol_tablet &symbol_table, const bool keep_file_local = false);
113+
114+
typecheck(
115+
symbol_tablet &symbol_table,
116+
const bool keep_file_local,
117+
message_handlert &message_handler);
118+
bool typecheck(symbol_tablet &symbol_table, message_handlert &message_handler)
119+
{
120+
return typecheck(symbol_table, false, message_handler);
121+
}
113122

114123
bool final(symbol_table_baset &symbol_table);
115124

@@ -120,7 +129,8 @@ class language_filest:public messaget
120129
// for this to be legal.
121130
void convert_lazy_method(
122131
const irep_idt &id,
123-
symbol_table_baset &symbol_table)
132+
symbol_table_baset &symbol_table,
133+
message_handlert &message_handler)
124134
{
125135
PRECONDITION(symbol_table.has_symbol(id));
126136
lazy_method_mapt::iterator it=lazy_method_map.find(id);
@@ -144,12 +154,14 @@ class language_filest:public messaget
144154
bool typecheck_module(
145155
symbol_tablet &symbol_table,
146156
language_modulet &module,
147-
const bool keep_file_local);
157+
const bool keep_file_local,
158+
message_handlert &message_handler);
148159

149160
bool typecheck_module(
150161
symbol_tablet &symbol_table,
151162
const std::string &module,
152-
const bool keep_file_local);
163+
const bool keep_file_local,
164+
message_handlert &message_handler);
153165
};
154166

155167
#endif // CPROVER_UTIL_LANGUAGE_FILE_H

unit/testing-utils/get_goto_model_from_c.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ goto_modelt get_goto_model_from_c(std::istream &in)
4444
}
4545

4646
language_filest language_files;
47-
language_files.set_message_handler(null_message_handler);
4847

4948
language_filet &language_file = language_files.add_file("");
5049

@@ -66,7 +65,8 @@ goto_modelt get_goto_model_from_c(std::istream &in)
6665
goto_modelt goto_model;
6766

6867
{
69-
const bool error = language_files.typecheck(goto_model.symbol_table);
68+
const bool error =
69+
language_files.typecheck(goto_model.symbol_table, null_message_handler);
7070

7171
if(error)
7272
throw invalid_source_file_exceptiont("typechecking failed");

0 commit comments

Comments
 (0)