Throw errors if non-existing selection variables are used

This commit is contained in:
Clifford Wolf 2014-02-04 23:31:06 +01:00
parent b1bf55dd63
commit 1fb8ba73bd
1 changed files with 4 additions and 3 deletions

View File

@ -384,7 +384,8 @@ static void select_op_expand(RTLIL::Design *design, std::string arg, char mode)
for (auto i1 : design->selection_vars.at(str).selected_members) for (auto i1 : design->selection_vars.at(str).selected_members)
for (auto i2 : i1.second) for (auto i2 : i1.second)
limits.insert(i2); limits.insert(i2);
} } else
log_cmd_error("Selection %s is not defined!\n", RTLIL::id2cstr(str));
} else } else
limits.insert(RTLIL::escape_id(str)); limits.insert(RTLIL::escape_id(str));
} }
@ -521,7 +522,7 @@ static void select_stmt(RTLIL::Design *design, std::string arg)
if (design->selection_vars.count(set_name) > 0) if (design->selection_vars.count(set_name) > 0)
work_stack.push_back(design->selection_vars[set_name]); work_stack.push_back(design->selection_vars[set_name]);
else else
work_stack.push_back(RTLIL::Selection(false)); log_cmd_error("Selection @%s is not defined!\n", RTLIL::id2cstr(set_name));
select_filter_active_mod(design, work_stack.back()); select_filter_active_mod(design, work_stack.back());
return; return;
} }
@ -1016,7 +1017,7 @@ struct SelectPass : public Pass {
if (!set_name.empty()) if (!set_name.empty())
{ {
if (work_stack.size() == 0) if (work_stack.size() == 0)
design->selection_vars.erase(set_name); design->selection_vars[set_name] = RTLIL::Selection(false);
else else
design->selection_vars[set_name] = work_stack.back(); design->selection_vars[set_name] = work_stack.back();
return; return;