cppcheck/test
gerboengels 6a01fa9b70
#11134 Fix broken AST with (designated) initializers (#4550)
* Make control flow a bit easier, and more similar to previous code

Made similar to around line 790

* In a cpp11init, always parse only the corresponding } (#11134)

- _always_, because in some cases this was omitted (around line 790) or too strict (around line 860)
- _only_, and not following tokens which happen to be } as well (around line 1030)

* Fix unit tests: AST was incorrect, now is fixed

auto var{ {{},{}}, {} };

Old AST:
```
{
|-var
`-{
  `-,
    |-,
    | |-{
    | `-{
    `-{
```
New AST:
```
{
|-var
`-,
  |-{
  | `-,
  | | |-{
  | | `-{
  `-{
```
Compare the same example, but with `X{}` instead of just `{}`:
`auto var{ a{b{},c{}}, d{} };`
```
{
|-var
`-,
  |-{
  | |-a
  | `-,
  | | |-{
  | | | `-b
  | | `-{
  | | | `-c
  `-{
    `-d
```
This structure is similar to that of the new AST, not the old AST

* Fix unit tests: another AST was incorrect, now is fixed

Code: `auto var{{1,a::b{2,3}}, {4,a::b{5,6}}};`

Old AST:
```
{
|-var
`-{
  `-,
    |-,
    | |-1 'signed int'
    | `-{
    | | |-::
    | | | |-a
    | | | `-b
    | | `-,
    | | | |-2 'signed int'
    | | | `-3 'signed int'
    `-{
      `-,
        |-4 'signed int'
        `-{
          |-::
          | |-a
          | `-b
          `-,
            |-5 'signed int'
            `-6 'signed int'
```
New AST:
```
{
|-var
`-,
  |-{
  | `-,
  | | |-1 'signed int'
  | | `-{
  | | | |-::
  | | | | |-a
  | | | | `-b
  | | | `-,
  | | | | |-2 'signed int'
  | | | | `-3 'signed int'
  `-{
    `-,
      |-4 'signed int'
      `-{
        |-::
        | |-a
        | `-b
        `-,
          |-5 'signed int'
          `-6 'signed int'
```

* Fix unit tests: missing ; after class, resulting in incorrectly being marked as cpp11init

Because of the missing `;` after the class declaration, it was marked as a cpp11init block.
Which it isn't, and which now throws an exception

* Fix cpp11init to let unit tests pass again

The following unit tests failed on the newly introduced throws, because the code for these tests incorrectly marked some tokens as cpp11init:
TestVarID::varid_cpp11initialization
TestTokenizer::checkRefQualifiers

* Fix typo

* Improve check for void trailing return type

Observation: the only function body _not_ containing a semicolon, is a void function: something like
   auto make_zero(ini& i) -> void {
     while(--i > 0) {}
   }
Non-void function? Then it must return a value, and thus contain a semicolon, which is checked for a few lines later.

* Fix cpp11init with templated trailing return type

In the following example, vector was marked as cpp11init due to the mismatch of `%any% {`
auto f() -> std::vector<int> { return {}; }

I made the assumption that whenever "%any% {" matches, endtok must be set too.
If this assumtion doesn't hold (so "%any% {" matches, but endtok == nullptr), then the for-loop would search all the way to the end of stream. Which I guess was not the intention.

* Remove comments

Co-authored-by: Gerbo Engels <gerbo.engels@ortec-finance.com>
2022-10-19 07:25:15 +02:00
..
bug-hunting
cfg Fix #9653 FP leakReturnValNotUsed although (void) is specified (#4431) 2022-09-27 20:09:04 +02:00
cli
synthetic
testsuites
CMakeLists.txt some small cleanups and refactorings (#4488) 2022-09-24 11:59:13 +02:00
options.cpp
options.h
precompiled.h
redirect.h include all (internal non-generated) headers in clang-tidy checks (#4100) 2022-10-16 13:51:17 +02:00
test.cxx
test64bit.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testanalyzerinformation.cpp Fix sense of test (.analyzerinfo files get placed in wrong directory) (#4486) 2022-09-21 17:38:23 +02:00
testassert.cpp Fixed #9926 (False positive assertWithSideEffects, calling method that has no side effects) 2022-10-12 07:51:50 +02:00
testastutils.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testautovariables.cpp Added regression test for ticket #11091 - FP: Using object that is a temporary 2022-09-24 22:11:04 +02:00
testbool.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testboost.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testbufferoverrun.cpp Fix #11355 FN: arrayIndexOutOfBounds (#4555) 2022-10-18 07:24:24 +02:00
testcharvar.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testclangimport.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testclass.cpp Fix FP with std::array (#4497) 2022-09-23 20:18:49 +02:00
testcmdlineparser.cpp improved `TestCmdlineParser` (#4475) 2022-09-17 18:50:25 +02:00
testcondition.cpp Add test for #2490 (#4551) 2022-10-14 11:55:45 +02:00
testconstructors.cpp Add tests for #6504, #11177 (#4494) 2022-09-22 19:41:29 +02:00
testcppcheck.cpp enabled and fixed `readability-named-parameter` clang-tidy warnings (#4487) 2022-09-27 20:03:25 +02:00
testerrorlogger.cpp
testexceptionsafety.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testfilelister.cpp modernized `erase()` calls (#4530) 2022-10-02 07:13:31 +02:00
testfunctions.cpp Add tests for #1770, #10130 (#4519) 2022-09-29 12:33:34 +02:00
testgarbage.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testimportproject.cpp Fixed #11102 (False positive: unreadVariable when union in derived struct is used) 2022-10-11 20:47:07 +02:00
testincompletestatement.cpp Add tests for #6504, #11177 (#4494) 2022-09-22 19:41:29 +02:00
testinternal.cpp
testio.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testleakautovar.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testlibrary.cpp applied clang-tidy `misc-const-correctness` fixes for POD types, iterators and references (#4529) 2022-10-02 07:12:40 +02:00
testmathlib.cpp
testmemleak.cpp Fix leakNoVarFunctionCall FP (#4523) 2022-09-29 21:58:11 +02:00
testnullpointer.cpp Fix ctunullpointer FP (#4471) 2022-09-16 12:11:34 +02:00
testoptions.cpp
testother.cpp optimized `CheckOther::checkDuplicateBranch()` a bit (#4542) 2022-10-09 20:48:54 +02:00
testpath.cpp
testpathmatch.cpp
testplatform.cpp
testpostfixoperator.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testpreprocessor.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testprocessexecutor.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testrunner.cpp
testrunner.vcxproj
testrunner.vcxproj.filters
testsimplifytemplate.cpp #11134 Fix broken AST with (designated) initializers (#4550) 2022-10-19 07:25:15 +02:00
testsimplifytokens.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testsimplifytypedef.cpp #11134 Fix broken AST with (designated) initializers (#4550) 2022-10-19 07:25:15 +02:00
testsimplifyusing.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testsizeof.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
teststl.cpp Fix #10412 FN useStlAlgorithm with iterators (#4157) 2022-10-16 13:46:26 +02:00
teststring.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testsuite.cpp applied clang-tidy `misc-const-correctness` fixes for POD types, iterators and references (#4529) 2022-10-02 07:12:40 +02:00
testsuite.h
testsummaries.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testsuppressions.cpp Fix #10412 FN useStlAlgorithm with iterators (#4157) 2022-10-16 13:46:26 +02:00
testsymboldatabase.cpp Fix #10412 FN useStlAlgorithm with iterators (#4157) 2022-10-16 13:46:26 +02:00
testthreadexecutor.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testtimer.cpp
testtoken.cpp Fix #10412 FN useStlAlgorithm with iterators (#4157) 2022-10-16 13:46:26 +02:00
testtokenize.cpp #11134 Fix broken AST with (designated) initializers (#4550) 2022-10-19 07:25:15 +02:00
testtokenlist.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testtokenrange.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testtype.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testuninitvar.cpp Fix #11321 FP uninitvar for in-class member initialization (#4547) 2022-10-14 19:48:27 +02:00
testunusedfunctions.cpp various optimizations (#4535) 2022-10-06 20:12:07 +02:00
testunusedprivfunc.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testunusedvar.cpp Fix #11315 FP zerodivcond from enum definition / #11310 FP unassignedVariable with static variable (#4476) 2022-09-17 18:50:07 +02:00
testutils.cpp fixed handling of incomplete char/string literals in `isPrefixStringCharLiteral()` - also optimized it a bit (#4541) 2022-10-09 11:19:19 +02:00
testutils.h enabled and fixed `readability-named-parameter` clang-tidy warnings (#4487) 2022-09-27 20:03:25 +02:00
testvaarg.cpp iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes (#4466) 2022-09-16 07:15:49 +02:00
testvalueflow.cpp Fix #10412 FN useStlAlgorithm with iterators (#4157) 2022-10-16 13:46:26 +02:00
testvarid.cpp #11134 Fix broken AST with (designated) initializers (#4550) 2022-10-19 07:25:15 +02:00