Skip to content

Commit a0c4e20

Browse files
Add tests for #10587, #11539 (#5197)
1 parent f4030c4 commit a0c4e20

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

test/testunusedvar.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1933,6 +1933,31 @@ class TestUnusedVar : public TestFixture {
19331933
" return v.begin()->b;\n"
19341934
"}\n");
19351935
ASSERT_EQUALS("", errout.str());
1936+
1937+
checkStructMemberUsage("int f(int s) {\n" // #10587
1938+
" const struct S { int a, b; } Map[] = { { 0, 1 }, { 2, 3 } };\n"
1939+
" auto it = std::find_if(std::begin(Map), std::end(Map), [&](const auto& m) { return s == m.a; });\n"
1940+
" if (it != std::end(Map))\n"
1941+
" return it->b;\n"
1942+
" return 0;\n"
1943+
"}\n");
1944+
ASSERT_EQUALS("", errout.str());
1945+
1946+
checkStructMemberUsage("int f(int s) {\n"
1947+
" const struct S { int a, b; } Map[] = { { 0, 1 }, { 2, 3 } };\n"
1948+
" for (auto&& m : Map)\n"
1949+
" if (m.a == s)\n"
1950+
" return m.b;\n"
1951+
" return 0;\n"
1952+
"}\n");
1953+
ASSERT_EQUALS("", errout.str());
1954+
1955+
checkStructMemberUsage("struct R { bool b{ false }; };\n" // #11539
1956+
"void f(std::optional<R> r) {\n"
1957+
" if (r.has_value())\n"
1958+
" std::cout << r->b;\n"
1959+
"}\n");
1960+
ASSERT_EQUALS("", errout.str());
19361961
}
19371962

19381963
void structmember_macro() {

0 commit comments

Comments
 (0)