* Print out the ID of all elements that have children.
* Change it so that instead of appending the dstring of a value node onto the name of the element shown in the IDE, we instead pass the dstring value directly to the pretty-printer framework and let it decide what to do with it. This results in a more consistent look between our irept pretty-printers and a 'normal' pretty printer, and also abstracts away the irep pretty-printer from caring about how things should be shown.
The latter comes with the downside that it is a little harder on the eyes, as it goes '{element name} {type identifier} {string value}', but this is how everything else in the IDE is set up as well.
We used to check that we got exactly "1.8.14", but now we get
"1.8.16 (b4ba8f5fcbedde3632139f5313fe17d3fd75cfad*)", so we just check
that it starts with "1.8.16".
Change r'.*__CPROVER_.*' with r'.*"([^"\\]|\\.)*__CPROVER_([^"\\]|\\.)*".*'
so that only occurrences of __CPROVER_ in strings are caught. Note that
this check will still erroneously complain for the following
"foo" __CPROVER_func() "bar"
An intended use case is to find regression tests that need to be adapted when a
loss of coverage in some files is observed when a new feature is merged.
For example, when improving the constant propagator to propagate more
operations, some existing tests that were intended to test the constraint
encoding of those operations might then be solved via constant propagation.
Thus, the existing tests need to be adapted to use non-constants as inputs.
Make it:
* able to detect when it has already been run
* able to add script to existing file without breaking existing printers
* add new script before existing printers that might clash with it (such as the C++ ones)
* executable
For some test cases it is required access the module internal data structures from the harness.
This script will read the data types from the goto binary and collect the defines from the c_file.
The result is a type header file that can be included to the harness accessing the module local data structures.
Goto-cc will then link the harness with the original c module for verification.
We previously looked at the diff to the current head of the target
branch, which may have moved in comparison to the merge base of a pull
request. Thus we sometimes ended up with spurious clang-format errors,
talking about changes introduced in another PR.
1) We have multiple source files with the same basename, and thus need
to instruct Visual Studio not to put build artefacts into a single
directory.
2) Directory dependencies have changed.
3) Specifically, cbmc now also depends on (parts of) goto-instrument;
yet we must not include goto_instrument_main.cpp in the CBMC build as it
would cause duplicate main functions.
4) Set PlatformToolset in project file to make sure the project can be
used with msbuild.
The example arguments file is named with _example suffix like the existing example method list,
and the branch and develop CSV files are so named and listed in (x, y) order everywhere.
This are taken from the apache tika project. This can be used when the
apache tika package is compiled locally, otherwise this still serves as
an example of the syntax to use to provide a list of methods to the
script.
Use the path storage, which maintains state across different symex
instantiations. While at it, also make the counters std::size_t as using limited
bitwidth is not a meaningful optimisation here.