- parser->ast_cleaned = true;
- for (i = 0; i < vec_size(parser->accessors); ++i) {
- ast_delete(parser->accessors[i]->constval.vfunc);
- parser->accessors[i]->constval.vfunc = NULL;
- ast_delete(parser->accessors[i]);
- }
- for (i = 0; i < vec_size(parser->functions); ++i) {
- ast_delete(parser->functions[i]);
- }
- for (i = 0; i < vec_size(parser->fields); ++i) {
- ast_delete(parser->fields[i]);
- }
- for (i = 0; i < vec_size(parser->globals); ++i) {
- ast_delete(parser->globals[i]);
- }
- vec_free(parser->accessors);
- vec_free(parser->functions);
- vec_free(parser->globals);
- vec_free(parser->fields);
-
- for (i = 0; i < vec_size(parser->variables); ++i)
- util_htdel(parser->variables[i]);
- vec_free(parser->variables);
- vec_free(parser->_blocklocals);
- vec_free(parser->_locals);
-
- for (i = 0; i < vec_size(parser->_typedefs); ++i)
- ast_delete(parser->_typedefs[i]);
- vec_free(parser->_typedefs);
- for (i = 0; i < vec_size(parser->typedefs); ++i)
- util_htdel(parser->typedefs[i]);
- vec_free(parser->typedefs);
- vec_free(parser->_blocktypedefs);
-
- vec_free(parser->_block_ctx);
-
- ast_value_delete(parser->nil);
-
- ast_value_delete(parser->const_vec[0]);
- ast_value_delete(parser->const_vec[1]);
- ast_value_delete(parser->const_vec[2]);
-
- if (parser->reserved_version)
- ast_value_delete(parser->reserved_version);
-
- util_htdel(parser->aliases);
- fold_cleanup(parser->fold);
- intrin_cleanup(parser->intrin);
-}
+ ast_cleaned = true;
+ for (auto &it : accessors) {
+ delete it->m_constval.vfunc;
+ it->m_constval.vfunc = nullptr;
+ delete it;
+ }
+ for (auto &it : functions) delete it;
+ for (auto &it : globals) delete it;
+ for (auto &it : fields) delete it;