diff --git a/vhdlpp/parse_misc.cc b/vhdlpp/parse_misc.cc index eefe5296b..86c8e90cb 100644 --- a/vhdlpp/parse_misc.cc +++ b/vhdlpp/parse_misc.cc @@ -121,7 +121,11 @@ const VType* calculate_subtype_array(const YYLTYPE&loc, const char*base_name, Expression*lef = tmpr->left(); Expression*rig = tmpr->right(); return calculate_subtype_array(loc, base_name, scope, - lef, tmpr->direction(), rig); + lef, + (tmpr->direction() == ExpRange::range_dir_t::DOWNTO + ? true + : false), + rig); } sorrymsg(loc, "Don't know how to handle multiple ranges here.\n"); diff --git a/vhdlpp/vtype.cc b/vhdlpp/vtype.cc index 64e94ef46..de5894d74 100644 --- a/vhdlpp/vtype.cc +++ b/vhdlpp/vtype.cc @@ -119,7 +119,10 @@ VTypeArray::VTypeArray(const VType*element, std::list*r, bool sv) for (size_t idx = 0 ; idx < ranges_.size() ; idx += 1) { ExpRange*curp = r->front(); r->pop_front(); - ranges_[idx] = range_t(curp->msb(), curp->lsb(), curp->direction()); + ranges_[idx] = range_t(curp->msb(), curp->lsb(), + (curp->direction() == ExpRange::range_dir_t::DOWNTO + ? true + : false)); } }