API: Fix assignment operators (#2680)
authorAndres Noetzli <andres.noetzli@gmail.com>
Mon, 5 Nov 2018 17:01:03 +0000 (09:01 -0800)
committerAina Niemetz <aina.niemetz@gmail.com>
Mon, 5 Nov 2018 17:01:03 +0000 (09:01 -0800)
commit52ee910c128e6bbcf7299a0660511deacadb14f1
tree89a05c005d82e660cdd626441740c719536ea9d6
parent4d65e4b5efecc631bfda19900327cd5da2d740f7
API: Fix assignment operators (#2680)

The assignment operators of `Term`, `OpTerm`, and `Sort` currently have
an issue. The operators dereference their `shared_ptr` member and assign
the corresponding member of the other object. This is problematic
because if we have for example two `Term`s pointing to the same `Expr`,
then the assignment changes both `Term`s even though we only assign to
one, which is not what we want (see the unit test in this commit for a
concrete example of the desired behavior). To fix the issue, the
assignment operator should just copy the pointer of the other object.
This happens to be the behavior of the default assignment operator, so
this commit simply removes the overloaded assignment operators.

Testing: I did `make check` with an ASAN build and no errors other than
the one fixed in #2607 were reported.
src/api/cvc4cpp.cpp
src/api/cvc4cpp.h
test/unit/api/CMakeLists.txt
test/unit/api/term_black.h [new file with mode: 0644]