Report error reason on same line as syntax error.

Signed-off-by: litghost <537074+litghost@users.noreply.github.com>
This commit is contained in:
litghost 2018-08-08 10:22:55 -07:00
parent 475c2af812
commit 219f1e9fc9
1 changed files with 9 additions and 6 deletions

View File

@ -85,6 +85,7 @@ void parse_blif(RTLIL::Design *design, std::istream &f, std::string dff_name, bo
RTLIL::Cell *sopcell = NULL; RTLIL::Cell *sopcell = NULL;
RTLIL::Cell *lastcell = nullptr; RTLIL::Cell *lastcell = nullptr;
RTLIL::State lut_default_state = RTLIL::State::Sx; RTLIL::State lut_default_state = RTLIL::State::Sx;
char err_reason[80];
int blif_maxnum = 0, sopmode = -1; int blif_maxnum = 0, sopmode = -1;
auto blif_wire = [&](const std::string &wire_name) -> Wire* auto blif_wire = [&](const std::string &wire_name) -> Wire*
@ -275,8 +276,8 @@ void parse_blif(RTLIL::Design *design, std::istream &f, std::string dff_name, bo
if(lastcell == nullptr || module == nullptr) if(lastcell == nullptr || module == nullptr)
{ {
log_warning("No primative object to attach .cname %s.\n", p); snprintf(err_reason, sizeof(err_reason), "No primative object to attach .cname %s.", p);
goto error; goto error_with_reason;
} }
module->rename(lastcell, p); module->rename(lastcell, p);
@ -301,14 +302,14 @@ void parse_blif(RTLIL::Design *design, std::istream &f, std::string dff_name, bo
} }
if (!strcmp(cmd, ".attr")) { if (!strcmp(cmd, ".attr")) {
if (obj_attributes == nullptr) { if (obj_attributes == nullptr) {
log_warning("No object to attach .attr too.\n"); snprintf(err_reason, sizeof(err_reason), "No object to attach .attr too.");
goto error; goto error_with_reason;
} }
(*obj_attributes)[id_n] = const_v; (*obj_attributes)[id_n] = const_v;
} else { } else {
if (obj_parameters == nullptr) { if (obj_parameters == nullptr) {
log_warning("No object to attach .param too.\n"); snprintf(err_reason, sizeof(err_reason), "No object to attach .param too.");
goto error; goto error_with_reason;
} }
(*obj_parameters)[id_n] = const_v; (*obj_parameters)[id_n] = const_v;
} }
@ -573,6 +574,8 @@ void parse_blif(RTLIL::Design *design, std::istream &f, std::string dff_name, bo
error: error:
log_error("Syntax error in line %d!\n", line_count); log_error("Syntax error in line %d!\n", line_count);
error_with_reason:
log_error("Syntax error in line %d: %s\n", line_count, err_reason);
} }
struct BlifFrontend : public Frontend { struct BlifFrontend : public Frontend {