Generate an implicit trivial property getter 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
)
| 1182 | |
| 1183 | |
| 1184 | def gen_property_getter_ir( |
| 1185 | builder: IRBuilder, func_decl: FuncDecl, cdef: ClassDef, is_trait: bool |
| 1186 | ) -> FuncIR: |
| 1187 | """Generate an implicit trivial property getter for an attribute. |
| 1188 | |
| 1189 | These are used if an attribute can also be accessed as a property. |
| 1190 | """ |
| 1191 | name = func_decl.name |
| 1192 | builder.enter(name) |
| 1193 | self_reg = builder.add_argument("self", func_decl.sig.args[0].type) |
| 1194 | line = func_decl._line or -1 |
| 1195 | if not is_trait: |
| 1196 | value = builder.builder.get_attr(self_reg, name, func_decl.sig.ret_type, line) |
| 1197 | builder.add(Return(value, line)) |
| 1198 | else: |
| 1199 | builder.add(Unreachable()) |
| 1200 | args, _, blocks, ret_type, fn_info = builder.leave() |
| 1201 | return FuncIR(func_decl, args, blocks) |
| 1202 | |
| 1203 | |
| 1204 | def gen_property_setter_ir( |
no test coverage detected
searching dependent graphs…