Skip to content

Commit e2b42b8

Browse files
tautschnigDaniel Kroening
authored and
Daniel Kroening
committed
goto-cc: do not restrict parsing from stdin to C source code
Command line parameters may have overridden the language, and we should use that configured language.
1 parent d7bb1d4 commit e2b42b8

File tree

2 files changed

+20
-23
lines changed

2 files changed

+20
-23
lines changed

src/goto-cc/compile.cpp

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ Date: June 2006
2929
#include <util/unicode.h>
3030
#include <util/version.h>
3131

32-
#include <ansi-c/ansi_c_language.h>
3332
#include <ansi-c/ansi_c_entry_point.h>
3433

3534
#include <goto-programs/goto_convert.h>
@@ -417,21 +416,6 @@ bool compilet::parse(
417416
const std::string &file_name,
418417
language_filest &language_files)
419418
{
420-
if(file_name=="-")
421-
return parse_stdin();
422-
423-
#ifdef _MSC_VER
424-
std::ifstream infile(widen(file_name));
425-
#else
426-
std::ifstream infile(file_name);
427-
#endif
428-
429-
if(!infile)
430-
{
431-
error() << "failed to open input file `" << file_name << "'" << eom;
432-
return true;
433-
}
434-
435419
std::unique_ptr<languaget> languagep;
436420

437421
// Using '-x', the type of a file can be overridden;
@@ -444,7 +428,7 @@ bool compilet::parse(
444428
else
445429
languagep = get_language_from_mode(ID_C);
446430
}
447-
else
431+
else if(file_name != "-")
448432
languagep=get_language_from_filename(file_name);
449433

450434
if(languagep==nullptr)
@@ -455,6 +439,21 @@ bool compilet::parse(
455439

456440
languagep->set_message_handler(get_message_handler());
457441

442+
if(file_name == "-")
443+
return parse_stdin(*languagep);
444+
445+
#ifdef _MSC_VER
446+
std::ifstream infile(widen(file_name));
447+
#else
448+
std::ifstream infile(file_name);
449+
#endif
450+
451+
if(!infile)
452+
{
453+
error() << "failed to open input file `" << file_name << "'" << eom;
454+
return true;
455+
}
456+
458457
language_filet &lf=language_files.add_file(file_name);
459458
lf.language=std::move(languagep);
460459

@@ -496,13 +495,10 @@ bool compilet::parse(
496495
}
497496

498497
/// parses a source file (low-level parsing)
498+
/// \param language: source language processor
499499
/// \return true on error, false otherwise
500-
bool compilet::parse_stdin()
500+
bool compilet::parse_stdin(languaget &language)
501501
{
502-
ansi_c_languaget language;
503-
504-
language.set_message_handler(get_message_handler());
505-
506502
statistics() << "Parsing: (stdin)" << eom;
507503

508504
if(mode==PREPROCESS_ONLY)

src/goto-cc/compile.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ Date: June 2006
2121
#include <goto-programs/goto_model.h>
2222

2323
class language_filest;
24+
class languaget;
2425

2526
class compilet : public messaget
2627
{
@@ -64,7 +65,7 @@ class compilet : public messaget
6465
bool add_files_from_archive(const std::string &file_name, bool thin_archive);
6566

6667
bool parse(const std::string &filename, language_filest &);
67-
bool parse_stdin();
68+
bool parse_stdin(languaget &);
6869
bool doit();
6970
bool compile();
7071
bool link();

0 commit comments

Comments
 (0)