mirror of
https://github.com/YosysHQ/yosys
synced 2025-06-14 01:46:16 +00:00
Merge pull request #1879 from jjj11x/jjj11x/package_decl
support using previously declared types/localparams/parameters in package
This commit is contained in:
commit
f41c7ccfff
3 changed files with 33 additions and 4 deletions
|
@ -442,6 +442,29 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage,
|
|||
}
|
||||
}
|
||||
|
||||
// create name resolution entries for all objects with names
|
||||
if (type == AST_PACKAGE) {
|
||||
//add names to package scope
|
||||
for (size_t i = 0; i < children.size(); i++) {
|
||||
AstNode *node = children[i];
|
||||
// these nodes appear at the top level in a package and can define names
|
||||
if (node->type == AST_PARAMETER || node->type == AST_LOCALPARAM || node->type == AST_TYPEDEF) {
|
||||
current_scope[node->str] = node;
|
||||
}
|
||||
if (node->type == AST_ENUM) {
|
||||
current_scope[node->str] = node;
|
||||
for (auto enode : node->children) {
|
||||
log_assert(enode->type==AST_ENUM_ITEM);
|
||||
if (current_scope.count(enode->str) == 0)
|
||||
current_scope[enode->str] = enode;
|
||||
else
|
||||
log_file_error(filename, location.first_line, "enum item %s already exists in package\n", enode->str.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
auto backup_current_block = current_block;
|
||||
auto backup_current_block_child = current_block_child;
|
||||
auto backup_current_top_block = current_top_block;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue