source: tests/poly-cycle.cfa @ d2b5d2d

ADTarm-ehast-experimentalenumforall-pointer-decayjacob/cs343-translationnew-astnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since d2b5d2d was 3f06c05, checked in by Andrew Beach <ajbeach@…>, 4 years ago

Fixed InstantiateGeneric? so that it can handle cyclic type references (fixes #198). Does produce some extra code now (see (#199).

  • Property mode set to 100644
File size: 473 bytes
Line 
1// Check that a cycle of polymorphic data structures can be instancated.
2
3#include <stdio.h>
4
5forall(otype T)
6struct func_table;
7
8forall(otype U)
9struct object {
10        func_table(U) * virtual_table;
11};
12
13forall(otype T)
14struct func_table {
15        void (*object_func)(object(T) *);
16};
17
18void func(object(int) *) {
19        printf("Success!\n");
20}
21
22func_table(int) an_instance = { func };
23
24int main(int argc, char * argv[]) {
25        object(int) x = { 0p };
26        an_instance.object_func( &x );
27        return 0;
28}
Note: See TracBrowser for help on using the repository browser.