diff --git a/lldb/source/Expression/ClangUserExpression.cpp b/lldb/source/Expression/ClangUserExpression.cpp
index 38e6ddb..db10d35 100644
--- a/lldb/source/Expression/ClangUserExpression.cpp
+++ b/lldb/source/Expression/ClangUserExpression.cpp
@@ -72,9 +72,9 @@
     m_result_synthesizer(),
     m_jit_module_wp(),
     m_enforce_valid_object (true),
-    m_cplusplus (false),
-    m_objectivec (false),
-    m_static_method(false),
+    m_in_cplusplus_method (false),
+    m_in_objectivec_method (false),
+    m_in_static_method(false),
     m_needs_object_ptr (false),
     m_const_object (false),
     m_target (NULL),
@@ -196,7 +196,7 @@
                 }
             }
 
-            m_cplusplus = true;
+            m_in_cplusplus_method = true;
             m_needs_object_ptr = true;
         }
     }
@@ -227,11 +227,11 @@
                 }
             }
 
-            m_objectivec = true;
+            m_in_objectivec_method = true;
             m_needs_object_ptr = true;
 
             if (!method_decl->isInstanceMethod())
-                m_static_method = true;
+                m_in_static_method = true;
         }
     }
     else if (clang::FunctionDecl *function_decl = llvm::dyn_cast<clang::FunctionDecl>(decl_context))
@@ -270,7 +270,7 @@
                     }
                 }
 
-                m_cplusplus = true;
+                m_in_cplusplus_method = true;
                 m_needs_object_ptr = true;
             }
             else if (language == lldb::eLanguageTypeObjC)
@@ -319,7 +319,7 @@
                     }
                     else if (self_clang_type.IsObjCObjectPointerType())
                     {
-                        m_objectivec = true;
+                        m_in_objectivec_method = true;
                         m_needs_object_ptr = true;
                     }
                     else
@@ -330,7 +330,7 @@
                 }
                 else
                 {
-                    m_objectivec = true;
+                    m_in_objectivec_method = true;
                     m_needs_object_ptr = true;
                 }
             }
@@ -491,14 +491,14 @@
     
     lldb::LanguageType lang_type;
 
-    if (m_cplusplus)
+    if (m_in_cplusplus_method)
         lang_type = lldb::eLanguageTypeC_plus_plus;
-    else if(m_objectivec)
+    else if (m_in_objectivec_method)
         lang_type = lldb::eLanguageTypeObjC;
     else
         lang_type = lldb::eLanguageTypeC;
 
-    if (!source_code->GetText(m_transformed_text, lang_type, m_const_object, m_static_method, exe_ctx))
+    if (!source_code->GetText(m_transformed_text, lang_type, m_const_object, m_in_static_method, exe_ctx))
     {
         error_stream.PutCString ("error: couldn't construct expression body");
         return false;
@@ -701,11 +701,11 @@
         {
             ConstString object_name;
 
-            if (m_cplusplus)
+            if (m_in_cplusplus_method)
             {
                 object_name.SetCString("this");
             }
-            else if (m_objectivec)
+            else if (m_in_objectivec_method)
             {
                 object_name.SetCString("self");
             }
@@ -725,7 +725,7 @@
                 object_ptr = 0;
             }
 
-            if (m_objectivec)
+            if (m_in_objectivec_method)
             {
                 ConstString cmd_name("_cmd");
 
@@ -876,7 +876,7 @@
             {
                 args.push_back(object_ptr);
 
-                if (m_objectivec)
+                if (m_in_objectivec_method)
                     args.push_back(cmd_ptr);
             }
 
@@ -913,7 +913,7 @@
 
             if (m_needs_object_ptr) {
                 args.push_back(object_ptr);
-                if (m_objectivec)
+                if (m_in_objectivec_method)
                     args.push_back(cmd_ptr);
             }
 
