(self)
| 85 | """Test generation of fragments of C from individual IR ops.""" |
| 86 | |
| 87 | def setUp(self) -> None: |
| 88 | self.registers: list[Register] = [] |
| 89 | |
| 90 | def add_local(name: str, rtype: RType) -> Register: |
| 91 | reg = Register(rtype, name) |
| 92 | self.registers.append(reg) |
| 93 | return reg |
| 94 | |
| 95 | self.n = add_local("n", int_rprimitive) |
| 96 | self.m = add_local("m", int_rprimitive) |
| 97 | self.k = add_local("k", int_rprimitive) |
| 98 | self.l = add_local("l", list_rprimitive) |
| 99 | self.ll = add_local("ll", list_rprimitive) |
| 100 | self.o = add_local("o", object_rprimitive) |
| 101 | self.o2 = add_local("o2", object_rprimitive) |
| 102 | self.d = add_local("d", dict_rprimitive) |
| 103 | self.b = add_local("b", bool_rprimitive) |
| 104 | self.s1 = add_local("s1", short_int_rprimitive) |
| 105 | self.s2 = add_local("s2", short_int_rprimitive) |
| 106 | self.i32 = add_local("i32", int32_rprimitive) |
| 107 | self.i32_1 = add_local("i32_1", int32_rprimitive) |
| 108 | self.i64 = add_local("i64", int64_rprimitive) |
| 109 | self.i64_1 = add_local("i64_1", int64_rprimitive) |
| 110 | self.ptr = add_local("ptr", pointer_rprimitive) |
| 111 | self.t = add_local("t", RTuple([int_rprimitive, bool_rprimitive])) |
| 112 | self.tt = add_local( |
| 113 | "tt", RTuple([RTuple([int_rprimitive, bool_rprimitive]), bool_rprimitive]) |
| 114 | ) |
| 115 | self.vi64 = add_local("vi64", RVec(int64_rprimitive)) |
| 116 | self.vi32 = add_local("vi32", RVec(int32_rprimitive)) |
| 117 | self.vs = add_local("vs", RVec(str_rprimitive)) |
| 118 | self.vs_opt = add_local("vs", RVec(RUnion([str_rprimitive, none_rprimitive]))) |
| 119 | self.vvs = add_local("vvs", RVec(RVec(str_rprimitive))) |
| 120 | ir = ClassIR("A", "mod") |
| 121 | ir.attributes = { |
| 122 | "x": bool_rprimitive, |
| 123 | "y": int_rprimitive, |
| 124 | "i1": int64_rprimitive, |
| 125 | "i2": int32_rprimitive, |
| 126 | "t": RTuple([object_rprimitive, object_rprimitive]), |
| 127 | } |
| 128 | ir.bitmap_attrs = ["i1", "i2"] |
| 129 | compute_vtable(ir) |
| 130 | ir.mro = [ir] |
| 131 | self.r = add_local("r", RInstance(ir)) |
| 132 | self.none = add_local("none", none_rprimitive) |
| 133 | |
| 134 | self.struct_type = RStruct( |
| 135 | "Foo", ["b", "x", "y"], [bool_rprimitive, int32_rprimitive, int64_rprimitive] |
| 136 | ) |
| 137 | self.st = add_local("st", self.struct_type) |
| 138 | |
| 139 | self.context = EmitterContext(NameGenerator([["mod"]]), True) |
| 140 | |
| 141 | def test_goto(self) -> None: |
| 142 | self.assert_emit(Goto(BasicBlock(2)), "goto CPyL2;") |
nothing calls this directly
no test coverage detected