Generate an implicit trivial property setter for an attribute. These are used if an attribute can also be accessed as a property.
(
builder: IRBuilder, func_decl: FuncDecl, cdef: ClassDef, is_trait: bool
)
| 1202 | |
| 1203 | |
| 1204 | def gen_property_setter_ir( |
| 1205 | builder: IRBuilder, func_decl: FuncDecl, cdef: ClassDef, is_trait: bool |
| 1206 | ) -> FuncIR: |
| 1207 | """Generate an implicit trivial property setter for an attribute. |
| 1208 | |
| 1209 | These are used if an attribute can also be accessed as a property. |
| 1210 | """ |
| 1211 | name = func_decl.name |
| 1212 | builder.enter(name) |
| 1213 | self_reg = builder.add_argument("self", func_decl.sig.args[0].type) |
| 1214 | value_reg = builder.add_argument("value", func_decl.sig.args[1].type) |
| 1215 | assert name.startswith(PROPSET_PREFIX) |
| 1216 | attr_name = name[len(PROPSET_PREFIX) :] |
| 1217 | line = func_decl._line or -1 |
| 1218 | if not is_trait: |
| 1219 | builder.add(SetAttr(self_reg, attr_name, value_reg, line)) |
| 1220 | builder.add(Return(builder.none(), line)) |
| 1221 | args, _, blocks, ret_type, fn_info = builder.leave() |
| 1222 | return FuncIR(func_decl, args, blocks, line) |
no test coverage detected
searching dependent graphs…