From 2a5ba83292a05c2175f0f5534b540c3594b719e0 Mon Sep 17 00:00:00 2001 From: Oleksandr Labetskyi Date: Sun, 11 Aug 2024 15:23:22 +0300 Subject: [PATCH] Tests --- test/testsymboldatabase.cpp | 17 +++++++++++++++++ test/testunusedvar.cpp | 1 - 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/test/testsymboldatabase.cpp b/test/testsymboldatabase.cpp index 5a69a402fbe..7f5bb0231f5 100644 --- a/test/testsymboldatabase.cpp +++ b/test/testsymboldatabase.cpp @@ -221,6 +221,7 @@ class TestSymbolDatabase : public TestFixture { TEST_CASE(VariableValueType3); TEST_CASE(VariableValueType4); // smart pointer type TEST_CASE(VariableValueType5); // smart pointer type + TEST_CASE(VariableValueType6); // smart pointer type TEST_CASE(VariableValueTypeReferences); TEST_CASE(VariableValueTypeTemplate); @@ -1264,6 +1265,22 @@ class TestSymbolDatabase : public TestFixture { ASSERT(p->valueType()->pointer == 1); } + void VariableValueType6() { + GET_SYMBOL_DB("struct Data{};\n" + "void foo(std::shared_ptr* p) { std::unique_ptr data = std::unique_ptr(new Data); }"); + + const Token * check{nullptr}; + for (const Token * tok = tokenizer.tokens(); tok; tok = tok->next()) { + if (Token::Match(tok, "> ( new")) { + check = tok->next(); + break; + } + } + ASSERT(check); + ASSERT(check->valueType()); + ASSERT(check->valueType()->smartPointerTypeToken); + } + void VariableValueTypeReferences() { { GET_SYMBOL_DB("void foo(int x) {}\n"); diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index d8efbd702d4..e5d0b6ad99f 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -6552,7 +6552,6 @@ class TestUnusedVar : public TestFixture { " auto a2 = std::unique_ptr(new A());\n" "}\n"); ASSERT_EQUALS("[test.cpp:7]: (style) Variable 'a' is assigned a value that is never used.\n" - "[test.cpp:8]: (style) Variable 'a2' is assigned a value that is never used.\n" "[test.cpp:8]: (style) Variable 'a2' is assigned a value that is never used.\n", // duplicate errout_str());