- if(!prefixed && !prefix_hint.empty())
- {
- if(name.front()!='_')
- name = "_"+name;
- name = prefix_hint+name;
- if(name.front()!='_')
- name = "_"+name;
- prefixed = true;
- size_without_number = name.size();
- }
- else
- {
- name.erase(size_without_number);
- name += format("_%d", number);
- ++number;
- }
+ bool unused = true;
+ for(const Block *b=█ (unused && b); b=b->parent)
+ unused = !b->variables.count(name);
+ if(unused)
+ return name;
+
+ name.erase(base_size);
+ name += format("_%d", number);
+ ++number;