<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - Failure to find an enumerator within its enclosing namespace"
   href="http://llvm.org/bugs/show_bug.cgi?id=20657">20657</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Failure to find an enumerator within its enclosing namespace
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>lldb
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>All Bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>lldb-dev@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>chandlerc@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>david.majnemer@gmail.com, tfiala@google.com
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>% cat x.cpp
namespace N {
  enum E { E1, E2, E3 };
}

int main() {
  N::E e = N::E2;
}

% nl x.cpp 
     1  namespace N {
     2    enum E { E1, E2, E3 };
     3  }

     4  int main() {
     5    N::E e = N::E2;
     6  }

% clang++ -g -o x x.cpp

% lldb -- ./x            
Current executable set to './x' (x86_64).
(lldb) b x.cpp:5
Breakpoint 1: where = x`main + 9 at x.cpp:6, address = 0x00000000004005c9
(lldb) r
Process 12194 launching
Process 12194 launched: './x' (x86_64)
Process 12194 stopped
* thread #1: tid = 12194, 0x00007fed45a6e2d0, name = 'x', stop reason = trace
    frame #0: 0x00007fed45a6e2d0
error: No such process
Process 12194 stopped
* thread #1: tid = 12194, 0x00000000004005c9 x`main + 9 at x.cpp:6, name = 'x',
stop reason = breakpoint 1.1
    frame #0: 0x00000000004005c9 x`main + 9 at x.cpp:6
   3    }
   4   
   5    int main() {
-> 6      N::E e = N::E2;
   7    }
(lldb) p N::E2
error: no member named 'E2' in namespace 'N'
error: 1 errors parsing expression

BUG! There is an E2 in the namespace N, this is an unscoped enum.

LLDB does have the enum type:

(lldb) p e
(N::E) $0 = E1
(lldb) p N::E::E2
(int) $1 = 1

So the problem seems to be that we don't form the correct AST from the debug
information here, in particular that the DeclContext of the namespace isn't
getting the names for the enumerators inserted into it.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>