From 549deb637305a4bf4c9e2c58388b149ee8fa6089 Mon Sep 17 00:00:00 2001 From: Jeff Wang Date: Thu, 16 Jan 2020 17:05:45 -0500 Subject: [PATCH] fix enum in generate blocks --- frontends/ast/simplify.cc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/frontends/ast/simplify.cc b/frontends/ast/simplify.cc index 2e1b1e404..c96f5d549 100644 --- a/frontends/ast/simplify.cc +++ b/frontends/ast/simplify.cc @@ -3097,6 +3097,26 @@ void AstNode::expand_genblock(std::string index_var, std::string prefix, std::ma child->str = new_name; current_scope[new_name] = child; } + if (child->type == AST_ENUM){ + for (auto enode : child->children){ + log_assert(enode->type == AST_ENUM_ITEM); + if (backup_name_map.size() == 0) + backup_name_map = name_map; + std::string new_name = prefix[0] == '\\' ? prefix.substr(1) : prefix; + size_t pos = enode->str.rfind('.'); + if (pos == std::string::npos) + pos = enode->str[0] == '\\' && prefix[0] == '\\' ? 1 : 0; + else + pos = pos + 1; + new_name = enode->str.substr(0, pos) + new_name + enode->str.substr(pos); + if (new_name[0] != '$' && new_name[0] != '\\') + new_name = prefix[0] + new_name; + name_map[enode->str] = new_name; + + enode->str = new_name; + current_scope[new_name] = enode; + } + } } for (size_t i = 0; i < children.size(); i++) { -- 2.30.2