Added log_cmd_error_expection

This commit is contained in:
Clifford Wolf 2014-07-27 12:04:12 +02:00
parent 7661ded8dd
commit d878fcbdc7
4 changed files with 7 additions and 8 deletions

View File

@ -141,9 +141,9 @@ static void run_frontend(std::string filename, std::string command, RTLIL::Desig
Pass::call(design, command);
}
}
catch (...) {
catch (log_cmd_error_expection) {
Frontend::current_script_file = backup_script_file;
std::rethrow_exception(std::current_exception());
throw log_cmd_error_expection();
}
Frontend::current_script_file = backup_script_file;
@ -329,7 +329,7 @@ static void shell(RTLIL::Design *design)
try {
assert(design->selection_stack.size() == 1);
Pass::call(design, command);
} catch (int) {
} catch (log_cmd_error_expection) {
while (design->selection_stack.size() > 1)
design->selection_stack.pop_back();
log_reset_stack();

View File

@ -160,7 +160,7 @@ void log_cmd_error(const char *format, ...)
log("ERROR: ");
logv(format, ap);
log_flush();
throw 0;
throw log_cmd_error_expection();
}
logv_error(format, ap);

View File

@ -34,6 +34,8 @@
#define S__LINE__sub1(x) S__LINE__sub2(x)
#define S__LINE__ S__LINE__sub1(__LINE__)
struct log_cmd_error_expection { };
extern std::vector<FILE*> log_files;
extern FILE *log_errfile;
extern bool log_time;

View File

@ -32,10 +32,7 @@
* Convert a signal into a KISS-compatible textual representation.
*/
std::string kiss_convert_signal(const RTLIL::SigSpec &sig) {
if (!sig.is_fully_const()) {
throw 0;
}
log_assert(sig.is_fully_const());
return sig.as_const().as_string();
}