From 372f262204bcd59117cba5872bb4da59a4e6ef13 Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Fri, 6 Nov 2015 14:50:25 +0100 Subject: [PATCH] data: don't parse lambda calls to avoid subnodes within functions --- bin/app/data/src/nesting/nest.cpp | 16 + bin/test/data/log/test_log.txt | 308 ------------------ .../controller/helper/SnippetMerger.h | 2 +- src/lib/data/parser/cxx/ASTBodyVisitor.cpp | 27 +- src/lib/data/parser/cxx/ASTVisitor.cpp | 14 - src/test/CxxParserTestSuite.h | 33 ++ 6 files changed, 73 insertions(+), 327 deletions(-) create mode 100644 bin/app/data/src/nesting/nest.cpp diff --git a/bin/app/data/src/nesting/nest.cpp b/bin/app/data/src/nesting/nest.cpp new file mode 100644 index 00000000..4834d995 --- /dev/null +++ b/bin/app/data/src/nesting/nest.cpp @@ -0,0 +1,16 @@ +void lambdaCaller() +{ + [](){}(); +} + +void lambdaSuperCaller() +{ + lambdaCaller(); +} + +void lambdaMetaCaller() +{ + [](){ + lambdaCaller(); + }(); +} diff --git a/bin/test/data/log/test_log.txt b/bin/test/data/log/test_log.txt index 81fb4be1..ef77bdfd 100644 --- a/bin/test/data/log/test_log.txt +++ b/bin/test/data/log/test_log.txt @@ -1,312 +1,4 @@ ConfigManager.cpp WARNING: value path/to/nowhere is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml -ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. Token.cpp ERROR: Location Id was not referenced by this Token. Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined Node.cpp WARNING: Cannot change NodeType after it was already set from namespace to class diff --git a/src/lib/component/controller/helper/SnippetMerger.h b/src/lib/component/controller/helper/SnippetMerger.h index 0da917a7..1ead142f 100644 --- a/src/lib/component/controller/helper/SnippetMerger.h +++ b/src/lib/component/controller/helper/SnippetMerger.h @@ -19,7 +19,7 @@ public: template class ContainerType> static ContainerType> mergeAdjacent(ContainerType> ranges, int rowDifference = 1) { - for (size_t i = 0; i < ranges.size() - 1; i++) + for (size_t i = 0; i + 1 < ranges.size(); i++) { const Range first = ranges[i]; const Range second = ranges[i + 1]; diff --git a/src/lib/data/parser/cxx/ASTBodyVisitor.cpp b/src/lib/data/parser/cxx/ASTBodyVisitor.cpp index 418e4373..73009071 100644 --- a/src/lib/data/parser/cxx/ASTBodyVisitor.cpp +++ b/src/lib/data/parser/cxx/ASTBodyVisitor.cpp @@ -1,5 +1,7 @@ #include "data/parser/cxx/ASTBodyVisitor.h" +#include "clang/AST/DeclCXX.h" + ASTBodyVisitor::ASTBodyVisitor(ASTBodyVisitorClient* client, clang::FunctionDecl* functionDecl) : m_client(client) , m_functionDecl(functionDecl) @@ -36,13 +38,30 @@ void ASTBodyVisitor::VisitChildren(clang::Stmt* stmt) void ASTBodyVisitor::VisitCallExpr(clang::CallExpr* expr) { - if (m_functionDecl) + bool ignore = false; + + // check if lambda call + if (clang::isa(expr)) { - m_client->VisitCallExprInDeclBody(m_functionDecl, expr); + clang::Decl* calleeDecl = expr->getCalleeDecl(); + + if (clang::isa(calleeDecl)) + { + clang::CXXRecordDecl* recordDecl = clang::dyn_cast(calleeDecl)->getParent(); + ignore = recordDecl->isLambda(); + } } - else + + if (!ignore) { - m_client->VisitCallExprInDeclBody(m_varDecl, expr); + if (m_functionDecl) + { + m_client->VisitCallExprInDeclBody(m_functionDecl, expr); + } + else + { + m_client->VisitCallExprInDeclBody(m_varDecl, expr); + } } VisitStmt(expr); diff --git a/src/lib/data/parser/cxx/ASTVisitor.cpp b/src/lib/data/parser/cxx/ASTVisitor.cpp index c717731d..1ec0cc17 100644 --- a/src/lib/data/parser/cxx/ASTVisitor.cpp +++ b/src/lib/data/parser/cxx/ASTVisitor.cpp @@ -543,20 +543,6 @@ bool ASTVisitor::VisitFunctionTemplateDecl(clang::FunctionTemplateDecl *declarat void ASTVisitor::VisitCallExprInDeclBody(clang::FunctionDecl* decl, clang::CallExpr* expr) { - // if (clang::FunctionDecl *CalleeDecl = CE->getDirectCallee()) - // { - // return CalleeDecl; - // } - - // clang::Expr *CEE = CE->getCallee()->IgnoreParenImpCasts(); - // if (clang::BlockExpr *Block = clang::dyn_cast(CEE)) - // { - // NumBlockCallEdges++; - // return Block->getBlockDecl(); - // } - - // return nullptr; - if (!expr->getDirectCallee()) { // TODO: Save error at location. diff --git a/src/test/CxxParserTestSuite.h b/src/test/CxxParserTestSuite.h index 53bb61e9..a74acb22 100644 --- a/src/test/CxxParserTestSuite.h +++ b/src/test/CxxParserTestSuite.h @@ -2449,6 +2449,39 @@ public: "A -> test typename T>::T <4:40 4:40>"); } + void test_cxx_parser_ignores_lambda_in_function() + { + std::shared_ptr client = parseCode( + "void lambdaCaller()\n" + "{\n" + " [](){}();\n" + "}\n" + ); + + TS_ASSERT_EQUALS(client->functions.size(), 1); + TS_ASSERT_EQUALS(client->functions[0], "void lambdaCaller() <1:1 <1:6 1:17> 4:1>"); + TS_ASSERT_EQUALS(client->calls.size(), 0); + } + + void test_cxx_parser_ignores_lambda_in_function_but_still_finds_call_within() + { + std::shared_ptr client = parseCode( + "void func() {}\n" + "void lambdaCaller()\n" + "{\n" + " []()\n" + " {\n" + " func();\n" + " }();\n" + "}\n" + ); + + TS_ASSERT_EQUALS(client->functions.size(), 2); + TS_ASSERT_EQUALS(client->functions[0], "void func() <1:1 <1:6 1:9> 1:14>"); + TS_ASSERT_EQUALS(client->functions[1], "void lambdaCaller() <2:1 <2:6 2:17> 8:1>"); + TS_ASSERT_EQUALS(client->calls.size(), 1); + TS_ASSERT_EQUALS(client->calls[0], "void lambdaCaller() -> void func() <6:3 6:8>"); + } void test_cxx_parser_parses_multiple_files() {