diff --git a/vhdlpp/vtype_stream.cc b/vhdlpp/vtype_stream.cc index 0ded586de..2cf159db8 100644 --- a/vhdlpp/vtype_stream.cc +++ b/vhdlpp/vtype_stream.cc @@ -41,14 +41,16 @@ void VTypeArray::write_to_stream(ostream&fd) const // Special cases: std_logic_vector & string if (etype_ == &primitive_STDLOGIC) { fd << "std_logic_vector"; - if (! ranges_.empty() && ! ranges_[0].is_box()) { + if (!ranges_.empty() && !ranges_[0].is_box()) { + write_range_to_stream_(fd); + } + return; + } else if (etype_ == &primitive_CHARACTER) { + fd << "string"; + if (!ranges_.empty() && !ranges_[0].is_box()) { write_range_to_stream_(fd); } return; - } else if (etype_ == &primitive_CHARACTER && - ranges_.size() == 1 && ranges_[0].is_box()) { - fd << "string"; - return; } bool typedefed = false; @@ -104,6 +106,13 @@ void VTypeArray::write_type_to_stream(ostream&fd) const } return; } + else if (etype_ == &primitive_CHARACTER) { + fd << "string"; + if (! ranges_.empty() && ! ranges_[0].is_box()) { + write_range_to_stream_(fd); + } + return; + } fd << "array ";