Apply review comments

Signed-off-by: Kamil Rakoczy <krakoczy@antmicro.com>
diff --git a/systemverilog-plugin/UhdmAst.cc b/systemverilog-plugin/UhdmAst.cc
index 9c89170..5b2c9bc 100644
--- a/systemverilog-plugin/UhdmAst.cc
+++ b/systemverilog-plugin/UhdmAst.cc
@@ -619,7 +619,8 @@
         if (c->type == AST::AST_RANGE) {
             // Currently supporting only 1 range
             if (struct_range) {
-                log_error("Currently support for dot-access is limited to single range\n");
+                log_file_error(struct_range->filename, struct_range->location.first_line,
+                               "Currently support for dot-access is limited to single range\n");
             }
             struct_range = c;
         }
@@ -636,7 +637,8 @@
         // with multirange
         // Currently support only special access to 2 dimensional packed element
         // when selecting single range
-        if (struct_range && current_struct_elem->multirange_swapped.size() == 2 /* 2 dimensional */) {
+        log_assert(current_struct_elem->multirange_dimensions.size() % 2 == 0);
+        if (struct_range && (current_struct_elem->multirange_dimensions.size() / 2) == 2) {
             // get element size in number of bits
             const int single_elem_size = current_struct_elem->children.front()->range_left + 1;
             left = AST::AstNode::mkconst_int(single_elem_size * current_struct_elem->multirange_dimensions.back(), true);
@@ -847,9 +849,10 @@
             // embedded struct or union
             width = simplify_struct(node, base_offset + offset, parent_node);
             if (!node->multirange_dimensions.empty()) {
-                // reverse-iterate over multiranges, skip right_range
-                for (auto rit = node->multirange_dimensions.rbegin(); rit != node->multirange_dimensions.rend(); rit += 2) {
-                    width *= *rit;
+                // Multiply widths of all dimensions.
+                // `multirange_dimensions` stores (repeating) pairs of [offset, width].
+                for (size_t i = 1; i < node->multirange_dimensions.size(); i += 2) {
+                    width *= node->multirange_dimensions[i];
                 }
             }
             // set range of struct