vhdlpp: Elaborate types for signals & variables.

This commit is contained in:
Maciej Suminski 2016-01-28 10:22:24 +01:00
parent 414f240694
commit 42ead3a482
3 changed files with 10 additions and 9 deletions

View File

@ -45,19 +45,19 @@ int Architecture::elaborate(Entity*entity)
// Elaborate initializer expressions for signals & variables
for (map<perm_string,Signal*>::iterator cur = old_signals_.begin()
; cur != old_signals_.end() ; ++cur) {
cur->second->elaborate_init_expr(entity, this);
cur->second->elaborate(entity, this);
}
for (map<perm_string,Signal*>::iterator cur = new_signals_.begin()
; cur != new_signals_.end() ; ++cur) {
cur->second->elaborate_init_expr(entity, this);
cur->second->elaborate(entity, this);
}
for (map<perm_string,Variable*>::iterator cur = old_variables_.begin()
; cur != old_variables_.end() ; ++cur) {
cur->second->elaborate_init_expr(entity, this);
cur->second->elaborate(entity, this);
}
for (map<perm_string,Variable*>::iterator cur = new_variables_.begin()
; cur != new_variables_.end() ; ++cur) {
cur->second->elaborate_init_expr(entity, this);
cur->second->elaborate(entity, this);
}
// Elaborate subprograms

View File

@ -35,11 +35,12 @@ SigVarBase::~SigVarBase()
{
}
void SigVarBase::elaborate_init_expr(Entity*ent, ScopeBase*scope)
void SigVarBase::elaborate(Entity*ent, ScopeBase*scope)
{
if(init_expr_) {
if(init_expr_)
init_expr_->elaborate_expr(ent, scope, peek_type());
}
type_->elaborate(ent, scope);
}
void SigVarBase::type_elaborate_(VType::decl_t&decl)

View File

@ -42,8 +42,8 @@ class SigVarBase : public LineInfo {
void dump(ostream&out, int indent = 0) const;
// Elaborates initializer expressions if needed.
void elaborate_init_expr(Entity*ent, ScopeBase*scope);
// Elaborates type & initializer expressions.
void elaborate(Entity*ent, ScopeBase*scope);
perm_string peek_name() const { return name_; }