ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
element_type_registry.h File Reference
#include <util/irep/type.h>
#include <array>
#include <cassert>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
Include dependency graph for element_type_registry.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  element_type_registry
 The single owner of per-instance element-type tracking for the Python frontend: "which types does this container instance hold?". More...

Enumerations

enum class  type_slot { elements , dict_value_types , dict_value_list_elems , slot_count }
 Selects which per-instance element-type sequence a registry query addresses. More...

Enumeration Type Documentation

◆ type_slot

enum class type_slot
strong

Selects which per-instance element-type sequence a registry query addresses.

Each slot is a separate namespace: a lookup in one slot can never observe entries recorded in another. The dict slots rely on that isolation — see python_dict_handler for why recording value types where the values-list's own element types live would misread dict storage (github_3719_4).

Enumerator
elements 

The container's own elements: lists, sets, tuples, and a dict's internal keys/values lists.

dict_value_types 

A literal dict's per-value types, keyed by its values-list symbol id.

Lets a subscript read detect a heterogeneous int/float dict.

dict_value_list_elems 

The uniform element type of a literal dict's list-typed values, keyed by its values-list symbol id, so a d[k] list read can type inner elements.

slot_count 

Number of slots. Not a slot itself.