@@ -137,7 +137,9 @@ class TestSymbolDatabase : public TestFixture {
137137 TEST_CASE (test_isVariableDeclarationIdentifiesDeclarationWithMultipleIndirection);
138138 TEST_CASE (test_isVariableDeclarationIdentifiesArray);
139139 TEST_CASE (test_isVariableDeclarationIdentifiesPointerArray);
140- TEST_CASE (test_isVariableDeclarationIdentifiesOfArrayPointers);
140+ TEST_CASE (test_isVariableDeclarationIdentifiesOfArrayPointers1);
141+ TEST_CASE (test_isVariableDeclarationIdentifiesOfArrayPointers2);
142+ TEST_CASE (test_isVariableDeclarationIdentifiesOfArrayPointers3);
141143 TEST_CASE (test_isVariableDeclarationIdentifiesArrayOfFunctionPointers);
142144 TEST_CASE (isVariableDeclarationIdentifiesTemplatedPointerVariable);
143145 TEST_CASE (isVariableDeclarationIdentifiesTemplatedPointerToPointerVariable);
@@ -872,7 +874,7 @@ class TestSymbolDatabase : public TestFixture {
872874 ASSERT (false == v.isReference ());
873875 }
874876
875- void test_isVariableDeclarationIdentifiesOfArrayPointers () {
877+ void test_isVariableDeclarationIdentifiesOfArrayPointers1 () {
876878 reset ();
877879 GET_SYMBOL_DB (" A (*a)[5];" );
878880 const bool result = db->scopeList .front ().isVariableDeclaration (tokenizer.tokens (), vartok, typetok);
@@ -887,6 +889,36 @@ class TestSymbolDatabase : public TestFixture {
887889 ASSERT (false == v.isReference ());
888890 }
889891
892+ void test_isVariableDeclarationIdentifiesOfArrayPointers2 () {
893+ reset ();
894+ GET_SYMBOL_DB (" A (*const a)[5];" );
895+ const bool result = db->scopeList .front ().isVariableDeclaration (tokenizer.tokens (), vartok, typetok);
896+ ASSERT_EQUALS (true , result);
897+ ASSERT_EQUALS (" a" , vartok->str ());
898+ ASSERT_EQUALS (" A" , typetok->str ());
899+ Variable v (vartok, typetok, vartok->previous (), 0 , AccessControl::Public, nullptr , nullptr , &settings1);
900+ ASSERT (true == v.isPointer ());
901+ ASSERT (false == v.isArray ());
902+ ASSERT (true == v.isPointerToArray ());
903+ ASSERT (false == v.isPointerArray ());
904+ ASSERT (false == v.isReference ());
905+ }
906+
907+ void test_isVariableDeclarationIdentifiesOfArrayPointers3 () {
908+ reset ();
909+ GET_SYMBOL_DB (" A (** a)[5];" );
910+ const bool result = db->scopeList .front ().isVariableDeclaration (tokenizer.tokens (), vartok, typetok);
911+ ASSERT_EQUALS (true , result);
912+ ASSERT_EQUALS (" a" , vartok->str ());
913+ ASSERT_EQUALS (" A" , typetok->str ());
914+ Variable v (vartok, typetok, vartok->previous (), 0 , AccessControl::Public, nullptr , nullptr , &settings1);
915+ ASSERT (true == v.isPointer ());
916+ ASSERT (false == v.isArray ());
917+ ASSERT (true == v.isPointerToArray ());
918+ ASSERT (false == v.isPointerArray ());
919+ ASSERT (false == v.isReference ());
920+ }
921+
890922 void test_isVariableDeclarationIdentifiesArrayOfFunctionPointers () {
891923 reset ();
892924 GET_SYMBOL_DB (" int (*a[])(int) = { g };" ); // #11596
0 commit comments