From 0adf09c5077402f3d158fb877a704aa243995641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Tue, 29 Dec 2020 21:10:34 +0100 Subject: [PATCH] ClangImport; Fixed output for anonymous enum --- lib/clangimport.cpp | 3 +++ test/testclangimport.cpp | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/clangimport.cpp b/lib/clangimport.cpp index e9a08e244..bf8165c71 100644 --- a/lib/clangimport.cpp +++ b/lib/clangimport.cpp @@ -497,6 +497,9 @@ const ::Type * clangimport::AstNode::addTypeTokens(TokenList *tokenList, const s return addTypeTokens(tokenList, str.substr(0, str.find("\':\'") + 1), scope); } + if (str.compare(0, 16, "'enum (anonymous") == 0) + return nullptr; + std::string type; if (str.find(" (") != std::string::npos) { if (str.find("<") != std::string::npos) diff --git a/test/testclangimport.cpp b/test/testclangimport.cpp index f280de341..236518187 100644 --- a/test/testclangimport.cpp +++ b/test/testclangimport.cpp @@ -74,6 +74,7 @@ private: TEST_CASE(enumDecl1); TEST_CASE(enumDecl2); TEST_CASE(enumDecl3); + TEST_CASE(enumDecl4); TEST_CASE(forStmt); TEST_CASE(funcdecl1); TEST_CASE(funcdecl2); @@ -690,6 +691,16 @@ private: ASSERT_EQUALS("enum __syntax_option { _S_polynomial , _S_syntax_last }", parse(clang)); } + void enumDecl4() { + const char clang[] = "|-EnumDecl 0xace1f8 col:1\n" + "| |-EnumConstantDecl 0xace2c8 col:7 A '(anonymous enum at e1.cpp:3:1)'\n" + "| |-EnumConstantDecl 0xace318 col:16 B '(anonymous enum at e1.cpp:3:1)'\n" + "| `-EnumConstantDecl 0xace3b8 col:46 referenced C '(anonymous enum at e1.cpp:3:1)'\n" + "`-VarDecl 0xace470 col:53 x 'enum (anonymous enum at e1.cpp:3:1)':'(anonymous enum at e1.cpp:3:1)' cinit\n" + " `-DeclRefExpr 0xace520 '(anonymous enum at e1.cpp:3:1)' EnumConstant 0xace3b8 'C' '(anonymous enum at e1.cpp:3:1)'"; + ASSERT_EQUALS("enum { A , B , C } x@1 = C ;", parse(clang)); + } + void forStmt() { const char clang[] = "`-FunctionDecl 0x2f93ae0 <1.c:1:1, col:56> col:5 main 'int ()'\n" " `-CompoundStmt 0x2f93dc0 \n"