| | 90 | .sub 'mmd_override_not_proxied' |
| | 91 | .local pmc integer_cl, three_cl, three_obj |
| | 92 | |
| | 93 | get_class integer_cl, 'Integer' |
| | 94 | subclass three_cl, integer_cl, 'Three' |
| | 95 | three_cl.'add_attribute'('marker') |
| | 96 | three_cl.'add_attribute'('zero_marker') |
| | 97 | three_cl.'add_attribute'('one_marker') |
| | 98 | three_obj = new 'Three' |
| | 99 | |
| | 100 | # zero_marker/one_marker initialization should go in init vtable method |
| | 101 | # -- todo because seems to seg fault now |
| | 102 | $P0 = new ['Integer'] |
| | 103 | $P0 = 0 |
| | 104 | setattribute three_obj, 'zero_marker', $P0 |
| | 105 | $P0 = new ['Integer'] |
| | 106 | $P0 = 1 |
| | 107 | setattribute three_obj, 'one_marker', $P0 |
| | 108 | |
| | 109 | # not mmd but basic test |
| | 110 | three_obj.'clear_marker'() |
| | 111 | $I0 = three_obj |
| | 112 | three_obj.'verify_marker'('assign to int register calls vtable get_integer override') |
| | 113 | |
| | 114 | .local pmc i |
| | 115 | i = new 'Integer' |
| | 116 | i = 2 |
| | 117 | |
| | 118 | three_obj.'clear_marker'() |
| | 119 | $P0 = sub three_obj, i |
| | 120 | three_obj.'verify_marker'('subtract calls vtable get_integer override') |
| | 121 | |
| | 122 | three_obj.'clear_marker'() |
| | 123 | $I0 = cmp_num three_obj, i |
| | 124 | three_obj.'verify_marker'('cmp_num with calls vtable get_integer override') |
| | 125 | .end |
| | 126 | |
| | 210 | .namespace ['Three'] |
| | 211 | |
| | 212 | .sub '' :vtable('get_integer') :method |
| | 213 | $P0 = getattribute self, 'one_marker' |
| | 214 | setattribute self, 'marker', $P0 |
| | 215 | .return (3) |
| | 216 | .end |
| | 217 | |
| | 218 | .sub clear_marker :method |
| | 219 | $P0 = getattribute self, 'zero_marker' |
| | 220 | setattribute self, 'marker', $P0 |
| | 221 | .end |
| | 222 | |
| | 223 | .sub verify_marker :method |
| | 224 | .param string test_description |
| | 225 | .local pmc get_integer_marker |
| | 226 | |
| | 227 | get_integer_marker = getattribute self, 'marker' |
| | 228 | is(get_integer_marker, 1, test_description) |
| | 229 | .end |
| | 230 | |