3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-02-16 22:01:44 +00:00

Add [[nodiscard]] to AST factory functions and modernize iterator loops (#8143)

* Initial plan

* Add [[nodiscard]] to AST factory functions and modernize iterator loops

- Added [[nodiscard]] attribute to key factory functions in ast.h:
  - All mk_app() variants for creating application nodes
  - All mk_func_decl() variants for creating function declarations
  - All mk_const() variants for creating constants
  - All mk_sort() variants for creating sorts
  - mk_var() for creating variables
  - mk_quantifier(), mk_forall(), mk_exists(), mk_lambda() for quantifiers
  - mk_label(), mk_pattern() and related functions

- Converted iterator loops to range-based for loops in:
  - src/util/region.cpp: pop_scope()
  - src/util/dec_ref_util.h: dec_ref_key_values(), dec_ref_keys(), dec_ref_values()
  - src/util/mpf.h: dispose()
  - src/util/numeral_buffer.h: reset()

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Modernize additional iterator loops to range-based for loops

- Converted iterator loops to range-based for loops in:
  - src/api/api_ast_map.cpp: Z3_ast_map_keys() and Z3_ast_map_to_string()
  - src/api/c++/z3++.h: optimize copy constructor and add() method
  - src/opt/wmax.cpp: mk_assumptions()

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Revert changes to z3++.h for C++ version compatibility

Revert the range-based for loop changes in src/api/c++/z3++.h to maintain
compatibility with older C++ versions that users may rely on. The C++ API
wrapper must support down-level C++ standards for backward compatibility.

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Trigger CI build

[skip ci] is not used to ensure CI runs

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
This commit is contained in:
Copilot 2026-01-11 09:58:25 -08:00 committed by GitHub
parent d29fc3eef3
commit 6c90b7ec3f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 89 additions and 104 deletions

View file

@ -25,11 +25,9 @@ Notes:
*/
template<typename Mng, typename Map>
void dec_ref_key_values(Mng & m, Map & map) {
typename Map::iterator it = map.begin();
typename Map::iterator end = map.end();
for (; it != end; ++it) {
m.dec_ref(it->m_key);
m.dec_ref(it->m_value);
for (auto& kv : map) {
m.dec_ref(kv.m_key);
m.dec_ref(kv.m_value);
}
map.reset();
}
@ -40,10 +38,8 @@ void dec_ref_key_values(Mng & m, Map & map) {
*/
template<typename Mng, typename Map>
void dec_ref_keys(Mng & m, Map & map) {
typename Map::iterator it = map.begin();
typename Map::iterator end = map.end();
for (; it != end; ++it) {
m.dec_ref(it->m_key);
for (auto& kv : map) {
m.dec_ref(kv.m_key);
}
map.reset();
}
@ -55,10 +51,8 @@ void dec_ref_keys(Mng & m, Map & map) {
*/
template<typename Mng, typename Map>
void dec_ref_values(Mng & m, Map & map) {
typename Map::iterator it = map.begin();
typename Map::iterator end = map.end();
for (; it != end; ++it) {
m.dec_ref(it->m_value);
for (auto& kv : map) {
m.dec_ref(kv.m_value);
}
map.reset();
}