| | 126 | .sub 'mmd_override_not_proxied' |
| | 127 | .local pmc integer_cl, three_cl, three_obj |
| | 128 | |
| | 129 | get_class integer_cl, 'Integer' |
| | 130 | subclass three_cl, integer_cl, 'Three' |
| | 131 | three_cl.'add_attribute'('marker') |
| | 132 | three_cl.'add_attribute'('zero_marker') |
| | 133 | three_cl.'add_attribute'('one_marker') |
| | 134 | three_obj = new 'Three' |
| | 135 | |
| | 136 | # zero_marker/one_marker initialization should go in init vtable method |
| | 137 | # -- todo because seems to seg fault now |
| | 138 | $P0 = new ['Integer'] |
| | 139 | $P0 = 0 |
| | 140 | setattribute three_obj, 'zero_marker', $P0 |
| | 141 | $P0 = new ['Integer'] |
| | 142 | $P0 = 1 |
| | 143 | setattribute three_obj, 'one_marker', $P0 |
| | 144 | |
| | 145 | # not mmd but basic test |
| | 146 | three_obj.'clear_marker'() |
| | 147 | $I0 = three_obj |
| | 148 | three_obj.'verify_marker'('assign to int register calls vtable get_integer override') |
| | 149 | |
| | 150 | .local pmc i |
| | 151 | i = new 'Integer' |
| | 152 | i = 2 |
| | 153 | |
| | 154 | three_obj.'clear_marker'() |
| | 155 | $P0 = sub three_obj, i |
| | 156 | three_obj.'verify_marker'('subtract calls vtable get_integer override') |
| | 157 | |
| | 158 | three_obj.'clear_marker'() |
| | 159 | $I0 = cmp_num three_obj, i |
| | 160 | three_obj.'verify_marker'('cmp_num with calls vtable get_integer override') |
| | 161 | .end |
| | 162 | |
| | 261 | .namespace ['Three'] |
| | 262 | |
| | 263 | .sub '' :vtable('get_integer') :method |
| | 264 | $P0 = getattribute self, 'one_marker' |
| | 265 | setattribute self, 'marker', $P0 |
| | 266 | .return (3) |
| | 267 | .end |
| | 268 | |
| | 269 | .sub clear_marker :method |
| | 270 | $P0 = getattribute self, 'zero_marker' |
| | 271 | setattribute self, 'marker', $P0 |
| | 272 | .end |
| | 273 | |
| | 274 | .sub verify_marker :method |
| | 275 | .param string test_description |
| | 276 | .local pmc get_integer_marker |
| | 277 | |
| | 278 | get_integer_marker = getattribute self, 'marker' |
| | 279 | is(get_integer_marker, 1, test_description) |
| | 280 | .end |
| | 281 | |