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

Function transform_conditional_expr

mypyc/irbuild/expression.py:843–865  ·  view source on GitHub ↗
(builder: IRBuilder, expr: ConditionalExpr)

Source from the content-addressed store, hash-verified

841
842
843def transform_conditional_expr(builder: IRBuilder, expr: ConditionalExpr) -> Value:
844 if_body, else_body, next_block = BasicBlock(), BasicBlock(), BasicBlock()
845
846 process_conditional(builder, expr.cond, if_body, else_body)
847 expr_type = builder.node_type(expr)
848 # Having actual Phi nodes would be really nice here!
849 target = Register(expr_type)
850
851 builder.activate_block(if_body)
852 true_value = builder.accept(expr.if_expr)
853 true_value = builder.coerce(true_value, expr_type, expr.line)
854 builder.add(Assign(target, true_value, expr.line))
855 builder.goto(next_block)
856
857 builder.activate_block(else_body)
858 false_value = builder.accept(expr.else_expr)
859 false_value = builder.coerce(false_value, expr_type, expr.line)
860 builder.add(Assign(target, false_value, expr.line))
861 builder.goto(next_block)
862
863 builder.activate_block(next_block)
864
865 return target
866
867
868def set_literal_values(builder: IRBuilder, items: Sequence[Expression]) -> list[object] | None:

Callers 1

Calls 10

BasicBlockClass · 0.90
process_conditionalFunction · 0.90
RegisterClass · 0.90
AssignClass · 0.90
node_typeMethod · 0.80
activate_blockMethod · 0.45
acceptMethod · 0.45
coerceMethod · 0.45
addMethod · 0.45
gotoMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…