Fixed up the SBValue::GetExpressionPath() to be more correct under more
circumstances.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@123957 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Symbol/ClangASTContext.cpp b/source/Symbol/ClangASTContext.cpp
index b1cd6c5..9988d08 100644
--- a/source/Symbol/ClangASTContext.cpp
+++ b/source/Symbol/ClangASTContext.cpp
@@ -2373,7 +2373,8 @@
     int32_t &child_byte_offset,
     uint32_t &child_bitfield_bit_size,
     uint32_t &child_bitfield_bit_offset,
-    bool &child_is_base_class
+    bool &child_is_base_class,
+    bool &child_is_deref_of_parent
 )
 {
     if (parent_clang_type)
@@ -2389,7 +2390,8 @@
                                          child_byte_offset,
                                          child_bitfield_bit_size,
                                          child_bitfield_bit_offset,
-                                         child_is_base_class);
+                                         child_is_base_class, 
+                                         child_is_deref_of_parent);
     return NULL;
 }
 
@@ -2407,7 +2409,8 @@
     int32_t &child_byte_offset,
     uint32_t &child_bitfield_bit_size,
     uint32_t &child_bitfield_bit_offset,
-    bool &child_is_base_class
+    bool &child_is_base_class,
+    bool &child_is_deref_of_parent
 )
 {
     if (parent_clang_type == NULL)
@@ -2612,6 +2615,8 @@
 
                 if (transparent_pointers && ClangASTContext::IsAggregateType (pointee_type.getAsOpaquePtr()))
                 {
+                    child_is_deref_of_parent = false;
+                    bool tmp_child_is_deref_of_parent = false;
                     return GetChildClangTypeAtIndex (ast,
                                                      parent_name,
                                                      pointer_type->getPointeeType().getAsOpaquePtr(),
@@ -2623,10 +2628,12 @@
                                                      child_byte_offset,
                                                      child_bitfield_bit_size,
                                                      child_bitfield_bit_offset,
-                                                     child_is_base_class);
+                                                     child_is_base_class,
+                                                     tmp_child_is_deref_of_parent);
                 }
                 else
                 {
+                    child_is_deref_of_parent = true;
                     if (parent_name)
                     {
                         child_name.assign(1, '*');
@@ -2681,6 +2688,8 @@
 
                 if (transparent_pointers && ClangASTContext::IsAggregateType (pointee_type.getAsOpaquePtr()))
                 {
+                    child_is_deref_of_parent = false;
+                    bool tmp_child_is_deref_of_parent = false;
                     return GetChildClangTypeAtIndex (ast,
                                                      parent_name,
                                                      pointer_type->getPointeeType().getAsOpaquePtr(),
@@ -2692,10 +2701,13 @@
                                                      child_byte_offset,
                                                      child_bitfield_bit_size,
                                                      child_bitfield_bit_offset,
-                                                     child_is_base_class);
+                                                     child_is_base_class,
+                                                     tmp_child_is_deref_of_parent);
                 }
                 else
                 {
+                    child_is_deref_of_parent = true;
+
                     if (parent_name)
                     {
                         child_name.assign(1, '*');
@@ -2723,6 +2735,8 @@
                 clang_type_t pointee_clang_type = pointee_type.getAsOpaquePtr();
                 if (transparent_pointers && ClangASTContext::IsAggregateType (pointee_clang_type))
                 {
+                    child_is_deref_of_parent = false;
+                    bool tmp_child_is_deref_of_parent = false;
                     return GetChildClangTypeAtIndex (ast,
                                                      parent_name,
                                                      pointee_clang_type,
@@ -2734,7 +2748,8 @@
                                                      child_byte_offset,
                                                      child_bitfield_bit_size,
                                                      child_bitfield_bit_offset,
-                                                     child_is_base_class);
+                                                     child_is_base_class,
+                                                     tmp_child_is_deref_of_parent);
                 }
                 else
                 {
@@ -2769,7 +2784,8 @@
                                              child_byte_offset,
                                              child_bitfield_bit_size,
                                              child_bitfield_bit_offset,
-                                             child_is_base_class);
+                                             child_is_base_class,
+                                             child_is_deref_of_parent);
             break;
 
         default: