From 54141f2e7f2180e42f260643f6e7660b24d8d453 Mon Sep 17 00:00:00 2001 From: Robert Reif Date: Wed, 27 Jul 2011 11:23:22 -0400 Subject: [PATCH] fix #2943 (Symbol database: Wrong parsing of std::vector as base class.) --- lib/symboldatabase.cpp | 3 +++ test/testclass.cpp | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index 6b109a1cd..8bb492fa3 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -1257,6 +1257,9 @@ const Token *SymbolDatabase::initBaseInfo(Scope *scope, const Token *tok) // add unhandled templates if (tok2->next()->str() == "<") { + tok2 = tok2->next(); + base.name += tok2->str(); + int level1 = 1; while (tok2->next()) { diff --git a/test/testclass.cpp b/test/testclass.cpp index 5e9252eab..216f19fa3 100644 --- a/test/testclass.cpp +++ b/test/testclass.cpp @@ -175,6 +175,7 @@ private: TEST_CASE(const47); // ticket #2670 TEST_CASE(const48); // ticket #2672 TEST_CASE(const49); // ticket #2795 + TEST_CASE(const50); // ticket #2943 TEST_CASE(assigningPointerToPointerIsNotAConstOperation); TEST_CASE(assigningArrayElementIsNotAConstOperation); TEST_CASE(constoperator1); // operator< can often be const @@ -5551,6 +5552,23 @@ private: ASSERT_EQUALS("", errout.str()); } + void const50() // ticket 2943 + { + checkConst("class Altren\n" + "{\n" + " class SubClass : public std::vector\n" + " {\n" + " };\n" + "};\n" + "void _setAlign()\n" + "{\n" + " if (mTileSize.height > 0) return;\n" + " if (mEmptyView) return;\n" + "}\n"); + + ASSERT_EQUALS("", errout.str()); + } + void assigningPointerToPointerIsNotAConstOperation() { checkConst("struct s\n"