diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index f1b68d426..c251a51b8 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -6037,7 +6037,7 @@ void SymbolDatabase::setValueType(Token* tok, const Variable& var, SourceLocatio valuetype.setDebugPath(tok, loc); if (var.nameToken()) valuetype.bits = var.nameToken()->bits(); - valuetype.pointer = var.dimensions().size(); + valuetype.pointer = (var.valueType() && var.valueType()->container) ? 0 : var.dimensions().size(); valuetype.typeScope = var.typeScope(); if (var.valueType()) { valuetype.container = var.valueType()->container; diff --git a/test/testother.cpp b/test/testother.cpp index c0c4e80fc..d26e5a318 100644 --- a/test/testother.cpp +++ b/test/testother.cpp @@ -3347,6 +3347,13 @@ private: ASSERT_EQUALS("[test.cpp:1]: (style) Parameter 'p0' can be declared as pointer to const\n" "[test.cpp:1]: (style) Parameter 'p1' can be declared as pointer to const\n", errout.str()); + + check("void f() {\n" + " std::array a{}, b{};\n" + " const std::array& r = a;\n" + " if (r == b) {}\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); } void switchRedundantAssignmentTest() {