diff --git a/bin/test/data/log/test_log.txt b/bin/test/data/log/test_log.txt index 40aff14f..15e2f844 100644 --- a/bin/test/data/log/test_log.txt +++ b/bin/test/data/log/test_log.txt @@ -50,3 +50,262 @@ ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path i ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +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 +Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined +Edge.cpp ERROR: Nodes are not plain copies. +Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge use can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge use can't go from Node undefined to Node undefined +Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined +Settings.cpp WARNING: File for Settings not found: data/SettingsTestSuite/wrong_settings.xml +ConfigManager.cpp WARNING: value Bool is not present in config. +ConfigManager.cpp WARNING: value Int is not present in config. +ConfigManager.cpp WARNING: value Float is not present in config. +ConfigManager.cpp WARNING: value String is not present in config. +Settings.cpp WARNING: File for Settings not found: data/SettingsTestSuite/wrong_settings.xml +ConfigManager.cpp WARNING: value Bool is not present in config. +ConfigManager.cpp WARNING: value Int is not present in config. +ConfigManager.cpp WARNING: value Float is not present in config. +ConfigManager.cpp WARNING: value String is not present in config. +ConfigManager.cpp WARNING: value Bool is not present in config. +ConfigManager.cpp WARNING: value Int is not present in config. +ConfigManager.cpp WARNING: value Float is not present in config. +ConfigManager.cpp WARNING: value String is not present in config. +ConfigManager.cpp WARNING: value NewBool is not present in config. +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: typedef: type -> int +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: class: Class +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: struct: Struct +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: global: Global +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: global: Global +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: field: m_field +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: field: Struct::m_field +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: function: isTrue +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: method: isMethod +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: method: Class::isMethod +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: namespace: utility +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: enum: Category +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: enum: Class::Category +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: enum constant: VALUE +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: class: ClassA +Storage.cpp INFO: class: ClassB +Storage.cpp INFO: inheritance: ClassB : ClassA +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: struct: StructA +Storage.cpp INFO: struct: StructB +Storage.cpp INFO: inheritance: StructB : StructA +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: method: A::isMethod(bool) +Storage.cpp INFO: method: B::isMethod(bool) +Storage.cpp INFO: override: A::isMethod(bool) -> B::isMethod(bool) +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: function: isTrue +Storage.cpp INFO: function: func +Storage.cpp INFO: call: isTrue -> func +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: global: global +Storage.cpp INFO: function: isTrue +Storage.cpp INFO: call: global -> isTrue +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: function: isTrue +Storage.cpp INFO: field: Foo::m_field +Storage.cpp INFO: field usage: isTrue -> Foo::m_field +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: function: isTrue +Storage.cpp INFO: global: global +Storage.cpp INFO: global usage: isTrue -> global +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: function: isTrue +Storage.cpp INFO: struct: Struct +Storage.cpp INFO: type usage: isTrue -> Struct +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: file: file.h < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.h +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.cpp +Storage.cpp INFO: file: file.h < 0:0 0:0> +TextAccess.cpp ERROR: Could not open file file.h +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +Storage.cpp INFO: include: file.h +Storage.cpp INFO: file: file.cpp < 0:0 0:0> +Storage.cpp INFO: file: file.h < 0:0 0:0> +TextAccess.cpp WARNING: Index 'firstLine' has to be lower or equal index 'lastLine', is 3 > 2 +TextAccess.cpp WARNING: Tried to access index 10. Maximum index is 8 +TextAccess.cpp WARNING: Tried to access index 10. Maximum index is 8 +TextAccess.cpp WARNING: Line numbers start with one, is 0 +TextAccess.cpp WARNING: Line numbers start with one, is 0 +TokenLocationCollection.cpp ERROR: Can't create TokenLocation with wrong boundaries. +TokenLocationCollection.cpp ERROR: Can't create TokenLocation with wrong boundaries. diff --git a/src/lib_parser/data/parser/cxx/ASTVisitor.cpp b/src/lib_parser/data/parser/cxx/ASTVisitor.cpp index 35bc4454..d00563cb 100644 --- a/src/lib_parser/data/parser/cxx/ASTVisitor.cpp +++ b/src/lib_parser/data/parser/cxx/ASTVisitor.cpp @@ -533,55 +533,8 @@ void ASTVisitor::VisitDeclRefExprInDeclBody(clang::DeclaratorDecl* decl, clang:: void ASTVisitor::VisitCXXConstructExprInDeclBody(clang::FunctionDecl* decl, clang::CXXConstructExpr* expr) { - // TODO: refactor this code! - std::string caller = decl->getNameAsString(); - std::string callee = expr->getConstructor()->getNameAsString(); - clang::SourceRange sourceRange = expr->getSourceRange(); -// expr->getParenOrBraceRange(); // is null when no parens found (for implicit constructor calls; maybe we will have to use this in the future) -// expr->getNumArgs(); // and maybe we will need this one, too.. for same reasons as above. - - const clang::SourceManager& sourceManager = m_context->getSourceManager(); - const clang::PresumedLoc& presumedBegin = sourceManager.getPresumedLoc(sourceRange.getBegin(), false); - const clang::PresumedLoc& presumedEnd = sourceManager.getPresumedLoc(sourceRange.getEnd(), false); - int endLocationOffset = 0; - - bool oneCharacterLocation = ( - presumedBegin.getLine() == presumedEnd.getLine() && presumedBegin.getColumn() == presumedEnd.getColumn() - ); - if (oneCharacterLocation) // get the exact range of name of declard variable - { - clang::ParentMap pm(decl->getBody()); - clang::Stmt* parentStmt = pm.getParent(expr); - if (parentStmt && parentStmt->getStmtClass() == clang::Stmt::DeclStmtClass) - { - clang::DeclStmt* declStmt = clang::dyn_cast(parentStmt); - if (declStmt->isSingleDecl()) - { - clang::Decl* decl = declStmt->getSingleDecl(); - if (clang::isa(decl)) - { - clang::NamedDecl* namedDecl = clang::dyn_cast(decl); - int variableNameLength = namedDecl->getName().size(); - endLocationOffset = variableNameLength - 1; - } - } - else - { - // TODO: maybe we should handle this case... it occurs when parsing a for-each loop - } - } - } - - ParseLocation location( - presumedBegin.getFilename(), - presumedBegin.getLine(), - presumedBegin.getColumn(), - presumedEnd.getLine(), - presumedEnd.getColumn() + endLocationOffset - ); - m_client->onCallParsed( - location, + getParseLocationForTokensInRange(expr->getSourceRange()), getParseFunction(decl), getParseFunction(expr->getConstructor()) ); @@ -590,7 +543,7 @@ void ASTVisitor::VisitCXXConstructExprInDeclBody(clang::FunctionDecl* decl, clan void ASTVisitor::VisitCXXConstructExprInDeclBody(clang::DeclaratorDecl* decl, clang::CXXConstructExpr* expr) { m_client->onCallParsed( - getParseLocation(expr->getSourceRange()), + getParseLocationForTokensInRange(expr->getSourceRange()), getParseVariable(decl), getParseFunction(expr->getConstructor()) ); diff --git a/src/test/CxxParserTestSuite.h b/src/test/CxxParserTestSuite.h index 5dc02c02..0e4774c0 100644 --- a/src/test/CxxParserTestSuite.h +++ b/src/test/CxxParserTestSuite.h @@ -851,7 +851,7 @@ public: ); TS_ASSERT_EQUALS(client->calls.size(), 1); - TS_ASSERT_EQUALS(client->calls[0], "void App::App() -> void Item::Item() <7:2 7:2>"); + TS_ASSERT_EQUALS(client->calls[0], "void App::App() -> void Item::Item() <7:2 7:4>"); } void test_cxx_parser_finds_constructor_call_of_field_in_initialization_list() @@ -931,7 +931,7 @@ public: ); TS_ASSERT_EQUALS(client->calls.size(), 1); - TS_ASSERT_EQUALS(client->calls[0], "app -> void App::App() <6:5 6:5>"); + TS_ASSERT_EQUALS(client->calls[0], "app -> void App::App() <6:5 6:7>"); } void test_cxx_parser_finds_global_function_call()