1 #!/usr/local/bin/rune -x
3 # Demonstrate reference types
8 alias stdio.File *stdout = stdio.stdout;
14 int addme(Fubar @this) {
15 stdio.stdout->show("addme-Fubar:", this->a, this->b, this->c);
16 return(this->a + this->b + this->c);
19 return(this.a + this.b + this.c);
21 destructor method void killme() {
22 stdio.stdout->show("DESTRUCTED");
26 subclass Fubar as SubFubar {
28 refine int addme(Fubar @this) {
29 return(this->a + this->b + this->c + 1);
31 refine method int addme2() {
32 return(this.a + this.b + this.c + 1);
36 subclass Fubar as FuA5 {
40 subclass Fubar as FuA6 {
52 stdout->show("value-std", base->addme(base));
53 stdout->show("value-method", base->addme2());
56 # switch main and altmain to test simple referencing, else we do the
60 altmain(int ac, char **av)
71 main(int ac, char **av)
84 stdout->show("s1 direct-value-std (should be 6):", s1->addme(s1));
85 stdout->show("s1 direct-value-method (should be 6):", s1->addme2());
86 stdout->show("s2 direct-value-std (should be 5):", s2->addme(s2));
87 stdout->show("s2 direct-value-method (should be 5):", s2->addme2());
89 # XXX addList calls will crash on s1->addme (unimplemented method
90 # extraction for now, remove this comment when this is implemented)
96 stdout->show("fua5 (should be 5):", fu->a);
98 stdout->show("fua6 (should be 6):", fu->a);
100 stdout->show("fua5 (should be 5):", fu->a);