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 // Elaborate initializer expressions for signals & variables
for (map<perm_string,Signal*>::iterator cur = old_signals_.begin() for (map<perm_string,Signal*>::iterator cur = old_signals_.begin()
; cur != old_signals_.end() ; ++cur) { ; 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() for (map<perm_string,Signal*>::iterator cur = new_signals_.begin()
; cur != new_signals_.end() ; ++cur) { ; 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() for (map<perm_string,Variable*>::iterator cur = old_variables_.begin()
; cur != old_variables_.end() ; ++cur) { ; 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() for (map<perm_string,Variable*>::iterator cur = new_variables_.begin()
; cur != new_variables_.end() ; ++cur) { ; cur != new_variables_.end() ; ++cur) {
cur->second->elaborate_init_expr(entity, this); cur->second->elaborate(entity, this);
} }
// Elaborate subprograms // 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()); init_expr_->elaborate_expr(ent, scope, peek_type());
}
type_->elaborate(ent, scope);
} }
void SigVarBase::type_elaborate_(VType::decl_t&decl) 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; void dump(ostream&out, int indent = 0) const;
// Elaborates initializer expressions if needed. // Elaborates type & initializer expressions.
void elaborate_init_expr(Entity*ent, ScopeBase*scope); void elaborate(Entity*ent, ScopeBase*scope);
perm_string peek_name() const { return name_; } perm_string peek_name() const { return name_; }