ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
preprocessor.namedtuple_lowering Namespace Reference

Classes

class  _Lowering

Functions

 _refuse (message, node, module_name)
 _namedtuple_aliases (module)
 _callee_name (func)
 _field_names (spec)
 _valid_fields (fields)
 _defaults (call, fields)
 _definition (stmt, aliases, module_name)
 _names_bound_by (node)
 _bound_identifiers (module)
 _assigned_value (target, parents)
 _returns (node)
 _returned_class (func, classes)
 _constructed_class (site, parents, classes, functions)
 _has_star_import (module)
 _instance_names (module, classes, bound)
 _class_attributes (module)
 _plain_arguments (node)
 _arguments (node, fields, defaults)
 lower_namedtuples (module, module_name)

Detailed Description

Lower `collections.namedtuple` classes to plain tuples (#8487).

`N = namedtuple("N", fields)` at module level is dropped, a call `N(...)`
becomes the tuple of its arguments in field order, and `v.field` becomes
`v[i]` for a name `v` whose every binding in the module is `v = N(...)`.
Any other use of `N`, such as `isinstance(v, N)` or an annotation, is refused.

Function Documentation

◆ _arguments()

preprocessor.namedtuple_lowering._arguments ( node,
fields,
defaults )
protected
The arguments of the call @p node in field order, or None if invalid.

◆ _assigned_value()

preprocessor.namedtuple_lowering._assigned_value ( target,
parents )
protected
The value assigned to @p target when it is the sole target of an assignment.

◆ _bound_identifiers()

preprocessor.namedtuple_lowering._bound_identifiers ( module)
protected
Per identifier, the nodes that bind it anywhere in @p module.

◆ _callee_name()

preprocessor.namedtuple_lowering._callee_name ( func)
protected

◆ _class_attributes()

preprocessor.namedtuple_lowering._class_attributes ( module)
protected
The attribute names some class of @p module may define.

◆ _constructed_class()

preprocessor.namedtuple_lowering._constructed_class ( site,
parents,
classes,
functions )
protected
The class N when @p site is the target of `name = N(...)`, or of a call
to a function that always returns one, else None.

◆ _defaults()

preprocessor.namedtuple_lowering._defaults ( call,
fields )
protected
The constant defaults of the rightmost fields, or None if not supported.

◆ _definition()

preprocessor.namedtuple_lowering._definition ( stmt,
aliases,
module_name )
protected
(name, fields, defaults) when @p stmt defines a namedtuple class.

◆ _field_names()

preprocessor.namedtuple_lowering._field_names ( spec)
protected
The field names a namedtuple field spec lists, or None if not literal.

◆ _has_star_import()

preprocessor.namedtuple_lowering._has_star_import ( module)
protected

◆ _instance_names()

preprocessor.namedtuple_lowering._instance_names ( module,
classes,
bound )
protected
Per name whose every binding is `name = N(...)`, the class N.

◆ _namedtuple_aliases()

preprocessor.namedtuple_lowering._namedtuple_aliases ( module)
protected
The names that call `collections.namedtuple` at module level.

◆ _names_bound_by()

preprocessor.namedtuple_lowering._names_bound_by ( node)
protected
The identifiers @p node binds or declares.

◆ _plain_arguments()

preprocessor.namedtuple_lowering._plain_arguments ( node)
protected

◆ _refuse()

preprocessor.namedtuple_lowering._refuse ( message,
node,
module_name )
protected

◆ _returned_class()

preprocessor.namedtuple_lowering._returned_class ( func,
classes )
protected
The class N when every return of @p func, which cannot fall off its end,
is `return N(...)` (#8969), else None.

◆ _returns()

preprocessor.namedtuple_lowering._returns ( node)
protected
The return statements of the function @p node, outside nested scopes.

◆ _valid_fields()

preprocessor.namedtuple_lowering._valid_fields ( fields)
protected

◆ lower_namedtuples()

preprocessor.namedtuple_lowering.lower_namedtuples ( module,
module_name )
Rewrite in place the namedtuple classes @p module defines at module level.