This revision was automatically updated to reflect the committed changes.
Closed by commit rGc327f9925428: [lldb] Refactor deduction of the instance
variable's name (NFC) (authored by kastiglione).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D146548/new/
https://reviews.llvm.org/D146548
Files:
lldb/include/lldb/Symbol/CompilerDeclContext.h
lldb/include/lldb/Symbol/TypeSystem.h
lldb/include/lldb/Target/Language.h
lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h
lldb/source/Plugins/Language/ObjC/ObjCLanguage.h
lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h
lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.h
lldb/source/Symbol/CompilerDeclContext.cpp
lldb/source/Symbol/SymbolContext.cpp
Index: lldb/source/Symbol/SymbolContext.cpp
===================================================================
--- lldb/source/Symbol/SymbolContext.cpp
+++ lldb/source/Symbol/SymbolContext.cpp
@@ -19,10 +19,12 @@
#include "lldb/Symbol/SymbolFile.h"
#include "lldb/Symbol/SymbolVendor.h"
#include "lldb/Symbol/Variable.h"
+#include "lldb/Target/Language.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/LLDBLog.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/StreamString.h"
+#include "lldb/lldb-enumerations.h"
using namespace lldb;
using namespace lldb_private;
@@ -540,13 +542,17 @@
}
ConstString SymbolContext::GetInstanceVariableName() {
+ LanguageType lang_type = eLanguageTypeUnknown;
+
if (Block *function_block = GetFunctionBlock())
- if (CompilerDeclContext decl_ctx = function_block->GetDeclContext()) {
- auto language = decl_ctx.GetLanguage();
- if (language == eLanguageTypeUnknown)
- language = GetLanguage();
- return decl_ctx.GetInstanceVariableName(language);
- }
+ if (CompilerDeclContext decl_ctx = function_block->GetDeclContext())
+ lang_type = decl_ctx.GetLanguage();
+
+ if (lang_type == eLanguageTypeUnknown)
+ lang_type = GetLanguage();
+
+ if (auto *lang = Language::FindPlugin(lang_type))
+ return lang->GetInstanceVariableName();
return {};
}
Index: lldb/source/Symbol/CompilerDeclContext.cpp
===================================================================
--- lldb/source/Symbol/CompilerDeclContext.cpp
+++ lldb/source/Symbol/CompilerDeclContext.cpp
@@ -46,13 +46,6 @@
return {};
}
-ConstString
-CompilerDeclContext::GetInstanceVariableName(lldb::LanguageType language) {
- if (IsValid())
- return m_type_system->GetInstanceVariableName(language);
- return {};
-}
-
bool CompilerDeclContext::IsContainedInLookup(CompilerDeclContext other) const {
if (!IsValid())
return false;
Index: lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.h
===================================================================
--- lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.h
+++ lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.h
@@ -711,8 +711,6 @@
bool SupportsLanguage(lldb::LanguageType language) override;
- ConstString GetInstanceVariableName(lldb::LanguageType language) override;
-
static std::optional<std::string> GetCXXClassName(const CompilerType &type);
// Type Completion
Index: lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
===================================================================
--- lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
+++ lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
@@ -3727,22 +3727,6 @@
return TypeSystemClangSupportsLanguage(language);
}
-ConstString
-TypeSystemClang::GetInstanceVariableName(lldb::LanguageType language) {
- switch (language) {
- case LanguageType::eLanguageTypeC_plus_plus:
- case LanguageType::eLanguageTypeC_plus_plus_03:
- case LanguageType::eLanguageTypeC_plus_plus_11:
- case LanguageType::eLanguageTypeC_plus_plus_14:
- return ConstString("this");
- case LanguageType::eLanguageTypeObjC:
- case LanguageType::eLanguageTypeObjC_plus_plus:
- return ConstString("self");
- default:
- return {};
- }
-}
-
std::optional<std::string>
TypeSystemClang::GetCXXClassName(const CompilerType &type) {
if (!type)
Index: lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h
===================================================================
--- lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h
+++ lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h
@@ -40,6 +40,8 @@
static lldb_private::Language *CreateInstance(lldb::LanguageType language);
+ ConstString GetInstanceVariableName() override { return ConstString("self"); }
+
static llvm::StringRef GetPluginNameStatic() { return "objcplusplus"; }
// PluginInterface protocol
Index: lldb/source/Plugins/Language/ObjC/ObjCLanguage.h
===================================================================
--- lldb/source/Plugins/Language/ObjC/ObjCLanguage.h
+++ lldb/source/Plugins/Language/ObjC/ObjCLanguage.h
@@ -155,6 +155,8 @@
return false;
}
+ ConstString GetInstanceVariableName() override { return ConstString("self"); }
+
// PluginInterface protocol
llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
};
Index: lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h
===================================================================
--- lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h
+++ lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h
@@ -165,6 +165,8 @@
ConstString FindBestAlternateFunctionMangledName(
const Mangled mangled, const SymbolContext &sym_ctx) const override;
+ ConstString GetInstanceVariableName() override { return ConstString("this"); }
+
// PluginInterface protocol
llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
};
Index: lldb/include/lldb/Target/Language.h
===================================================================
--- lldb/include/lldb/Target/Language.h
+++ lldb/include/lldb/Target/Language.h
@@ -326,6 +326,8 @@
return ConstString();
}
+ virtual ConstString GetInstanceVariableName() { return {}; }
+
protected:
// Classes that inherit from Language can see and modify these
Index: lldb/include/lldb/Symbol/TypeSystem.h
===================================================================
--- lldb/include/lldb/Symbol/TypeSystem.h
+++ lldb/include/lldb/Symbol/TypeSystem.h
@@ -202,10 +202,6 @@
// TypeSystems can support more than one language
virtual bool SupportsLanguage(lldb::LanguageType language) = 0;
- /// The name of the variable used for explicitly accessing data scoped to the
- /// current instance (or type). C++ uses "this", ObjC uses "self".
- virtual ConstString GetInstanceVariableName(lldb::LanguageType language) = 0;
-
// Type Completion
virtual bool GetCompleteType(lldb::opaque_compiler_type_t type) = 0;
Index: lldb/include/lldb/Symbol/CompilerDeclContext.h
===================================================================
--- lldb/include/lldb/Symbol/CompilerDeclContext.h
+++ lldb/include/lldb/Symbol/CompilerDeclContext.h
@@ -69,14 +69,6 @@
/// Determines the original language of the decl context.
lldb::LanguageType GetLanguage();
- /// Determines the name of the instance variable for the this decl context.
- ///
- /// For C++ the name is "this", for Objective-C the name is "self".
- ///
- /// \return
- /// Returns a string for the name of the instance variable.
- ConstString GetInstanceVariableName(lldb::LanguageType language);
-
/// Check if the given other decl context is contained in the lookup
/// of this decl context (for example because the other context is a nested
/// inline namespace).
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits