<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/54602>54602</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
lldb can't find enumerators in parent scope
</td>
</tr>
<tr>
<th>Labels</th>
<td>
lldb
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
slackito
</td>
</tr>
</table>
<pre>
Consider the following C++ program, built with `clang++ -g` and no other special flags.
```
namespace ns {
enum MyEnum { VALUE = 1 };
enum { ANON_ENUM_VALUE = 2 };
}
int main() {
ns::MyEnum v = ns::VALUE;
int i = ns::ANON_ENUM_VALUE;
return v;
}
```
When loading this program into lldb, it will fail to evaluate `ns::VALUE` and `ns::ANON_ENUM_VALUE`:
```
(lldb) p ns::VALUE
error: expression failed to parse:
error: <user expression 0>:1:5: no member named 'VALUE' in namespace 'ns'
ns::VALUE
~~~~^
(lldb) p ns::ANON_ENUM_VALUE
error: expression failed to parse:
error: <user expression 1>:1:5: no member named 'ANON_ENUM_VALUE' in namespace 'ns'
ns::ANON_ENUM_VALUE
~~~~^
```
For the named enum this can be worked around by qualifying the value name:
```
(lldb) p ns::MyEnum::VALUE
(ns::MyEnum) $0 = VALUE
```
but not for the anonymous enum.
gdb behaves correctly (`MyEnum` is not an `enum class`, so `ns::MyEnum::VALUE` is not a valid expression):
```
(gdb) p ns::VALUE
$1 = ns::VALUE
(gdb) p ns::ANON_ENUM_VALUE
$2 = ns::ANON_ENUM_VALUE
(gdb) p ns::MyEnum::VALUE
`ns::MyEnum' is not defined as an aggregate type.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytVd9z2jAM_muSF1254JAAD3mgQJ_W7qnbY89JRPBq7Mx26PjvJye0BEjZdrc754cVRfokfZJzXR6ypVZWlGjAbRE2Wkr9JlQFy4Dd04La6MrwXcCWkDdCOngTbgtBGhWSq-qodFeRALgqQWnQZMiArbEQXMJG8sqOgmgVRAtSOq52q_gObc0LBGUhmN53UlTNDh4Pa_8gIXxbfHleQxCvYEz7VRD39bzC4unr08v66fnx5aTKzlT9e_fS3oVysONCBWwWsPnJMxCOIF7QOrrft7beha31D5sA3ow407hA0tM16BqjYD8A6Twn3f37FhVIzUtfCbcV9r0M3qkGKcvcF0T4akjKMRcSSI57Lhvu0JfnHPWxOj35JVYCEC-GIbFZ53AO9UUyukIYow2JAH_VBq0VWrWIsPSYam4sfpj-0A3iZWOJJr1_CAClbDGmK_EqRKUd7nJS8kQh8GzaeWVTSgOc2EMCgsWmR1ZdIwym69NK1jfCuszKfw1w_OcAL_3_XaiDqIeDHmLbg-6av0PR9lXLuYIryBHetHklOTe6IQrlB_jZcCk2h46bCJ503c__xKCux65rxWYXGr5F2SRqO62veO4jbxwl1NEE64LhSqvDTje2DWjUj7cqc4pry_dIMWpjsHDyAH4apNHRJ_ULJcDboxzQrk0KTTxrvUNqPav7zXQdS8-AT5Aoe0SgiG5kqrrRapSH8cBM-vTXYWKwCbs5tj4191nJrhLhadtFX-JGKM8e6zPJq8pg5SeUO9Q4fCqEZRaX83jOQyecxMwzx1ORjFJ1heoYioY7bazvDmpApFFsC11j2BiZbZ2rWzzsgVZF51WTjwpNsB6k3L8_7mik_qDS01ZY2yC11UMySSMWbrNxmk5THkcpG0-TKJ4nLE_LlCcTTNI5y2eh5DlKmwUJHX-s4zYLklUoMhYxFsVsxuJkGkWjGdJLMouiGOez-XgSTCKks0eOPISRNlVoshZN3lSWPkphnT19JMKJSiG2nsg-b9xWm8xKXrwKp8MWedbC_g0wCD3i">