diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-09-01 23:30:32 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-09-01 23:30:32 -0700 |
commit | 5338a16040fca8720c60c18b78d663a53a8eba20 (patch) | |
tree | 41ce0d7b5fd57b3d036940d41f741619a9a2a0f6 /tests | |
parent | 0f6702adbc7792499fba6d2fb067fb817a603fd6 (diff) | |
download | txr-5338a16040fca8720c60c18b78d663a53a8eba20.tar.gz txr-5338a16040fca8720c60c18b78d663a53a8eba20.tar.bz2 txr-5338a16040fca8720c60c18b78d663a53a8eba20.zip |
oop: add tests for diamond problem.
* tests/012/oop-mi.tl (grand, base1, base2): Add list slot li
to grand, targeted by :init and :fini handlers in all three
structs. Added test case which triggers finalization.
* tests/012/oop-mi.expected: Updated.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/012/oop-mi.expected | 12 | ||||
-rw-r--r-- | tests/012/oop-mi.tl | 13 |
2 files changed, 23 insertions, 2 deletions
diff --git a/tests/012/oop-mi.expected b/tests/012/oop-mi.expected index 6d112c2e..ebc807f3 100644 --- a/tests/012/oop-mi.expected +++ b/tests/012/oop-mi.expected @@ -1,7 +1,7 @@ -#S(der0 gx gx gy dgy x dx y dy z dz) +#S(der0 li (b1 b2 g) gx gx gy dgy x dx y dy z dz) dgs0 gs1-b1 -#S(der1 x b3x gx b3gx gy gy y b2y) +#S(der1 x b3x gx b3gx li (b1 b2 g) gy gy y b2y) gs0 gs1-b1 (meth base3 b3m0) @@ -15,3 +15,11 @@ gm base1 base2 grand +(b1 b2 g) +(gf b2f b1f b1 b2 g) +(b1 b2 g) +(gf b2f b1f b1 b2 g) +(b1 b2 g) +(gf b2f b1f b1 b2 g) +(b2 b1 g) +(gf b1f b2f b2 b1 g) diff --git a/tests/012/oop-mi.tl b/tests/012/oop-mi.tl index 4431f23d..0e54086a 100644 --- a/tests/012/oop-mi.tl +++ b/tests/012/oop-mi.tl @@ -1,8 +1,11 @@ (load "../common") (defstruct grand nil + (li 'nil) (gx 'gx) (gy 'gy) + (:init (me) (push 'g me.li)) + (:fini (me) (push 'gf me.li)) (:static gs0 'gs0) (:static gs1 'gs1) (:method gm (me) 'gm)) @@ -12,11 +15,15 @@ (defstruct base1 grand (x 'b1x) + (:init (me) (push 'b1 me.li)) + (:fini (me) (push 'b1f me.li)) (:static gs1 'gs1-b1) (:method m (me) 'm1)) (defstruct base2 grand (y 'b2y) + (:init (me) (push 'b2 me.li)) + (:fini (me) (push 'b2f me.li)) (:static gs1 'gs1-b2) (:method m (me) 'm2)) @@ -63,3 +70,9 @@ (prinl (static-slot-home 'der2 'm)) (prinl (static-slot-home 'der3 'm)) (prinl (static-slot-home 'der3 'gm)) + +(each ((ty '(der0 der1 der2 der3))) + (let ((ob (new* ty))) + (prinl ob.li) + (call-finalizers ob) + (prinl ob.li))) |