diff options
author | Jim Ingham <jingham@apple.com> | 2017-04-05 00:08:21 +0000 |
---|---|---|
committer | Jim Ingham <jingham@apple.com> | 2017-04-05 00:08:21 +0000 |
commit | 9645a6290a983ec0d34e8d82f6b1044a71766996 (patch) | |
tree | a9704c72e067fc4f5e99a9f47276e14959fa138b /lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h | |
parent | d7f951104182808f04b936e74f1ec128b1c599eb (diff) | |
download | bcm5719-llvm-9645a6290a983ec0d34e8d82f6b1044a71766996.tar.gz bcm5719-llvm-9645a6290a983ec0d34e8d82f6b1044a71766996.zip |
Reverting r299374 & r299402 due to testsuite failure.
This caused a failure in the test case:
functionalities/breakpoint/objc/TestObjCBreakpoints.py
When we are parsing up names we stick interesting parts of the names
in various buckets, one of which is the ObjC selector bucket. The new
C++ name parser must be interfering with this process somehow.
<rdar://problem/31439305>
llvm-svn: 299489
Diffstat (limited to 'lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h')
-rw-r--r-- | lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h index 056cced2808..dbc1d59c8ba 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h +++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h @@ -29,13 +29,20 @@ class CPlusPlusLanguage : public Language { public: class MethodName { public: + enum Type { + eTypeInvalid, + eTypeUnknownMethod, + eTypeClassMethod, + eTypeInstanceMethod + }; + MethodName() : m_full(), m_basename(), m_context(), m_arguments(), m_qualifiers(), - m_parsed(false), m_parse_error(false) {} + m_type(eTypeInvalid), m_parsed(false), m_parse_error(false) {} MethodName(const ConstString &s) : m_full(s), m_basename(), m_context(), m_arguments(), m_qualifiers(), - m_parsed(false), m_parse_error(false) {} + m_type(eTypeInvalid), m_parsed(false), m_parse_error(false) {} void Clear(); @@ -44,9 +51,13 @@ public: Parse(); if (m_parse_error) return false; + if (m_type == eTypeInvalid) + return false; return (bool)m_full; } + Type GetType() const { return m_type; } + const ConstString &GetFullName() const { return m_full; } std::string GetScopeQualifiedName(); @@ -61,7 +72,6 @@ public: protected: void Parse(); - bool TrySimplifiedParse(); ConstString m_full; // Full name: // "lldb::SBTarget::GetBreakpointAtIndex(unsigned int) @@ -70,6 +80,7 @@ public: llvm::StringRef m_context; // Decl context: "lldb::SBTarget" llvm::StringRef m_arguments; // Arguments: "(unsigned int)" llvm::StringRef m_qualifiers; // Qualifiers: "const" + Type m_type; bool m_parsed; bool m_parse_error; }; @@ -110,7 +121,7 @@ public: // If the name is a lone C identifier (e.g. C) or a qualified C identifier // (e.g. A::B::C) it will return true, // and identifier will be the identifier (C and C respectively) and the - // context will be "" and "A::B" respectively. + // context will be "" and "A::B::" respectively. // If the name fails the heuristic matching for a qualified or unqualified // C/C++ identifier, then it will return false // and identifier and context will be unchanged. |