Clang import; CaseStmt
This commit is contained in:
parent
55f88f21a3
commit
3ccd369cf5
|
@ -30,6 +30,7 @@ static const std::string ArraySubscriptExpr = "ArraySubscriptExpr";
|
|||
static const std::string BinaryOperator = "BinaryOperator";
|
||||
static const std::string BreakStmt = "BreakStmt";
|
||||
static const std::string CallExpr = "CallExpr";
|
||||
static const std::string CaseStmt = "CaseStmt";
|
||||
static const std::string CharacterLiteral = "CharacterLiteral";
|
||||
static const std::string ClassTemplateDecl = "ClassTemplateDecl";
|
||||
static const std::string ClassTemplateSpecializationDecl = "ClassTemplateSpecializationDecl";
|
||||
|
@ -511,6 +512,13 @@ Token *clangimport::AstNode::createTokens(TokenList *tokenList)
|
|||
}
|
||||
if (nodeType == CallExpr)
|
||||
return createTokensCall(tokenList);
|
||||
if (nodeType == CaseStmt) {
|
||||
addtoken(tokenList, "case");
|
||||
children[0]->createTokens(tokenList);
|
||||
addtoken(tokenList, ":");
|
||||
children[2]->createTokens(tokenList);
|
||||
return nullptr;
|
||||
}
|
||||
if (nodeType == ClassTemplateDecl) {
|
||||
for (AstNodePtr child: children) {
|
||||
if (child->nodeType == ClassTemplateSpecializationDecl)
|
||||
|
|
|
@ -31,6 +31,7 @@ public:
|
|||
private:
|
||||
void run() OVERRIDE {
|
||||
TEST_CASE(breakStmt);
|
||||
TEST_CASE(caseStmt1);
|
||||
TEST_CASE(characterLiteral);
|
||||
TEST_CASE(class1);
|
||||
TEST_CASE(classTemplateDecl1);
|
||||
|
@ -103,6 +104,36 @@ private:
|
|||
ASSERT_EQUALS("void foo ( ) { while ( 0 ) { break ; } }", parse(clang));
|
||||
}
|
||||
|
||||
void caseStmt1() {
|
||||
const char clang[] = "`-FunctionDecl 0x2444b60 <1.c:1:1, line:8:1> line:1:6 foo 'void (int)'\n"
|
||||
" |-ParmVarDecl 0x2444aa0 <col:10, col:14> col:14 used x 'int'\n"
|
||||
" `-CompoundStmt 0x2444e00 <col:17, line:8:1>\n"
|
||||
" `-SwitchStmt 0x2444c88 <line:2:5, line:7:5>\n"
|
||||
" |-<<<NULL>>>\n"
|
||||
" |-<<<NULL>>>\n"
|
||||
" |-ImplicitCastExpr 0x2444c70 <line:2:13> 'int' <LValueToRValue>\n"
|
||||
" | `-DeclRefExpr 0x2444c48 <col:13> 'int' lvalue ParmVar 0x2444aa0 'x' 'int'\n"
|
||||
" `-CompoundStmt 0x2444de0 <col:16, line:7:5>\n"
|
||||
" |-CaseStmt 0x2444cd8 <line:3:9, line:5:15>\n"
|
||||
" | |-IntegerLiteral 0x2444cb8 <line:3:14> 'int' 16\n"
|
||||
" | |-<<<NULL>>>\n"
|
||||
" | `-CaseStmt 0x2444d30 <line:4:9, line:5:15>\n"
|
||||
" | |-IntegerLiteral 0x2444d10 <line:4:14> 'int' 32\n"
|
||||
" | |-<<<NULL>>>\n"
|
||||
" | `-BinaryOperator 0x2444db0 <line:5:13, col:15> 'int' '='\n"
|
||||
" | |-DeclRefExpr 0x2444d68 <col:13> 'int' lvalue ParmVar 0x2444aa0 'x' 'int'\n"
|
||||
" | `-IntegerLiteral 0x2444d90 <col:15> 'int' 123\n"
|
||||
" `-BreakStmt 0x2444dd8 <line:6:13>";
|
||||
ASSERT_EQUALS("void foo ( int x@1 ) {\n"
|
||||
"switch ( x@1 ) {\n"
|
||||
"case 16 :\n"
|
||||
"case 32 :\n"
|
||||
"x@1 = 123 ;\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"break ; } }", parse(clang));
|
||||
}
|
||||
|
||||
void characterLiteral() {
|
||||
const char clang[] = "`-VarDecl 0x3df8608 <a.cpp:1:1, col:10> col:6 c 'char' cinit\n"
|
||||
" `-CharacterLiteral 0x3df86a8 <col:10> 'char' 120";
|
||||
|
|
Loading…
Reference in New Issue