Clang import: better handling of CXXMethodDecl in getSpelling
This commit is contained in:
parent
43ce1607c7
commit
788abfa8a4
|
@ -347,7 +347,7 @@ std::string clangimport::AstNode::getSpelling() const
|
||||||
}
|
}
|
||||||
|
|
||||||
int typeIndex = mExtTokens.size() - 1;
|
int typeIndex = mExtTokens.size() - 1;
|
||||||
if (nodeType == FunctionDecl || nodeType == CXXConstructorDecl) {
|
if (nodeType == FunctionDecl || nodeType == CXXConstructorDecl || nodeType == CXXMethodDecl) {
|
||||||
while (typeIndex >= 0 && mExtTokens[typeIndex][0] != '\'')
|
while (typeIndex >= 0 && mExtTokens[typeIndex][0] != '\'')
|
||||||
typeIndex--;
|
typeIndex--;
|
||||||
if (typeIndex <= 0)
|
if (typeIndex <= 0)
|
||||||
|
|
|
@ -56,6 +56,7 @@ private:
|
||||||
TEST_CASE(cxxMethodDecl1);
|
TEST_CASE(cxxMethodDecl1);
|
||||||
TEST_CASE(cxxMethodDecl2);
|
TEST_CASE(cxxMethodDecl2);
|
||||||
TEST_CASE(cxxMethodDecl3);
|
TEST_CASE(cxxMethodDecl3);
|
||||||
|
TEST_CASE(cxxMethodDecl4);
|
||||||
TEST_CASE(cxxNewExpr1);
|
TEST_CASE(cxxNewExpr1);
|
||||||
TEST_CASE(cxxNewExpr2);
|
TEST_CASE(cxxNewExpr2);
|
||||||
TEST_CASE(cxxNullPtrLiteralExpr);
|
TEST_CASE(cxxNullPtrLiteralExpr);
|
||||||
|
@ -508,6 +509,20 @@ private:
|
||||||
ASSERT_EQUALS("class Fred { void foo ( ) ; } ; void Fred :: foo ( ) { }", parse(clang));
|
ASSERT_EQUALS("class Fred { void foo ( ) ; } ; void Fred :: foo ( ) { }", parse(clang));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cxxMethodDecl4() {
|
||||||
|
const char clang[] = "|-ClassTemplateSpecializationDecl 0x15d82f8 <line:7:3, line:18:3> line:8:12 struct char_traits definition\n"
|
||||||
|
"| |-TemplateArgument type 'char'\n"
|
||||||
|
"| | `-BuiltinType 0x15984c0 'char'\n"
|
||||||
|
"| |-CXXRecordDecl 0x15d8520 <col:5, col:12> col:12 implicit struct char_traits\n"
|
||||||
|
"| |-TypedefDecl 0x15d85c0 <line:10:7, col:20> col:20 referenced char_type 'char'\n"
|
||||||
|
"| | `-BuiltinType 0x15984c0 'char'\n"
|
||||||
|
"| |-CXXMethodDecl 0x15d8738 <line:12:7, line:16:7> line:13:7 move 'char *(char *)' static\n"
|
||||||
|
"| | |-ParmVarDecl 0x15d8630 <col:12, col:18> col:18 used __s1 'char *'\n"
|
||||||
|
"| | `-CompoundStmt 0x15d88e8 <line:14:7, line:16:7>\n";
|
||||||
|
ASSERT_EQUALS("struct char_traits<char> { static char * move ( char * __s1@1 ) { } } ;",
|
||||||
|
parse(clang));
|
||||||
|
}
|
||||||
|
|
||||||
void cxxNewExpr1() {
|
void cxxNewExpr1() {
|
||||||
const char clang[] = "|-VarDecl 0x3a97680 <1.cpp:2:1, col:14> col:6 i 'int *' cinit\n"
|
const char clang[] = "|-VarDecl 0x3a97680 <1.cpp:2:1, col:14> col:6 i 'int *' cinit\n"
|
||||||
"| `-CXXNewExpr 0x3a97d18 <col:10, col:14> 'int *' Function 0x3a97778 'operator new' 'void *(unsigned long)'\n"
|
"| `-CXXNewExpr 0x3a97d18 <col:10, col:14> 'int *' Function 0x3a97778 'operator new' 'void *(unsigned long)'\n"
|
||||||
|
|
Loading…
Reference in New Issue