clayborg added a comment.

If you can explain the need for ParseDeclsForContext() as mentioned in the 
inlined comment that would help me understand this change better.

Also, Sean suggested that we might be able to fix all of this in another way 
that might make it easier on everyone: don't do any of the decl context 
searches manually like we are, but just add the using directives to the 
expression source code. When we make an expression we make a $_lldb_expr 
function and we put our expression inside of it. So if I run to "main" and run:

  (lldb) expr argc

We generate the code:

  void                           
  $__lldb_expr(void *$__lldb_arg)          
  {                              
  argc;                            
  }                              

Now, if we grabbed the using directives, we could translate them into source 
and place them inside the function lexical block:

  void                           
  $__lldb_expr(void *$__lldb_arg)          
  {                              
  using namespace foo;
  using namespace bar;
  argc;                            
  }                              

Then we might not need to make as any modifications to the name lookups to do 
this manually. Thoughts?


================
Comment at: source/Symbol/ClangASTContext.cpp:8950
@@ -8950,1 +8949,3 @@
                 searched.insert(it->second);
+                symbol_file->ParseDeclsForContext(CompilerDeclContext(this, 
it->second));
+
----------------
Can you explain why you need to call ParseDeclsForContext() here? I would like 
to always avoid parsing everything within a decl context if possible only allow 
targeted searches (find "b" in namespace "a", not parse everything in namespace 
"a").


http://reviews.llvm.org/D12897



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to