1313#include < util/get_module.h>
1414#include < util/message.h>
1515#include < util/namespace.h>
16+ #include < util/options.h>
1617#include < util/unicode.h>
1718
1819#include < langapi/language.h>
@@ -107,6 +108,11 @@ int preprocess(const cmdlinet &cmdline, message_handlert &message_handler)
107108 return 1 ;
108109 }
109110
111+ optionst options;
112+ options.set_option (" force-systemverilog" , cmdline.isset (" systemverilog" ));
113+
114+ language->set_language_options (options, message_handler);
115+
110116 if (language->preprocess (infile, filename, std::cout, message_handler))
111117 {
112118 message.error () << " PREPROCESSING FAILED" << messaget::eom;
@@ -116,7 +122,8 @@ int preprocess(const cmdlinet &cmdline, message_handlert &message_handler)
116122 return 0 ;
117123}
118124
119- bool parse (
125+ static bool parse (
126+ const cmdlinet &cmdline,
120127 const std::string &filename,
121128 language_filest &language_files,
122129 message_handlert &message_handler)
@@ -147,6 +154,11 @@ bool parse(
147154
148155 languaget &language = *lf.language ;
149156
157+ optionst options;
158+ options.set_option (" force-systemverilog" , cmdline.isset (" systemverilog" ));
159+
160+ language.set_language_options (options, message_handler);
161+
150162 message.status () << " Parsing " << filename << messaget::eom;
151163
152164 if (language.parse (infile, filename, message_handler))
@@ -167,7 +179,7 @@ bool parse(
167179{
168180 for (unsigned i = 0 ; i < cmdline.args .size (); i++)
169181 {
170- if (parse (cmdline.args [i], language_files, message_handler))
182+ if (parse (cmdline, cmdline .args [i], language_files, message_handler))
171183 return true ;
172184 }
173185 return false ;
0 commit comments