MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / stlarray3

Method stlarray3

test/testsymboldatabase.cpp:702–751  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

700 }
701
702 void stlarray3() {
703 GET_SYMBOL_DB("std::array<int, 4> a;\n"
704 "std::array<int, 4> b[2];\n"
705 "const std::array<int, 4>& r = a;\n");
706 ASSERT(db != nullptr);
707
708 ASSERT_EQUALS(4, db->variableList().size()); // the first one is not used
709 auto it = db->variableList().begin() + 1;
710
711 ASSERT((*it)->isArray());
712 ASSERT(!(*it)->isPointer());
713 ASSERT(!(*it)->isReference());
714 ASSERT_EQUALS(1U, (*it)->dimensions().size());
715 ASSERT_EQUALS(4U, (*it)->dimension(0));
716 const ValueType* vt = (*it)->valueType();
717 ASSERT(vt);
718 ASSERT(vt->container);
719 ASSERT_EQUALS(vt->pointer, 0);
720 const Token* tok = (*it)->nameToken();
721 ASSERT(tok && (vt = tok->valueType()));
722 ASSERT_EQUALS(vt->pointer, 0);
723
724 ++it;
725 ASSERT((*it)->isArray());
726 ASSERT(!(*it)->isPointer());
727 ASSERT(!(*it)->isReference());
728 ASSERT_EQUALS(1U, (*it)->dimensions().size());
729 ASSERT_EQUALS(4U, (*it)->dimension(0));
730 vt = (*it)->valueType();
731 ASSERT_EQUALS(vt->pointer, 0);
732 tok = (*it)->nameToken();
733 ASSERT(tok && (vt = tok->valueType()));
734 ASSERT_EQUALS(vt->pointer, 1);
735
736 ++it;
737 ASSERT((*it)->isArray());
738 ASSERT(!(*it)->isPointer());
739 ASSERT((*it)->isReference());
740 ASSERT((*it)->isConst());
741 ASSERT_EQUALS(1U, (*it)->dimensions().size());
742 ASSERT_EQUALS(4U, (*it)->dimension(0));
743 vt = (*it)->valueType();
744 ASSERT_EQUALS(vt->pointer, 0);
745 ASSERT(vt->reference == Reference::LValue);
746 tok = (*it)->nameToken();
747 ASSERT(tok && (vt = tok->valueType()));
748 ASSERT_EQUALS(vt->pointer, 0);
749 ASSERT_EQUALS(vt->constness, 1);
750 ASSERT(vt->reference == Reference::LValue);
751 }
752
753 void test_isVariableDeclarationCanHandleNull() {
754 reset();

Callers

nothing calls this directly

Calls 5

isArrayMethod · 0.80
isConstMethod · 0.80
sizeMethod · 0.45
beginMethod · 0.45
nameTokenMethod · 0.45

Tested by

no test coverage detected