MCPcopy Index your code
hub / github.com/python/mypy / gen_arg_defaults

Function gen_arg_defaults

mypyc/irbuild/builder.py:1610–1650  ·  view source on GitHub ↗

Generate blocks for arguments that have default values. If the passed value is an error value, then assign the default value to the argument.

(builder: IRBuilder)

Source from the content-addressed store, hash-verified

1608
1609
1610def gen_arg_defaults(builder: IRBuilder) -> None:
1611 """Generate blocks for arguments that have default values.
1612
1613 If the passed value is an error value, then assign the default
1614 value to the argument.
1615 """
1616 fitem = builder.fn_info.fitem
1617 nb = 0
1618 for arg in fitem.arguments:
1619 if arg.initializer:
1620 target = builder.lookup(arg.variable)
1621
1622 def get_default() -> Value:
1623 assert arg.initializer is not None
1624
1625 # If it is constant, don't bother storing it
1626 if is_constant(arg.initializer):
1627 return builder.accept(arg.initializer)
1628
1629 # Because gen_arg_defaults runs before calculate_arg_defaults, we
1630 # add the static/attribute to final_names/the class here.
1631 elif not builder.fn_info.is_nested:
1632 name = fitem.fullname + "." + arg.variable.name
1633 builder.final_names.append((name, target.type))
1634 return builder.add(LoadStatic(target.type, name, builder.module_name))
1635 else:
1636 name = arg.variable.name
1637 builder.fn_info.callable_class.ir.attributes[name] = target.type
1638 return builder.add(
1639 GetAttr(builder.fn_info.callable_class.self_reg, name, arg.line)
1640 )
1641
1642 assert isinstance(target, AssignmentTargetRegister), target
1643 reg = target.register
1644 if not reg.type.error_overlap:
1645 builder.assign_if_null(target.register, get_default, arg.initializer.line)
1646 else:
1647 builder.assign_if_bitmap_unset(
1648 target.register, get_default, nb, arg.initializer.line
1649 )
1650 nb += 1
1651
1652
1653def remangle_redefinition_name(name: str) -> str:

Callers 2

gen_func_bodyFunction · 0.90
gen_generator_funcFunction · 0.90

Calls 4

isinstanceFunction · 0.85
assign_if_nullMethod · 0.80
lookupMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…